WEBVTT - Automatic transcript; recognition may contain errors. Reviewed for technical wording and speaker labels. Times match the published episode.

00:00:21.070 --> 00:00:23.290
<v Aaron van Wirdum>Live from Utrecht, this is Bitcoin

00:00:23.290 --> 00:00:24.830
<v Sjors Provoost>Explained.

00:00:25.150 --> 00:00:25.750
<v Aaron van Wirdum>Hey, Sjors.

00:00:26.010 --> 00:00:26.590
<v Sjors Provoost>What's up?

00:00:27.220 --> 00:00:31.160
<v Aaron van Wirdum>I have an amazing gift for our listeners today.

00:00:31.600 --> 00:00:32.040
<v Sjors Provoost>Okay.

00:00:32.420 --> 00:00:37.280
<v Aaron van Wirdum>As you know, the Bitcoin Amsterdam conference is coming up. It's in October.

00:00:37.700 --> 00:00:38.060
<v Sjors Provoost>Yes.

00:00:38.160 --> 00:00:44.490
<v Aaron van Wirdum>And I can offer our dear listeners a discount code for 10% off of their tickets.

00:00:45.010 --> 00:00:46.370
<v Sjors Provoost>That sounds amazing.

00:00:46.530 --> 00:00:50.780
<v Aaron van Wirdum>Isn't that great? The discount code is Sjorsnado.

00:00:52.600 --> 00:00:56.720
<v Aaron van Wirdum>I wanted to make sure we had a discount code that no one can pronounce or remember.

00:00:56.960 --> 00:01:00.340
<v Sjors Provoost>Or spell correctly unless they know what they're talking about. No, it's excellent.

00:01:00.600 --> 00:01:06.170
<v Aaron van Wirdum>Exactly. So now it's only for our one... I hope there... Let's see if there's

00:01:06.170 --> 00:01:11.530
<v Aaron van Wirdum>even one person that will use the code. Like that will be our hardcore fan if

00:01:11.530 --> 00:01:15.190
<v Aaron van Wirdum>there's one person that will use this code. I'm not sure if we can see if anyone

00:01:15.190 --> 00:01:20.810
<v Aaron van Wirdum>uses the code. I think so. I hope there will be one person. And then if we meet

00:01:20.810 --> 00:01:23.730
<v Aaron van Wirdum>you at the conference, we'll take a picture with you. Right, Sjors?

00:01:24.330 --> 00:01:25.230
<v Sjors Provoost>Maybe, maybe not.

00:01:26.190 --> 00:01:31.380
<v Aaron van Wirdum>Well... We've just promised it, so we can't really go back on it now. I've said

00:01:31.380 --> 00:01:36.740
<v Aaron van Wirdum>it out loud. Sjors and I will take a picture with you at Bitcoin Amsterdam if you

00:01:36.740 --> 00:01:39.380
<v Aaron van Wirdum>use the code Sjorsnado.

00:01:40.950 --> 00:01:41.710
<v Sjors Provoost>All right.

00:01:41.910 --> 00:01:44.890
<v Aaron van Wirdum>Sjors, what are we going to discuss today? We're going to discuss very sad news,

00:01:45.030 --> 00:01:45.590
<v Aaron van Wirdum>actually, aren't we?

00:01:46.550 --> 00:01:47.530
<v Sjors Provoost>I don't know if it's sad.

00:01:49.030 --> 00:01:50.210
<v Aaron van Wirdum>It's not happy news.

00:01:50.410 --> 00:01:52.370
<v Sjors Provoost>No, but it was somewhat predictable news.

00:01:52.510 --> 00:01:57.910
<v Aaron van Wirdum>Yeah. Okay, so Wladimir van der Laan, the lead developer, lead maintainer of

00:01:57.910 --> 00:02:01.590
<v Aaron van Wirdum>Bitcoin Core, he's going to quit, or he did quit.

00:02:02.070 --> 00:02:03.070
<v Sjors Provoost>Yeah, he's retiring.

00:02:03.350 --> 00:02:08.670
<v Aaron van Wirdum>He's retiring. He's done it since 2014. So that, is that right? Yeah.

00:02:08.810 --> 00:02:09.670
<v Sjors Provoost>No, I think much longer.

00:02:09.770 --> 00:02:12.770
<v Aaron van Wirdum>I think like officially, Gavin Andresen...

00:02:12.940 --> 00:02:16.640
<v Sjors Provoost>As a maintainer, yeah. He's been in the project for almost 10 years.

00:02:16.800 --> 00:02:19.020
<v Aaron van Wirdum>Probably at least 10 years, right?

00:02:19.400 --> 00:02:19.500
<v Sjors Provoost>Yeah.

00:02:19.640 --> 00:02:23.540
<v Aaron van Wirdum>But yeah, lead maintainer for, I guess, about eight, over eight years now. I

00:02:23.540 --> 00:02:27.600
<v Aaron van Wirdum>think it was like March 2014 or something from top of my head.

00:02:27.960 --> 00:02:28.540
<v Sjors Provoost>Could be.

00:02:28.680 --> 00:02:34.490
<v Aaron van Wirdum>And he's stepping down. So we thought this was a good opportunity to

00:02:34.490 --> 00:02:40.130
<v Aaron van Wirdum>maybe discuss... I guess, what a lead maintainer for Bitcoin Core

00:02:40.130 --> 00:02:46.030
<v Aaron van Wirdum>does, what he is, and a little bit more broadly, the Bitcoin Core

00:02:46.030 --> 00:02:48.410
<v Aaron van Wirdum>development process itself.

00:02:48.950 --> 00:02:49.670
<v Sjors Provoost>Yes.

00:02:49.870 --> 00:02:55.830
<v Aaron van Wirdum>So how is the Bitcoin Core software actually produced or who

00:02:55.830 --> 00:03:00.610
<v Aaron van Wirdum>does this? It's not about individuals, but the different roles that are involved

00:03:00.610 --> 00:03:06.730
<v Aaron van Wirdum>in that process. So, sure. First of all, What is Bitcoin Core?

00:03:07.390 --> 00:03:12.310
<v Sjors Provoost>Well, Bitcoin Core is many things to many people. I mean, primarily it's the name

00:03:12.310 --> 00:03:17.190
<v Sjors Provoost>of a piece of software. The piece of software just used to be called Bitcoin and

00:03:17.190 --> 00:03:21.370
<v Sjors Provoost>then it was rebranded to Bitcoin Core. And I guess the brand stuck around. It's

00:03:21.370 --> 00:03:25.750
<v Sjors Provoost>basically the node that validates all the blocks. And you can also use it with a

00:03:25.750 --> 00:03:28.570
<v Sjors Provoost>wallet. And it's got a nice user interface. And it used to be able to mine

00:03:28.570 --> 00:03:33.390
<v Sjors Provoost>blocks, all that sort of cool stuff. Bitcoin Core is also the name of a

00:03:33.390 --> 00:03:39.210
<v Sjors Provoost>unspecified group of people that contribute code. To the Bitcoin Core software.

00:03:39.430 --> 00:03:42.150
<v Sjors Provoost>Basically, anybody who does that is called a Bitcoin Core contributor.

00:03:42.830 --> 00:03:46.670
<v Sjors Provoost>Apparently, and I believe this concept was invented by Peter Todd, you can also

00:03:46.670 --> 00:03:51.470
<v Sjors Provoost>be a former Bitcoin Core contributor. So apparently, even though your commits

00:03:51.470 --> 00:03:57.180
<v Sjors Provoost>will always be in there, at some point, you're not presently a

00:03:57.180 --> 00:04:02.680
<v Sjors Provoost>contributor. I don't think there's a very tight definition of that. And then, in

00:04:02.680 --> 00:04:06.840
<v Sjors Provoost>addition to contributing, you can maintain... you can be a maintainer and I guess

00:04:06.840 --> 00:04:09.600
<v Sjors Provoost>we'll have to explain a bit what that is and then there's such a thing as a lead

00:04:09.600 --> 00:04:10.180
<v Sjors Provoost>maintainer

00:04:10.180 --> 00:04:16.180
<v Aaron van Wirdum>Yeah I want to I first I want to get a little bit more philosophical here if

00:04:16.180 --> 00:04:20.720
<v Aaron van Wirdum>you'll allow me. Sure. So you just said Bitcoin Core is a piece of software, for

00:04:20.720 --> 00:04:25.580
<v Aaron van Wirdum>example, that's one of the definitions you gave in short. So but but then, like

00:04:25.580 --> 00:04:30.860
<v Aaron van Wirdum>if you— which piece of software is Bitcoin Core? How do you— how like—

00:04:31.850 --> 00:04:36.770
<v Aaron van Wirdum>How is it defined? Is there a way to define which software actually is Bitcoin Core?

00:04:37.180 --> 00:04:41.660
<v Sjors Provoost>Well I would say that once that becomes difficult there'll be probably be two

00:04:41.660 --> 00:04:45.740
<v Sjors Provoost>names for two different things that's the easy way out right right because right

00:04:45.740 --> 00:04:49.420
<v Sjors Provoost>now it's just you go to Bitcoin Core.org and the thing you see there is called

00:04:49.420 --> 00:04:53.720
<v Sjors Provoost>Bitcoin Core and there's there's no controversy around that if you know unless

00:04:53.720 --> 00:04:55.180
<v Sjors Provoost>you talk to some really crazy people.

00:04:55.180 --> 00:05:00.080
<v Aaron van Wirdum>I mean there was some controversy about it like a year ago if you remember around

00:05:00.080 --> 00:05:05.380
<v Aaron van Wirdum>the Taproot activation discussion at some point Luke Dashjr

00:05:05.940 --> 00:05:09.320
<v Aaron van Wirdum>was arguing that Bitcoin Core was no longer Bitcoin Core.

00:05:09.680 --> 00:05:13.800
<v Sjors Provoost>Okay, yeah, I guess in the eyes of some people that such a controversy can happen

00:05:13.800 --> 00:05:18.820
<v Sjors Provoost>earlier, right? But I think in this case it was mostly his opinion. But you could

00:05:18.820 --> 00:05:23.340
<v Sjors Provoost>have a situation where the people currently described as Bitcoin Core or some

00:05:23.340 --> 00:05:28.580
<v Sjors Provoost>subset of it make changes that are considered controversial by other people,

00:05:28.840 --> 00:05:32.860
<v Sjors Provoost>perhaps even also people who are part of Bitcoin Core. And so at that point, you

00:05:32.860 --> 00:05:36.680
<v Sjors Provoost>might have a split in opinion where one group says, no, this is Bitcoin Core. And

00:05:36.680 --> 00:05:40.520
<v Sjors Provoost>the other group says, this is Bitcoin Core. And there's nobody formally entitled

00:05:40.520 --> 00:05:45.160
<v Sjors Provoost>to anything there. So then I guess you will have to start arguing about names and

00:05:45.160 --> 00:05:46.140
<v Sjors Provoost>what's the real Bitcoin.

00:05:46.400 --> 00:05:48.360
<v Aaron van Wirdum>Yeah, you get similar discussions.

00:05:48.980 --> 00:05:51.400
<v Sjors Provoost>And it depends on the kind of change, right? So there could be two kinds of

00:05:51.400 --> 00:05:55.260
<v Sjors Provoost>changes. One is a consensus change. And that's definitely what the situation with

00:05:55.260 --> 00:05:59.630
<v Sjors Provoost>Luke Dashjr was about. So what are the actual rules of the Bitcoin blockchain? If

00:05:59.630 --> 00:06:02.810
<v Sjors Provoost>you have a dispute about that, you get problems with ticker symbols and that sort

00:06:02.810 --> 00:06:07.550
<v Sjors Provoost>of stuff. But you could also have a more benign conflict, for example, where some

00:06:07.550 --> 00:06:11.190
<v Sjors Provoost>people say, well, Bitcoin Core should have a graphical client and it should be

00:06:11.190 --> 00:06:15.150
<v Sjors Provoost>easy to use. And others would say, no, it should absolutely not be. And maybe

00:06:15.150 --> 00:06:19.550
<v Sjors Provoost>that causes some sort of split where you have two pieces of software that follow

00:06:19.550 --> 00:06:23.980
<v Sjors Provoost>the exact same rules, but they are really two different pieces of software. And

00:06:23.980 --> 00:06:26.820
<v Sjors Provoost>maybe people fight over the name. I doubt it, but it could happen.

00:06:27.060 --> 00:06:31.620
<v Aaron van Wirdum>Well, I'd say the example that I gave with Luke Dashjr was somewhere in between

00:06:31.620 --> 00:06:32.180
<v Aaron van Wirdum>these two.

00:06:35.030 --> 00:06:38.250
<v Aaron van Wirdum>I don't want to dwell on this, but at the same time, I do think it's kind of

00:06:38.250 --> 00:06:40.270
<v Aaron van Wirdum>relevant for the episode and I'll explain why.

00:06:41.970 --> 00:06:47.070
<v Aaron van Wirdum>So I never really gave it too much thought or I never really

00:06:47.070 --> 00:06:52.950
<v Aaron van Wirdum>thought that it could ever become a problem. But if you would have asked me what

00:06:52.950 --> 00:06:58.950
<v Aaron van Wirdum>Bitcoin Core is, then my answer would have been Bitcoin Core is whatever the

00:06:58.950 --> 00:07:02.550
<v Aaron van Wirdum>lead maintainer of Bitcoin Core says is Bitcoin Core.

00:07:02.770 --> 00:07:07.610
<v Sjors Provoost>Well, that won't work because if the lead maintainer says something crazy, then,

00:07:07.610 --> 00:07:11.850
<v Sjors Provoost>you know. Then you could simply say, well, he's not the lead maintainer. And

00:07:11.850 --> 00:07:15.070
<v Sjors Provoost>therefore, whatever the new lead maintainer says is Bitcoin Core. But then you

00:07:15.070 --> 00:07:16.770
<v Sjors Provoost>might as well just directly say what it is.

00:07:17.900 --> 00:07:23.140
<v Aaron van Wirdum>No so in my definition that would still be Bitcoin Core it's just that users

00:07:23.140 --> 00:07:27.620
<v Aaron van Wirdum>would then have to adopt a new software they would have to migrate to a new

00:07:27.620 --> 00:07:32.740
<v Aaron van Wirdum>software but the lead maintainer does sort of define in my personal definition

00:07:32.740 --> 00:07:37.940
<v Aaron van Wirdum>the way I was always thinking about it like that is who defines it and then who

00:07:37.940 --> 00:07:41.420
<v Aaron van Wirdum>is the lead maintainer of Bitcoin Core you know before because it could get

00:07:41.420 --> 00:07:46.600
<v Aaron van Wirdum>circular that is either whoever founded the project or whoever

00:07:47.230 --> 00:07:51.950
<v Aaron van Wirdum>inherited the project from either the founder or their previous lead maintainer

00:07:51.950 --> 00:07:54.910
<v Aaron van Wirdum>does that make sense? So that's how I used to think about it.

00:07:54.910 --> 00:07:58.330
<v Sjors Provoost>I guess it could make sense. I don't think that's— that's useful at the moment

00:07:58.330 --> 00:08:02.070
<v Sjors Provoost>anyway right because in the beginning yes it was very clear that the founder was

00:08:02.070 --> 00:08:06.690
<v Sjors Provoost>the lead maintainer but very quickly whether I mean Gavin I guess was the second

00:08:06.690 --> 00:08:12.650
<v Sjors Provoost>lead maintainer before Wladimir but I and I think Gavin got it inherited in

00:08:12.650 --> 00:08:16.130
<v Sjors Provoost>a way right I don't know if Wladimir got it inherited or…

00:08:16.130 --> 00:08:21.310
<v Aaron van Wirdum>Well that one for sure like Wladimir definitely inherited it from Gavin that was

00:08:21.310 --> 00:08:27.010
<v Aaron van Wirdum>very explicit the less explicit one was arguably Gavin from Satoshi that one is a

00:08:27.010 --> 00:08:30.450
<v Aaron van Wirdum>little bit more murky I think it's…

00:08:30.450 --> 00:08:34.030
<v Sjors Provoost>But right now it's just like Wladimir says okay I'm no longer the lead maintainer

00:08:34.030 --> 00:08:39.000
<v Sjors Provoost>now there is no lead maintainer. And the next one is decided not necessarily by

00:08:39.000 --> 00:08:42.500
<v Sjors Provoost>Wladimir. It could be somebody, you know, multiple people might say, oh, I would

00:08:42.500 --> 00:08:46.480
<v Sjors Provoost>like the role. And then I guess a group of developers would sort of talk about

00:08:46.480 --> 00:08:51.280
<v Sjors Provoost>it. My guess is that there will be zero or one volunteer for this role. And so

00:08:51.280 --> 00:08:54.760
<v Sjors Provoost>there's not a problem of deciding who it is, but I wouldn't call it inheritance.

00:08:54.940 --> 00:08:59.140
<v Sjors Provoost>I don't think. I mean maybe Wladimir's you know if he if he has a strong

00:08:59.140 --> 00:09:03.680
<v Sjors Provoost>preference between two super equal candidates I could imagine people would say

00:09:03.680 --> 00:09:06.700
<v Sjors Provoost>okay whatever his preference is but in the end…

00:09:06.700 --> 00:09:11.120
<v Aaron van Wirdum>Okay that that's interesting. I was gonna get on this point in the at the end of

00:09:11.120 --> 00:09:15.740
<v Aaron van Wirdum>the episode but now that you mentioned it let's just finish this thought so what

00:09:15.740 --> 00:09:20.720
<v Aaron van Wirdum>you're saying you you expected the next lead maintainer would not actually be

00:09:20.720 --> 00:09:25.810
<v Aaron van Wirdum>someone that Wladimir will explicitly say okay you're— no and you're my successor

00:09:25.810 --> 00:09:29.270
<v Aaron van Wirdum>it will just sort of… How so who's going to decide or how does that…

00:09:29.270 --> 00:09:32.210
<v Sjors Provoost>The thing is Wladimir has said for years that you know he would like somebody

00:09:32.210 --> 00:09:36.050
<v Sjors Provoost>else to start doing this at some point and he said like if people don't do this

00:09:36.050 --> 00:09:39.930
<v Sjors Provoost>voluntarily I'm just going to do this python situation where their lead

00:09:39.930 --> 00:09:44.330
<v Sjors Provoost>maintainer just leaves very suddenly and the thing is with with these kind of

00:09:44.330 --> 00:09:49.400
<v Sjors Provoost>projects like it's not the nicest and most thankful work so It's not like people

00:09:49.400 --> 00:09:52.720
<v Sjors Provoost>are fighting to become the next lead maintainer of Bitcoin Core. Nobody wants to

00:09:52.720 --> 00:09:54.740
<v Sjors Provoost>be the next lead maintainer, including Wladimir.

00:09:55.040 --> 00:09:55.200
<v Aaron van Wirdum>Sure.

00:09:55.320 --> 00:09:58.940
<v Sjors Provoost>At some point, if Wladimir says, I'm not doing this anymore, somebody else will

00:09:58.940 --> 00:10:03.160
<v Sjors Provoost>eventually start doing it. But it's more like that. It's like, somebody please be

00:10:03.160 --> 00:10:03.980
<v Sjors Provoost>the lead maintainer.

00:10:04.520 --> 00:10:05.000
<v Aaron van Wirdum>Okay.

00:10:05.280 --> 00:10:06.920
<v Sjors Provoost>It's not like president of the US.

00:10:07.480 --> 00:10:12.260
<v Aaron van Wirdum>Someone will start doing it. And what it is, so that's sort of what we'll get

00:10:12.260 --> 00:10:16.870
<v Aaron van Wirdum>into in the... the rest of the episode, but now we're really skipping it. So now

00:10:16.870 --> 00:10:18.270
<v Aaron van Wirdum>I want to take a step back, I guess.

00:10:18.290 --> 00:10:22.410
<v Sjors Provoost>Because it is multiple things. So what I'm basically, well, we'll get into what

00:10:22.410 --> 00:10:26.610
<v Sjors Provoost>these things are, right? But what I'll guess is what happens is there's certain

00:10:26.610 --> 00:10:30.590
<v Sjors Provoost>tasks that Wladimir used to do and he's not doing them anymore, or at least that

00:10:30.590 --> 00:10:35.850
<v Sjors Provoost>might be the case. Somebody else will do one or more of those tasks. And perhaps

00:10:35.850 --> 00:10:39.450
<v Sjors Provoost>whoever is doing most of those tasks because nobody else is doing it, then

00:10:39.450 --> 00:10:42.330
<v Sjors Provoost>suddenly gets crowned. You are the lead maintainer now. Have fun.

00:10:43.030 --> 00:10:48.930
<v Aaron van Wirdum>Okay, so at this point, we should get back in order of the episode. So yeah,

00:10:48.990 --> 00:10:53.470
<v Aaron van Wirdum>the controversy at some point was, so my kind of loose definition of Bitcoin Core

00:10:53.470 --> 00:10:57.610
<v Aaron van Wirdum>was always whatever the Bitcoin Core lead maintainer says is Bitcoin Core. And

00:10:57.610 --> 00:11:03.530
<v Aaron van Wirdum>then what Luke Dashjr was kind of contending or arguing instead was

00:11:03.530 --> 00:11:09.190
<v Aaron van Wirdum>that in his mind, Bitcoin Core is defined as a process. So there's a specific

00:11:09.190 --> 00:11:14.310
<v Aaron van Wirdum>process. And if that process is being followed, then that is Bitcoin Core. That

00:11:14.310 --> 00:11:19.610
<v Aaron van Wirdum>process has something to do with consensus. And if that process is broken, then

00:11:19.610 --> 00:11:25.090
<v Aaron van Wirdum>whatever comes out of that process cannot be called Bitcoin Core. So he had a

00:11:25.090 --> 00:11:30.270
<v Aaron van Wirdum>different way of defining Bitcoin Core, which is not something I've

00:11:30.270 --> 00:11:35.350
<v Aaron van Wirdum>since then given much thought or have an opinion on. But I did think it was

00:11:35.350 --> 00:11:39.010
<v Aaron van Wirdum>interesting that you can have different opinions or definitions of Bitcoin Core.

00:11:39.270 --> 00:11:44.930
<v Aaron van Wirdum>So I just wanted to throw that out there. Now we've just

00:11:44.930 --> 00:11:49.190
<v Aaron van Wirdum>kind of defined Bitcoin Core or we haven't or we've explained that there are

00:11:49.190 --> 00:11:54.230
<v Aaron van Wirdum>different ways of looking at it so let's leave that aside next question

00:11:55.060 --> 00:12:00.940
<v Aaron van Wirdum>or next point is so what are the roles within the Bitcoin Core

00:12:00.940 --> 00:12:05.300
<v Aaron van Wirdum>project that there is a Bitcoin Core project let's just assume that and then there's

00:12:06.510 --> 00:12:11.130
<v Aaron van Wirdum>roles within that project. And I think you've already mentioned one or two of them.

00:12:11.290 --> 00:12:14.230
<v Sjors Provoost>Yeah, I went into what contributors are, right? So people who contribute code, I

00:12:14.230 --> 00:12:17.510
<v Sjors Provoost>guess, you know, there's also people who contribute review and that sort of thing

00:12:17.510 --> 00:12:18.530
<v Sjors Provoost>or issues, et cetera.

00:12:19.390 --> 00:12:25.270
<v Aaron van Wirdum>Right and there's this is something anyone can do anyone can decide

00:12:25.270 --> 00:12:30.570
<v Aaron van Wirdum>today or tomorrow or last year or next year, I'm gonna contribute to Bitcoin Core

00:12:30.570 --> 00:12:36.150
<v Aaron van Wirdum>in some way or another can be code can be review can be maybe translations

00:12:36.150 --> 00:12:37.670
<v Aaron van Wirdum>of text, or…

00:12:37.670 --> 00:12:42.030
<v Sjors Provoost>Yeah and there's in principle there's like no barrier to entry to that right so

00:12:42.030 --> 00:12:46.410
<v Sjors Provoost>you just show up with your piece of code or with your comment and unless it's

00:12:46.410 --> 00:12:49.340
<v Sjors Provoost>like absolute spam you know, you'll be fine.

00:12:49.920 --> 00:12:50.060
<v Aaron van Wirdum>Yeah.

00:12:50.620 --> 00:12:53.060
<v Sjors Provoost>Maybe nothing happens with your code, but you know, it's not…

00:12:53.680 --> 00:12:58.880
<v Aaron van Wirdum>Yeah. Nor does anything happen with you. You can start calling…

00:12:58.780 --> 00:13:01.520
<v Sjors Provoost>Yeah. But then the next role would be a maintainer.

00:13:01.680 --> 00:13:02.000
<v Aaron van Wirdum>Right.

00:13:02.180 --> 00:13:06.240
<v Sjors Provoost>And that one has a, I would say a higher barrier to entry. I don't think there's

00:13:06.240 --> 00:13:09.320
<v Sjors Provoost>a really a formal process for it, but what the maintainer does is they

00:13:09.320 --> 00:13:13.480
<v Sjors Provoost>essentially click the merge button. So at this point, I think we need to explain

00:13:13.480 --> 00:13:14.740
<v Sjors Provoost>a little bit of GitHub workflow.

00:13:15.000 --> 00:13:15.780
<v Aaron van Wirdum>I think so. Yeah.

00:13:15.960 --> 00:13:20.000
<v Sjors Provoost>Right. So there's this thing called GitHub, which is a place where people keep

00:13:20.000 --> 00:13:24.280
<v Sjors Provoost>Git repositories. Git itself is a decentralized system that has existed for a

00:13:24.280 --> 00:13:29.560
<v Sjors Provoost>long time or distributed system, depending on your look. And so on GitHub, you

00:13:29.560 --> 00:13:33.900
<v Sjors Provoost>can, you know, there's an organization on GitHub. I would say it's not really an

00:13:33.900 --> 00:13:38.510
<v Sjors Provoost>organization, but it's called Bitcoin. And this organization owns a repository.

00:13:38.710 --> 00:13:42.320
<v Sjors Provoost>So a repository is a piece of code. And that piece of code is also called

00:13:42.320 --> 00:13:46.860
<v Sjors Provoost>Bitcoin. So that's why the URL is GitHub.com slash Bitcoin, the organization

00:13:46.860 --> 00:13:50.660
<v Sjors Provoost>slash Bitcoin, the project, the source code.

00:13:51.240 --> 00:13:51.360
<v Aaron van Wirdum>Right.

00:13:51.440 --> 00:13:55.180
<v Sjors Provoost>We'll get into what that Bitcoin organization is in a bit. But to explain the

00:13:55.180 --> 00:14:00.280
<v Sjors Provoost>workflow, when you want to propose a change to Bitcoin, you make a pull request.

00:14:00.460 --> 00:14:06.300
<v Sjors Provoost>And what that does is you take the code, the original code, and you clone

00:14:06.300 --> 00:14:10.620
<v Sjors Provoost>it on your own computer. And then you change something. And you push that change

00:14:10.620 --> 00:14:15.920
<v Sjors Provoost>to GitHub. So now GitHub has the original code plus your changes. And then you do

00:14:15.920 --> 00:14:19.300
<v Sjors Provoost>something that's called a pull request, which basically sends a message, I guess,

00:14:19.420 --> 00:14:25.300
<v Sjors Provoost>to the repository that shows the difference between your stuff and the

00:14:25.300 --> 00:14:30.880
<v Sjors Provoost>original code. And then you can explain why you're doing it. And so other people

00:14:30.880 --> 00:14:34.940
<v Sjors Provoost>will see, okay, they'll see this person wants to propose the following changes

00:14:34.940 --> 00:14:37.880
<v Sjors Provoost>and this is their reasoning why. And then people will start looking at it.

00:14:37.980 --> 00:14:41.900
<v Sjors Provoost>They'll review the differences. And if enough people agree with it, then somebody

00:14:41.900 --> 00:14:47.420
<v Sjors Provoost>has to click a button, essentially, that now includes your changes into this

00:14:47.420 --> 00:14:51.740
<v Sjors Provoost>Bitcoin slash Bitcoin repository so that everybody else can build on top of it.

00:14:51.900 --> 00:14:57.100
<v Aaron van Wirdum>Right. So everything you mentioned so far... Up until the button clicking, that's

00:14:57.100 --> 00:14:58.780
<v Aaron van Wirdum>what Bitcoin Core contributors do.

00:14:59.120 --> 00:15:03.260
<v Sjors Provoost>Yeah, the contributors review your code. They suggest improvements. And at some

00:15:03.260 --> 00:15:06.860
<v Sjors Provoost>point, if enough contributors and if enough contributors that have the correct

00:15:06.860 --> 00:15:11.600
<v Sjors Provoost>skill set to actually judge that, say, okay, this code is fine. Then the

00:15:11.600 --> 00:15:13.820
<v Sjors Provoost>maintainer more or less just presses the button.

00:15:14.400 --> 00:15:16.760
<v Aaron van Wirdum>Yes. And what happens when they press the button?

00:15:18.230 --> 00:15:24.130
<v Sjors Provoost>Then the code is included inside the master branch, which means then everybody

00:15:24.130 --> 00:15:28.570
<v Sjors Provoost>else who wants to make a change has to build on top of what you just did. At

00:15:28.570 --> 00:15:33.750
<v Sjors Provoost>least, you know, the way Git works is kind of a tree. So you don't actually have

00:15:33.750 --> 00:15:38.510
<v Sjors Provoost>to build on top of the very latest thing that is on the master branch if you're

00:15:38.510 --> 00:15:41.730
<v Sjors Provoost>not touching the same thing. So if there's like two different files, I don't have

00:15:41.730 --> 00:15:45.690
<v Sjors Provoost>to build on top of the latest commit on master if I'm working on a different

00:15:45.690 --> 00:15:50.850
<v Sjors Provoost>file. But there's something called the merge conflict where if the master branch

00:15:50.850 --> 00:15:56.370
<v Sjors Provoost>contains a file that's been changed and you are also changing that file, you

00:15:56.370 --> 00:16:00.030
<v Sjors Provoost>actually have to build on top of the latest version. Otherwise, we don't know

00:16:00.030 --> 00:16:02.850
<v Sjors Provoost>what the truth is. But that's maybe for another episode.

00:16:03.450 --> 00:16:08.750
<v Aaron van Wirdum>Okay, so someone needs to click that button. That person is a Bitcoin Core

00:16:08.750 --> 00:16:09.650
<v Aaron van Wirdum>maintainer?

00:16:09.810 --> 00:16:10.030
<v Sjors Provoost>Yes.

00:16:10.680 --> 00:16:15.100
<v Aaron van Wirdum>How many Bitcoin Core maintainers are there right now or are there usually?

00:16:16.070 --> 00:16:18.790
<v Sjors Provoost>There's six and it's always been sort of roughly around that number.

00:16:19.030 --> 00:16:22.410
<v Aaron van Wirdum>Do you know from the top of your head, do you remember who these six are

00:16:22.410 --> 00:16:23.130
<v Aaron van Wirdum>currently?

00:16:23.430 --> 00:16:26.810
<v Sjors Provoost>Well, Wladimir is still technically. fanquake.

00:16:27.370 --> 00:16:28.490
<v Aaron van Wirdum>Yeah, Michael Ford.

00:16:28.580 --> 00:16:30.850
<v Sjors Provoost>right. And Marco Falke.

00:16:31.870 --> 00:16:32.750
<v Aaron van Wirdum>Gloria Zhao.

00:16:32.870 --> 00:16:33.650
<v Sjors Provoost>Gloria Zhao.

00:16:33.640 --> 00:16:34.180
<v Aaron van Wirdum>Oh, right.

00:16:33.890 --> 00:16:36.390
<v Sjors Provoost>I don't know what his real name is.

00:16:37.670 --> 00:16:38.590
<v Sjors Provoost>And Andrew Chow.

00:16:39.110 --> 00:16:43.770
<v Aaron van Wirdum>There you go. You made it to all six. We didn't insult anyone thanks to your

00:16:43.770 --> 00:16:49.250
<v Aaron van Wirdum>great memory, Sjors. Thank you. So there are six currently, and I think that's

00:16:49.250 --> 00:16:53.970
<v Aaron van Wirdum>usually around six, right? That's been around six for a long time.

00:16:53.970 --> 00:16:56.390
<v Sjors Provoost>At least many years, yeah. Some people come, some people go.

00:16:56.690 --> 00:17:02.610
<v Aaron van Wirdum>Right. So then how do you become a Bitcoin Core maintainer? How do you get the

00:17:02.610 --> 00:17:05.870
<v Aaron van Wirdum>access to this button?

00:17:06.200 --> 00:17:10.260
<v Sjors Provoost>Yeah, so there's not a super formal process for it, but basically the idea would

00:17:10.260 --> 00:17:14.380
<v Sjors Provoost>be that you have been around for a while, you have a reputation of not doing

00:17:14.380 --> 00:17:19.540
<v Sjors Provoost>absolutely insane things, and you understand when something is safe to include,

00:17:20.430 --> 00:17:25.230
<v Sjors Provoost>right? So for the most part, what a maintainer does is they rely on other people

00:17:25.230 --> 00:17:29.160
<v Sjors Provoost>who have done the reviewing and who've publicly said that it's okay. But you do

00:17:29.160 --> 00:17:33.780
<v Sjors Provoost>need to know whose review is typically good and whose review may not be very

00:17:33.780 --> 00:17:38.040
<v Sjors Provoost>good, right? So you need some experience in the project to know that. And so

00:17:38.040 --> 00:17:42.640
<v Sjors Provoost>that's sort of so. So basically, then there's a meeting on the IRC chat where

00:17:42.640 --> 00:17:47.910
<v Sjors Provoost>somebody might say, hey, you know, I'd like to become a maintainer. Or, hey, we'd

00:17:47.910 --> 00:17:50.810
<v Sjors Provoost>like you to become a maintainer. And then others would say, yeah, sounds good,

00:17:50.890 --> 00:17:54.720
<v Sjors Provoost>sounds good, sounds good. And maybe there's some discussion, maybe not. And then

00:17:54.720 --> 00:17:59.780
<v Sjors Provoost>a little bit later. The one of the existing maintainers adds that new maintainer

00:18:00.840 --> 00:18:05.140
<v Aaron van Wirdum>Right so maintainers are added by other maintainers essentially.

00:18:05.140 --> 00:18:09.100
<v Sjors Provoost>Yeah but the approval process is a community thing. Yeah but the actual physical

00:18:09.100 --> 00:18:14.440
<v Sjors Provoost>ad— act of making somebody a maintainer can only be done by maintainers or

00:18:14.920 --> 00:18:16.460
<v Sjors Provoost>somebody with backdoor access.

00:18:18.980 --> 00:18:22.020
<v Aaron van Wirdum>Right, like a GitHub employee could do it as well, essentially.

00:18:22.300 --> 00:18:25.500
<v Sjors Provoost>Yeah, but then I guess we can get there later. I don't know if you want to get

00:18:25.500 --> 00:18:29.040
<v Sjors Provoost>into that now, but there's basically two ways that people track who the

00:18:29.040 --> 00:18:31.180
<v Sjors Provoost>maintainers is. So there is the...

00:18:31.180 --> 00:18:32.140
<v Aaron van Wirdum>Let's get into it now.

00:18:32.260 --> 00:18:37.780
<v Sjors Provoost>So on GitHub, there's basically GitHub itself as a platform, but it's a trusted

00:18:37.780 --> 00:18:41.680
<v Sjors Provoost>platform. They have mechanisms to make sure that some people can push the button

00:18:41.680 --> 00:18:46.000
<v Sjors Provoost>and other people cannot. So the list of current maintainers is updated inside of

00:18:46.000 --> 00:18:49.800
<v Sjors Provoost>GitHub so that GitHub, you know, at least make sure that no random other person

00:18:49.800 --> 00:18:52.500
<v Sjors Provoost>can press a button because that would create a mess. Wouldn't be the end of the

00:18:52.500 --> 00:18:55.780
<v Sjors Provoost>world, but it would definitely create a mess. But there's a second thing because

00:18:55.780 --> 00:19:00.720
<v Sjors Provoost>GitHub is a trusted platform. We don't really want to rely on that. Right. So,

00:19:00.900 --> 00:19:05.020
<v Sjors Provoost>well, one thing you can do is you can just look at all the recent commits on the

00:19:05.020 --> 00:19:07.840
<v Sjors Provoost>Bitcoin Core repository and you can look like who was hitting the merge button

00:19:07.840 --> 00:19:12.920
<v Sjors Provoost>because the merge button, well, they're not technically not using the button, but

00:19:12.920 --> 00:19:16.300
<v Sjors Provoost>I won't bore you with that. But you can see who made the merge commits. So you

00:19:16.300 --> 00:19:19.140
<v Sjors Provoost>can check that it's actually one of those six people that you know to be the

00:19:19.140 --> 00:19:22.880
<v Sjors Provoost>maintainers. But there's also an automated way to check that. And that's because

00:19:22.880 --> 00:19:26.760
<v Sjors Provoost>there is a file inside the repository. And that file says these are the six

00:19:26.760 --> 00:19:30.820
<v Sjors Provoost>maintainers. This is their PGP key. And so there's a script that will start with

00:19:30.820 --> 00:19:35.150
<v Sjors Provoost>that file sometime in the past. Whatever the maintainers were then. It looks at

00:19:35.150 --> 00:19:38.750
<v Sjors Provoost>all the merges and it will say, okay, this merge was done by somebody who was on

00:19:38.750 --> 00:19:42.530
<v Sjors Provoost>the list at the time of the merge. And then at some point, the list itself has

00:19:42.530 --> 00:19:46.550
<v Sjors Provoost>changed. It checks that the list was changed by somebody on that list and not by

00:19:46.550 --> 00:19:49.990
<v Sjors Provoost>somebody else. And then it will check for the next commits that they were done by

00:19:49.990 --> 00:19:52.350
<v Sjors Provoost>somebody who had permission to press the merge button.

00:19:52.530 --> 00:19:56.270
<v Aaron van Wirdum>And that's because these commits are cryptographically signed?

00:19:56.470 --> 00:20:00.770
<v Sjors Provoost>Yes, exactly. So GitHub has a really nice feature that not everybody uses and you

00:20:00.770 --> 00:20:05.570
<v Sjors Provoost>don't have to use it. But when you make a commit, which is one piece of a change,

00:20:05.790 --> 00:20:09.850
<v Sjors Provoost>you can sign it with your PGP key. You can do it automatically or you can do it

00:20:09.850 --> 00:20:14.490
<v Sjors Provoost>manually. And maintainers always do this when they make a merge. So that means

00:20:14.490 --> 00:20:18.550
<v Sjors Provoost>that you cryptographically sign using your PGP key that you are the one doing the merge.

00:20:19.200 --> 00:20:19.640
<v Aaron van Wirdum>Right.

00:20:19.860 --> 00:20:21.300
<v Sjors Provoost>Unless your key is compromised, of course.

00:20:23.210 --> 00:20:28.350
<v Aaron van Wirdum>Sure. Right okay that's clear to me is that what you wanted to say about that part

00:20:28.350 --> 00:20:28.730
<v Sjors Provoost>Yep

00:20:28.730 --> 00:20:34.290
<v Aaron van Wirdum>Okay great so then so now we've discussed contributors which can essentially be

00:20:34.290 --> 00:20:38.770
<v Aaron van Wirdum>anyone that contributes and then we've discussed maintainers which are about six

00:20:38.770 --> 00:20:44.590
<v Aaron van Wirdum>and they get access to this merge button and then we have the lead maintainers

00:20:44.590 --> 00:20:50.070
<v Aaron van Wirdum>so what differentiates the lead maintainer from regular maintainers or what are

00:20:50.070 --> 00:20:51.490
<v Aaron van Wirdum>the roles of a lead maintainer?

00:20:51.490 --> 00:20:56.110
<v Sjors Provoost>I think over time we could say that the lead maintainer is doing less and less or

00:20:56.110 --> 00:21:00.770
<v Sjors Provoost>at least less and less very visible things but I mean the lead maintainer

00:21:00.770 --> 00:21:05.310
<v Sjors Provoost>basically evolved from what would be the benevolent dictator in a project like

00:21:05.310 --> 00:21:11.190
<v Sjors Provoost>Linux So it is the person, especially in the beginning, is the person who makes

00:21:11.190 --> 00:21:14.830
<v Sjors Provoost>a release, who decides when it's, well, it doesn't really decide when it's time

00:21:14.830 --> 00:21:18.550
<v Sjors Provoost>to make a release. I mean, in the original benevolent dictator thing, they would

00:21:18.550 --> 00:21:21.410
<v Sjors Provoost>decide when to make a release. They would decide what would go into the release.

00:21:21.630 --> 00:21:23.470
<v Sjors Provoost>They would put it on the website, et cetera.

00:21:23.810 --> 00:21:26.730
<v Aaron van Wirdum>I mean, that was certainly true for Bitcoin in the early years as well.

00:21:26.910 --> 00:21:30.430
<v Sjors Provoost>Yeah, and it's evolved a little bit where a lot of these subtasks have been more

00:21:30.430 --> 00:21:34.090
<v Sjors Provoost>distributed, where there are still several buttons that Wladimir or the new

00:21:34.090 --> 00:21:37.380
<v Sjors Provoost>maintainer has to push. But there are a lot of buttons that really anyone can

00:21:37.380 --> 00:21:39.460
<v Sjors Provoost>push as long as somebody pushes them.

00:21:40.160 --> 00:21:42.240
<v Aaron van Wirdum>Okay, so what are some of these buttons?

00:21:42.480 --> 00:21:45.240
<v Sjors Provoost>But I would say one of the ones that's still probably critical is the release

00:21:45.240 --> 00:21:49.920
<v Sjors Provoost>itself. Just to decide that this is a release and not some other commit.

00:21:50.140 --> 00:21:53.440
<v Aaron van Wirdum>Hey, that kind of gets back to my definition of Bitcoin Core then, doesn't it?

00:21:53.920 --> 00:21:57.580
<v Sjors Provoost>Yeah, but it's not that essential either. In principle, any maintainer, I guess,

00:21:57.640 --> 00:22:01.040
<v Sjors Provoost>could also make a release. I don't know if that's still actually constrained or not.

00:22:02.240 --> 00:22:07.780
<v Aaron van Wirdum>Well, isn't that the case now? Isn't Bitcoin Core released by, or different

00:22:07.780 --> 00:22:08.900
<v Aaron van Wirdum>people sign off to it?

00:22:09.040 --> 00:22:13.080
<v Sjors Provoost>Okay, so there's multiple aspects to the release. One aspect is which commit,

00:22:13.400 --> 00:22:17.340
<v Sjors Provoost>which specific piece of code actually represents the release. That's done with a

00:22:17.340 --> 00:22:18.600
<v Sjors Provoost>tag on GitHub.

00:22:18.880 --> 00:22:19.000
<v Aaron van Wirdum>Right.

00:22:19.280 --> 00:22:23.560
<v Sjors Provoost>Or even in Git, Git has tags. Tags are signed too. So the question is, who gets

00:22:23.560 --> 00:22:27.810
<v Sjors Provoost>[unclear] tags? And the answer to that question is, well, if you have a script

00:22:27.810 --> 00:22:32.190
<v Sjors Provoost>that checks the tags, you know, what does the script want? Maybe the script wants

00:22:32.190 --> 00:22:35.930
<v Sjors Provoost>the lead maintainer to do it. Maybe the script is fine if any of the maintainers

00:22:35.930 --> 00:22:41.170
<v Sjors Provoost>do it. But I would say it's the same kind of thing as a [unclear]. So maybe the

00:22:41.170 --> 00:22:44.790
<v Sjors Provoost>lead maintainer doesn't even do that maybe he does but he doesn't have to maybe

00:22:44.790 --> 00:22:49.710
<v Sjors Provoost>anybody could do it but in practice maybe only one person does it so that's one.

00:22:49.710 --> 00:22:54.530
<v Aaron van Wirdum>So in short that's one person that says this is a new Bitcoin release.

00:22:54.530 --> 00:22:55.550
<v Sjors Provoost>Yeah exactly.

00:22:55.550 --> 00:23:00.990
<v Aaron van Wirdum>Okay and then currently in Bitcoin or so far in Bitcoin was this still Wladimir

00:23:00.990 --> 00:23:01.490
<v Aaron van Wirdum>always?

00:23:02.220 --> 00:23:04.080
<v Sjors Provoost>I haven't checked, probably.

00:23:04.460 --> 00:23:08.200
<v Aaron van Wirdum>Okay, and the way he would do that is he would...

00:23:08.200 --> 00:23:13.980
<v Sjors Provoost>He would open his computer, he would type the words Git tag and then

00:23:13.980 --> 00:23:16.940
<v Sjors Provoost>v0.23.1.

00:23:17.500 --> 00:23:23.430
<v Aaron van Wirdum>Sure, but my question is more, he would probably... need a reason to do that

00:23:23.430 --> 00:23:27.990
<v Aaron van Wirdum>for himself, at least. He wouldn't just do that because he felt like it. He would

00:23:27.990 --> 00:23:29.230
<v Aaron van Wirdum>probably have some kind of checklist.

00:23:29.450 --> 00:23:32.390
<v Sjors Provoost>There are a bunch of checklists out there that you can see in the repository. A

00:23:32.390 --> 00:23:35.530
<v Sjors Provoost>whole lot of things have to happen. I think, I forgot the name of the file, but

00:23:35.530 --> 00:23:40.830
<v Sjors Provoost>there is basically a list, a release-process.md that has a lot of tedious things

00:23:40.830 --> 00:23:44.150
<v Sjors Provoost>that have to happen. Like somebody has to upload the latest translations. Again,

00:23:44.210 --> 00:23:47.590
<v Sjors Provoost>that could be any contributor, but somebody has to... at the translations.

00:23:48.030 --> 00:23:51.670
<v Sjors Provoost>Somebody has to change the version number in the source code so that it displays

00:23:51.670 --> 00:23:55.110
<v Sjors Provoost>the correct version number. Doesn't matter who does that. Somebody has to do it.

00:23:55.450 --> 00:23:59.110
<v Sjors Provoost>There's a whole bunch of these things. Somebody has to make release notes. And

00:23:59.110 --> 00:24:03.430
<v Sjors Provoost>then the more subjective part is to say, okay, are there still any bugs left that

00:24:03.430 --> 00:24:07.750
<v Sjors Provoost>have to be fixed before it's good to make a release? And usually there's release

00:24:07.750 --> 00:24:12.040
<v Sjors Provoost>candidates. Those are things that are released to the public that people can

00:24:12.040 --> 00:24:16.060
<v Sjors Provoost>test. Then I guess it doesn't really matter when you do that. And then there's

00:24:16.060 --> 00:24:20.880
<v Sjors Provoost>the actual release. And for the actual release, usually on the IRC chat, there's

00:24:20.880 --> 00:24:24.020
<v Sjors Provoost>a meeting where people say, should we do the release? And then a lot of people

00:24:24.020 --> 00:24:28.780
<v Sjors Provoost>say, yeah, let's do the release. Then the maintainer again just presses the

00:24:28.780 --> 00:24:29.780
<v Sjors Provoost>button and makes the release.

00:24:33.320 --> 00:24:38.820
<v Aaron van Wirdum>Okay so as far as we know or think or suspect so far it was still Wladimir

00:24:38.820 --> 00:24:42.560
<v Aaron van Wirdum>who kind of went through this checklist and said all right everything is done

00:24:42.560 --> 00:24:45.120
<v Aaron van Wirdum>this is the new Bitcoin Core release

00:24:45.600 --> 00:24:49.120
<v Sjors Provoost>Yeah, I think so. But again, that sounds like something that can trivially be

00:24:49.120 --> 00:24:51.160
<v Sjors Provoost>done by anyone, by any of the maintainers anyway.

00:24:51.420 --> 00:24:55.720
<v Aaron van Wirdum>And then I think the second part you were going to get at is signing the release.

00:24:55.780 --> 00:24:59.700
<v Sjors Provoost>Yeah. So once you have decided what source code belongs to release, now you need

00:24:59.700 --> 00:25:03.840
<v Sjors Provoost>to actually make a binary that belongs to release. And there is a, we talked

00:25:03.840 --> 00:25:07.960
<v Sjors Provoost>about this, deterministic builds many episodes ago about Guix, for example, how

00:25:07.960 --> 00:25:13.950
<v Sjors Provoost>it's done now. Anybody can do that. And many different people should do that. And

00:25:13.950 --> 00:25:18.850
<v Sjors Provoost>the results should be identical, whoever does it. So for the same code, for any

00:25:18.850 --> 00:25:23.350
<v Sjors Provoost>given code, you should get the exact same binary. And not just one binary, but

00:25:23.350 --> 00:25:25.990
<v Sjors Provoost>one for Windows, one for Mac, one for Linux, etc.

00:25:27.380 --> 00:25:33.060
<v Sjors Provoost>And these binaries have checksums. And so what you want to sign is the checksums.

00:25:33.650 --> 00:25:36.910
<v Sjors Provoost>And yeah, it used to be, and that's usually the case with a lot of open source

00:25:36.910 --> 00:25:40.770
<v Sjors Provoost>projects, that the lead maintainer signs the binary and says this is the

00:25:40.770 --> 00:25:44.350
<v Sjors Provoost>signature or this is the checksum of the binary and I'm here signing this binary

00:25:44.350 --> 00:25:48.270
<v Sjors Provoost>with my PGP key so that people who download it know that they don't have malware.

00:25:48.570 --> 00:25:52.810
<v Sjors Provoost>At least they know that if there's malware, then the malware is made by the lead

00:25:52.810 --> 00:25:57.090
<v Sjors Provoost>maintainer. And so that has been changed recently. There are a lot of people

00:25:57.090 --> 00:26:01.740
<v Sjors Provoost>signing off on these binaries. So the process has been changed so that

00:26:01.740 --> 00:26:07.680
<v Sjors Provoost>multiple people can sign for a release. I think it's not

00:26:07.680 --> 00:26:13.540
<v Sjors Provoost>just the maintainers. I think anybody can sign for a release. And that

00:26:13.540 --> 00:26:16.680
<v Sjors Provoost>means that when you download the release, there's a whole bunch of signatures on

00:26:16.680 --> 00:26:22.170
<v Sjors Provoost>it. And then you can decide, I guess, which signature you care about.

00:26:22.640 --> 00:26:26.640
<v Sjors Provoost>So maybe you know somebody and you trust them. Maybe that's Wladimir, maybe

00:26:26.640 --> 00:26:30.440
<v Sjors Provoost>that's somebody else. But yeah, so that removes again, removes the lead

00:26:30.440 --> 00:26:34.780
<v Sjors Provoost>maintainer from a critical, from a somewhat, you know, centralizing point, I

00:26:34.780 --> 00:26:40.340
<v Sjors Provoost>guess. Then there's another task, which is to put the binary on a website and

00:26:41.360 --> 00:26:44.720
<v Sjors Provoost>point the website to it, basically, and update the website so it has a nice

00:26:44.720 --> 00:26:45.420
<v Sjors Provoost>little blog post.

00:26:45.600 --> 00:26:51.230
<v Aaron van Wirdum>Okay, you're now getting to a third task that a lead maintainer... Typically

00:26:51.230 --> 00:26:56.970
<v Aaron van Wirdum>does. So the first one was signing off the release or deciding

00:26:56.970 --> 00:27:01.510
<v Aaron van Wirdum>when a release is a release. And then the second one was signing the release,

00:27:01.690 --> 00:27:06.590
<v Aaron van Wirdum>which we separated into two tasks or are separated into two tasks. And then the

00:27:06.590 --> 00:27:12.290
<v Aaron van Wirdum>third one you're now going to get into is publishing the code, the new

00:27:12.290 --> 00:27:18.190
<v Aaron van Wirdum>release on the website. So in this case, it would be the BitcoinCore.org website.

00:27:18.410 --> 00:27:23.420
<v Sjors Provoost>That's right. And so that process has also been somewhat split up, again, with

00:27:23.420 --> 00:27:29.140
<v Sjors Provoost>checklists. So anybody, I think, can make the web

00:27:29.140 --> 00:27:34.360
<v Sjors Provoost>page that announces the next release, and then it's merged again by some

00:27:34.360 --> 00:27:34.880
<v Sjors Provoost>maintainer.

00:27:36.440 --> 00:27:42.180
<v Aaron van Wirdum>Right, so this third task is also already kind of more distributed.

00:27:42.180 --> 00:27:43.860
<v Aaron van Wirdum>It's not necessarily...

00:27:43.860 --> 00:27:47.340
<v Sjors Provoost>Yeah, and I think it's semi-automated. So there's basically a repository on

00:27:47.340 --> 00:27:50.240
<v Sjors Provoost>GitHub again that represents that web page and you can add things to the

00:27:50.240 --> 00:27:55.480
<v Sjors Provoost>repository. But there might be some little aspect of like actually putting the

00:27:55.480 --> 00:27:59.670
<v Sjors Provoost>file on the server. That might still be somebody doing that.

00:27:59.810 --> 00:28:00.110
<v Aaron van Wirdum>Right.

00:28:00.270 --> 00:28:04.070
<v Sjors Provoost>But it doesn't really matter who that is as long as the file that's there is not

00:28:04.070 --> 00:28:07.760
<v Sjors Provoost>malware. So it probably shouldn't be a completely random person because not

00:28:07.760 --> 00:28:11.440
<v Sjors Provoost>everybody actually checks if there's malware. But if there is malware, somebody

00:28:11.440 --> 00:28:12.480
<v Sjors Provoost>will find out very quickly.

00:28:14.500 --> 00:28:19.680
<v Aaron van Wirdum>Right. Okay, so that's three tasks of which at

00:28:20.610 --> 00:28:25.210
<v Aaron van Wirdum>least two are already more decentralized, namely signing and publishing it on the

00:28:25.210 --> 00:28:29.330
<v Aaron van Wirdum>website. And then the first one deciding when a release is a release we weren't

00:28:29.330 --> 00:28:30.550
<v Aaron van Wirdum>exactly sure about.

00:28:31.090 --> 00:28:33.490
<v Sjors Provoost>It's definitely decentralizable to it.

00:28:33.570 --> 00:28:34.150
<v Aaron van Wirdum>Anything else?

00:28:34.830 --> 00:28:39.590
<v Sjors Provoost>I mean, yeah, there's things like starting the IRC meetings. Again, that's been

00:28:39.590 --> 00:28:44.390
<v Sjors Provoost>pretty automated. The main thing that Wladimir does is to type on IRC the word

00:28:44.390 --> 00:28:48.930
<v Sjors Provoost>start meeting. And then there's a bot that starts the meeting and then he types

00:28:48.930 --> 00:28:51.430
<v Sjors Provoost>end meeting. And I think other people can do that as well.

00:28:52.070 --> 00:28:56.290
<v Aaron van Wirdum>Right I guess he does sort of manage the meeting right he kind of…

00:28:56.290 --> 00:28:59.530
<v Sjors Provoost>Yeah exactly but in principle again anybody can do that.

00:28:59.530 --> 00:29:04.150
<v Aaron van Wirdum>Which topics are being discussed and stuff like that. Sure yeah anyone can do it

00:29:04.150 --> 00:29:07.330
<v Aaron van Wirdum>but so far it was mostly Wladimir that was still doing that.

00:29:07.330 --> 00:29:11.670
<v Sjors Provoost>Yeah and this really you know comes back to the um point I brought up in the

00:29:11.670 --> 00:29:15.710
<v Sjors Provoost>beginning of our chat like somebody has to do it and as long as Wladimir does it

00:29:15.710 --> 00:29:19.090
<v Sjors Provoost>nobody else will do it as soon as he stops doing it Well, either it doesn't

00:29:19.090 --> 00:29:22.030
<v Sjors Provoost>happen and then people are like, why is there no meeting? And then somebody types

00:29:22.030 --> 00:29:27.410
<v Sjors Provoost>start meeting and then there's a meeting. But my guess is, and we've now listed a

00:29:27.410 --> 00:29:30.210
<v Sjors Provoost>couple of tasks that are very clearly the kind of thing a lead maintainer

00:29:30.210 --> 00:29:34.890
<v Sjors Provoost>typically does, but there are probably a lot of very small things. You know, this

00:29:34.890 --> 00:29:39.870
<v Sjors Provoost>happens with any company or any organization or voluntary organization. There's

00:29:39.870 --> 00:29:43.250
<v Sjors Provoost>always this one person that just does a lot of different things. And when they

00:29:43.250 --> 00:29:47.570
<v Sjors Provoost>leave, you find out what they were actually doing. And that means that things are

00:29:47.570 --> 00:29:50.490
<v Sjors Provoost>just going to break. Not so much things inside Bitcoin Core because that

00:29:50.490 --> 00:29:54.330
<v Sjors Provoost>software, the software itself is not really affected by who is the maintainer.

00:29:54.770 --> 00:29:58.090
<v Sjors Provoost>But I could imagine that the next release takes a bit longer because there was

00:29:58.090 --> 00:30:01.870
<v Sjors Provoost>some step that nobody thought about or that just nobody takes the initiative on,

00:30:01.970 --> 00:30:06.490
<v Sjors Provoost>right? It's like if somebody should click this button, but nobody's clicking the

00:30:06.490 --> 00:30:09.690
<v Sjors Provoost>button and everybody's staring at each other, wait, who should click the button?

00:30:11.000 --> 00:30:16.870
<v Aaron van Wirdum>Right. Okay so so you've now we've now mentioned how many four tasks I guess and

00:30:16.870 --> 00:30:20.570
<v Aaron van Wirdum>then maybe there are sort of smaller tasks that we're not thinking of yeah, but

00:30:20.570 --> 00:30:25.830
<v Aaron van Wirdum>to get back to one of the things you said earlier in this episode or at the start

00:30:25.830 --> 00:30:31.190
<v Aaron van Wirdum>of the episode is what Bitcoin Core currently is a

00:30:31.190 --> 00:30:36.640
<v Aaron van Wirdum>repository on— under the— it calls Bitcoin under the Bitcoin

00:30:36.640 --> 00:30:37.300
<v Aaron van Wirdum>handle.

00:30:37.660 --> 00:30:41.480
<v Sjors Provoost>Yeah. So on GitHub, usually when you see a URL on GitHub, it's GitHub.com slash

00:30:41.480 --> 00:30:45.540
<v Sjors Provoost>name of person slash name of company slash the name of the repository.

00:30:46.420 --> 00:30:46.820
<v Aaron van Wirdum>Okay.

00:30:47.040 --> 00:30:50.960
<v Sjors Provoost>So Bitcoin slash Bitcoin. The first Bitcoin is the name of either a person or a

00:30:50.960 --> 00:30:55.300
<v Sjors Provoost>company or like a name. And second is the name of the repository.

00:30:55.700 --> 00:30:55.780
<v Aaron van Wirdum>Right.

00:30:55.860 --> 00:30:58.760
<v Sjors Provoost>So then the question is, I guess that you were going to ask is what's Bitcoin?

00:30:58.980 --> 00:30:59.820
<v Sjors Provoost>What's the organization?

00:31:00.460 --> 00:31:02.980
<v Aaron van Wirdum>Who's that? Or what? Is that Wladimir?

00:31:03.300 --> 00:31:08.760
<v Sjors Provoost>I don't know. That is somebody who has the password to, you know, add people as

00:31:08.760 --> 00:31:13.420
<v Sjors Provoost>maintainers, to remove people as maintainers, etc. That could be Wladimir. That

00:31:13.420 --> 00:31:17.540
<v Sjors Provoost>could be some super shady person that we don't even know about who, you know.

00:31:17.930 --> 00:31:22.350
<v Aaron van Wirdum>Right, yeah, because earlier you mentioned that maintainers are added by

00:31:22.350 --> 00:31:27.650
<v Aaron van Wirdum>maintainers, but someone still has to, again, press a button on GitHub, I guess.

00:31:27.890 --> 00:31:28.330
<v Sjors Provoost>Yes.

00:31:28.390 --> 00:31:31.230
<v Aaron van Wirdum>And that button would be pressed by the Bitcoin account?

00:31:31.510 --> 00:31:35.370
<v Sjors Provoost>Probably, but I mean, you can delegate something. So whoever owns the Bitcoin

00:31:35.370 --> 00:31:41.090
<v Sjors Provoost>account on GitHub can then, on GitHub itself, say, okay, I'm giving permission to

00:31:41.090 --> 00:31:46.030
<v Sjors Provoost>this account or to this user or to this other user to do these things. So a lot

00:31:46.030 --> 00:31:49.870
<v Sjors Provoost>of tasks you can basically... Anybody can do it. There's people who can add tags

00:31:49.870 --> 00:31:54.530
<v Sjors Provoost>to or add labels to certain issues to say this is a P2P feature or whatever.

00:31:54.630 --> 00:31:58.610
<v Sjors Provoost>There's people who can delete spam. So there's a lot of permissions that you can

00:31:58.610 --> 00:32:00.730
<v Sjors Provoost>grant if you own that GitHub account.

00:32:01.220 --> 00:32:06.000
<v Aaron van Wirdum>But still someone owns the Bitcoin account. Like that person, there must be

00:32:06.000 --> 00:32:07.620
<v Aaron van Wirdum>something that that account can do.

00:32:06.940 --> 00:32:10.000
<v Sjors Provoost>Well yeah and then there's a question somebody owns the GitHub account and

00:32:10.000 --> 00:32:13.460
<v Sjors Provoost>somebody controls the GitHub account that might be different I mean to to control

00:32:13.460 --> 00:32:17.380
<v Sjors Provoost>it you just need to log in and the password and whatever 2fa is out there to own

00:32:17.380 --> 00:32:20.860
<v Sjors Provoost>it that's more of a legal thing maybe nobody owns it maybe GitHub has just said

00:32:20.860 --> 00:32:23.980
<v Sjors Provoost>you know what we'll just keep this thing around and whoever you know and if

00:32:23.980 --> 00:32:27.700
<v Sjors Provoost>there's ever dispute then we'll we'll look at the list of site maintainers and

00:32:27.700 --> 00:32:31.470
<v Sjors Provoost>ask them who is the owner Maybe. I don't know what the procedure is. And it's

00:32:31.470 --> 00:32:33.210
<v Sjors Provoost>probably best that we don't know what the procedure is.

00:32:33.270 --> 00:32:36.850
<v Aaron van Wirdum>In this case, I'm just referring to owner, not in a legal sense, but more in

00:32:36.850 --> 00:32:42.450
<v Aaron van Wirdum>control. Yeah, the Bitcoin account that has the Bitcoin repository on the

00:32:42.450 --> 00:32:43.090
<v Aaron van Wirdum>website, at least.

00:32:43.110 --> 00:32:46.870
<v Sjors Provoost>Yeah, and the most obvious interpretation would be that Wladimir controls that

00:32:46.870 --> 00:32:50.330
<v Sjors Provoost>account. That makes sense. But it could be that he doesn't.

00:32:51.470 --> 00:32:54.610
<v Aaron van Wirdum>Right. And we don't, does no one know this?

00:32:54.830 --> 00:32:58.030
<v Sjors Provoost>I don't know. Maybe somebody does know. And I didn't look it up.

00:32:58.230 --> 00:32:59.410
<v Aaron van Wirdum>But you don't know. And I don't know.

00:32:59.570 --> 00:32:59.690
<v Sjors Provoost>Yeah.

00:32:59.990 --> 00:33:00.210
<v Aaron van Wirdum>Okay.

00:33:00.370 --> 00:33:03.190
<v Sjors Provoost>Makes sense to have that. I mean, it could make sense to have that a little bit

00:33:03.190 --> 00:33:07.270
<v Sjors Provoost>vague. You know, you have all these crazy people suing lots of people for crazy

00:33:07.270 --> 00:33:11.670
<v Sjors Provoost>reasons. And it's nice if you can, you know, if you somehow lose a lawsuit like

00:33:11.670 --> 00:33:15.990
<v Sjors Provoost>that, you can say, well, I have no control over this thing. As soon as I push

00:33:15.990 --> 00:33:18.370
<v Sjors Provoost>this button, the real person in control will just pull me away.

00:33:20.820 --> 00:33:26.100
<v Aaron van Wirdum>Yeah, it does sound like this would be something. I mean, I liked transparency.

00:33:26.640 --> 00:33:31.620
<v Aaron van Wirdum>It would be better if somehow whatever solution you have in mind with the button

00:33:31.620 --> 00:33:35.540
<v Aaron van Wirdum>and you're not in control would be implemented somehow, I guess.

00:33:35.640 --> 00:33:37.100
<v Sjors Provoost>The transparency is in the code itself.

00:33:37.340 --> 00:33:42.600
<v Aaron van Wirdum>Sure. No, I understand that. It doesn't sound ideal to have this vague.

00:33:43.060 --> 00:33:47.160
<v Sjors Provoost>No, I mean, the ideal thing, I think where we want to go is to not have a lead

00:33:47.160 --> 00:33:52.110
<v Sjors Provoost>maintainer at all. And basically have all these things automated. But eventually,

00:33:52.270 --> 00:33:57.810
<v Sjors Provoost>you know, websites are in one place. So there's always somebody on top of the website.

00:33:58.010 --> 00:33:58.370
<v Aaron van Wirdum>Right.

00:33:59.850 --> 00:34:05.670
<v Aaron van Wirdum>Okay well so we've we've defined how many things now four and then

00:34:05.670 --> 00:34:11.330
<v Aaron van Wirdum>maybe five so we we mentioned that the lead maintainer typically decides

00:34:11.330 --> 00:34:16.970
<v Aaron van Wirdum>when a release is a release typically and that is very much

00:34:16.970 --> 00:34:17.930
<v Aaron van Wirdum>decentralizable

00:34:17.930 --> 00:34:22.870
<v Sjors Provoost>Yeah and it's also mostly procedure right? So the process in general is every six

00:34:22.870 --> 00:34:27.080
<v Sjors Provoost>months or so there's a new release So you wait for those six months and you can

00:34:27.080 --> 00:34:31.920
<v Sjors Provoost>ask around an IRC, okay, is this a good time to start working on the release or not?

00:34:32.910 --> 00:34:37.590
<v Aaron van Wirdum>Sure. No, I'm just summing it up. So the first one is deciding when a release is

00:34:37.590 --> 00:34:40.890
<v Aaron van Wirdum>a release. And that seems like something that's decentralizable if it wasn't

00:34:40.890 --> 00:34:44.990
<v Aaron van Wirdum>already more decentralized than having one lead maintainer do it. And then there

00:34:44.990 --> 00:34:49.350
<v Aaron van Wirdum>was signing the release, which was already more decentralized because more lead

00:34:49.350 --> 00:34:53.850
<v Aaron van Wirdum>maintainers or contributors are now signing. There was updating the website. So

00:34:53.850 --> 00:34:57.210
<v Aaron van Wirdum>that's definitely something that other people can do. They're starting the IRC

00:34:57.210 --> 00:35:00.730
<v Aaron van Wirdum>meetings. Definitely something someone else can do.

00:35:02.670 --> 00:35:07.330
<v Aaron van Wirdum>Probably controlling the Bitcoin handle on GitHub which might not be

00:35:07.330 --> 00:35:12.810
<v Aaron van Wirdum>decentralizable but we also not sure what's going on there right

00:35:12.810 --> 00:35:18.590
<v Aaron van Wirdum>okay so if Wladimir is going to step down Or now that he did stop down, depending

00:35:18.590 --> 00:35:23.130
<v Aaron van Wirdum>on who knows what the exact situation is now, other people are just going to have

00:35:23.130 --> 00:35:26.670
<v Aaron van Wirdum>to start filling these roles. And as we mentioned earlier in the episode, this

00:35:26.670 --> 00:35:31.910
<v Aaron van Wirdum>was where I wanted to end originally. We don't really know who's going to do that.

00:35:32.430 --> 00:35:36.290
<v Sjors Provoost>No, and so one possibility is nobody. And that has its benefits because that

00:35:36.290 --> 00:35:40.350
<v Sjors Provoost>means you no longer get any of this narrative of like this control, this person

00:35:40.350 --> 00:35:44.630
<v Sjors Provoost>is the boss of Bitcoin, which, you know, Wladimir clearly was not, but he was

00:35:44.630 --> 00:35:48.540
<v Sjors Provoost>accused of being. Of being that. So it could be nice to not have anybody, but my

00:35:48.540 --> 00:35:52.840
<v Sjors Provoost>guess is there's certain situations where you want somebody to, to like throw it,

00:35:53.020 --> 00:35:55.400
<v Sjors Provoost>throw a coin one way or the other, something like that.

00:35:56.650 --> 00:35:57.490
<v Sjors Provoost>So we'll see.

00:35:59.050 --> 00:35:59.450
<v Aaron van Wirdum>Okay.

00:35:59.750 --> 00:36:04.090
<v Sjors Provoost>And we'll, I guess we'll see in the next couple of releases, what steps there are

00:36:04.090 --> 00:36:07.530
<v Sjors Provoost>that, where we find out, Oh, I guess that was something Wladimir was doing and we

00:36:07.530 --> 00:36:08.030
<v Sjors Provoost>didn't think about.

00:36:08.690 --> 00:36:11.990
<v Aaron van Wirdum>Yeah, and the next release is kind of coming up-ish.

00:36:12.070 --> 00:36:16.390
<v Sjors Provoost>Yeah, I think we stop adding features now. And then in a few weeks, the idea is

00:36:16.390 --> 00:36:20.570
<v Sjors Provoost>just to basically split it off into a separate branch where that branch that's

00:36:20.570 --> 00:36:24.790
<v Sjors Provoost>designed for the releases, only important changes happen on it. And there's a

00:36:24.790 --> 00:36:29.190
<v Sjors Provoost>master branch where all the new stuff goes into, but that new stuff won't go into

00:36:29.190 --> 00:36:34.030
<v Sjors Provoost>that release that's coming up. So basically the project forks in a way.

00:36:35.340 --> 00:36:36.760
<v Sjors Provoost>That's something we can explain another time.

00:36:36.800 --> 00:36:39.260
<v Aaron van Wirdum>So what's the ETA for the next release? Do you know?

00:36:39.320 --> 00:36:40.660
<v Sjors Provoost>I don't know. It could take a month or two.

00:36:41.220 --> 00:36:41.420
<v Aaron van Wirdum>Right.

00:36:41.660 --> 00:36:46.560
<v Sjors Provoost>I think it's usually like after you split up, then it takes a few weeks to fix

00:36:46.560 --> 00:36:49.860
<v Sjors Provoost>bugs and then you get a release candidate. Then it takes two weeks to find bugs

00:36:49.860 --> 00:36:52.960
<v Sjors Provoost>in that. And then you do another release candidate. It takes another two weeks to

00:36:52.960 --> 00:36:55.280
<v Sjors Provoost>find bugs in that. So it can take a few months.

00:36:57.660 --> 00:36:57.880
<v Aaron van Wirdum>Okay.

00:36:58.260 --> 00:36:58.420
<v Sjors Provoost>Yep.

00:36:59.350 --> 00:36:59.950
<v Aaron van Wirdum>Clear to me.

00:37:00.370 --> 00:37:03.070
<v Sjors Provoost>All right, then. In that case, thank you for listening to Bitcoin

00:37:03.070 --> 00:37:04.290
<v Aaron van Wirdum>Explained.

