WEBVTT

00:00:00.001 --> 00:00:04.920
We all got a bit of a shock to the system when Gito Van Rossum decided to step down as the leader

00:00:04.920 --> 00:00:10.540
and top decider of the Python language and CPython runtime. This happened due to many factors,

00:00:10.540 --> 00:00:17.100
but was precipitated by the so-called walrus operator debate. That's over at PEP 572.

00:00:17.100 --> 00:00:22.460
It's been about nine months since then, and the Python community has responded and things are back

00:00:22.460 --> 00:00:27.900
on track. I'm excited to welcome Brett Cannon to this episode to give us an update on where we are

00:00:27.900 --> 00:00:33.260
and how we got here. He's a frequent guest and Python core contributor, so he has an inside view

00:00:33.260 --> 00:00:39.300
of what happened. This is Talk Python To Me, episode 209, recorded April 18th, 2019.

00:00:39.300 --> 00:00:57.580
Welcome to Talk Python To Me, a weekly podcast on Python, the language, the libraries, the ecosystem,

00:00:57.580 --> 00:01:02.260
and the personalities. This is your host, Michael Kennedy. Follow me on Twitter where I'm at,

00:01:02.260 --> 00:01:07.560
mkennedy. Keep up with the show and listen to past episodes at talkpython.fm, and follow the show on

00:01:07.560 --> 00:01:08.880
Twitter via at Talk Python.

00:01:08.880 --> 00:01:11.480
Brett, welcome back to Talk Python.

00:01:11.480 --> 00:01:13.080
Thank you, Michael. Glad to be back.

00:01:13.080 --> 00:01:16.760
It's good to have you back. I love all of your appearances here and all the stuff that you're

00:01:16.760 --> 00:01:23.200
doing for the Python space. And this is kind of a double one. You're a core developer and

00:01:23.200 --> 00:01:27.960
participating in this new governance model at a higher level. So you sort of helped create it and

00:01:27.960 --> 00:01:33.120
then got put into position. So that's going to be so much fun to talk about. And I feel like,

00:01:33.120 --> 00:01:37.340
I don't know how you feel, just to kind of kick this off, but I feel like the Python space is in

00:01:37.340 --> 00:01:42.960
a brighter, nicer place than it was eight months ago, six months ago, whatever that whole time was.

00:01:42.960 --> 00:01:48.480
Yeah, I'd like to think so. I mean, when Guido dropped his big surprise bomb on everyone on

00:01:48.480 --> 00:01:53.460
July 12th, 2018, a day I will never forget. Things were kind of hectic there for quite a while.

00:01:53.460 --> 00:01:57.580
And well, I'm sure we'll get into it. Things kind of calmed down back in December and then things

00:01:57.580 --> 00:02:00.780
really settled down February. And I think we're starting to get back into our groove and things

00:02:00.780 --> 00:02:04.140
are going, but I think everyone's more or less happy with where things are. We're still feeling

00:02:04.140 --> 00:02:08.960
our way through because it's all still very fresh, but yeah, I'm optimistic about the future.

00:02:08.960 --> 00:02:13.200
For sure. So am I. So before we get into all those topics though, maybe let's just

00:02:13.200 --> 00:02:18.020
sort of set the stage with you as a guest. So folks know, tell us what you do day to day,

00:02:18.020 --> 00:02:21.280
maybe in your regular job in the open source space, you've got a lot going on.

00:02:21.280 --> 00:02:29.820
My job is actually divided into two sections. One is I am a principal software engineering manager now

00:02:29.820 --> 00:02:36.260
as of last month at Microsoft, leading the dev team for the Python extension for VS Code.

00:02:36.260 --> 00:02:37.720
Right on. Congratulations. That's great.

00:02:37.860 --> 00:02:44.320
Yeah. Well, one of the reasons I did that was dividing my time allowed me to do that. And now

00:02:44.320 --> 00:02:48.540
I get to divide the other part of my time working on Python. So Microsoft's just letting me basically

00:02:48.540 --> 00:02:51.480
split my time between the two and just get to do both.

00:02:51.480 --> 00:02:56.000
Oh, that's really cool. So they're giving you like 50% time or something in that realm to just

00:02:56.000 --> 00:02:57.080
make Python better?

00:02:57.080 --> 00:03:03.680
Yeah. Basically, when I agreed to be a manager, I also was able to then say like, I'd like to divide

00:03:03.680 --> 00:03:08.940
my time between the two. And I say, yep, sure. Great. You're now on this steering council thing.

00:03:08.940 --> 00:03:13.400
It makes sense. So go for it. So based on how I'm able to find the time, I get to spend it.

00:03:13.400 --> 00:03:17.060
You feel like Microsoft's in a different place than it was 10 years ago with regard to open source?

00:03:17.060 --> 00:03:21.440
Yeah. Had you asked me 10 years ago, would I even have been willing to consider working for Microsoft?

00:03:21.440 --> 00:03:26.640
The answer would have been a flat out no. So very much a different place than it used to be. I know when I

00:03:26.640 --> 00:03:31.260
told my family I was going to accept a job offer for Microsoft, their jaws dropped to the floor.

00:03:31.260 --> 00:03:34.800
And then I had to explain, it's a different place. You don't know about the new CEO. It's a thing.

00:03:34.800 --> 00:03:37.320
And it's continued to be a very good thing.

00:03:37.320 --> 00:03:38.640
It seemed like that.

00:03:38.640 --> 00:03:42.700
Yeah. Well, exactly. And you hear Satyaki talk internally where he says like,

00:03:42.700 --> 00:03:46.720
when it makes sense to give back to open source, give back to open source. We're consuming it.

00:03:46.720 --> 00:03:49.000
We should give back where it makes sense. And it's great.

00:03:49.000 --> 00:03:51.340
That's fantastic. Yeah. I mean, when I saw him,

00:03:51.980 --> 00:03:57.520
researched him a little bit when he was promoted to the CEO job, I thought there's a chance that

00:03:57.520 --> 00:04:00.960
something like this will be happening, but you never know, right? You never know what's going

00:04:00.960 --> 00:04:05.320
to happen. But I feel like it, you know, like the sort of the good optimistic view that's coming to

00:04:05.320 --> 00:04:10.780
reality. Yeah. I continue to be very happy to be working there and have absolutely no qualms.

00:04:10.780 --> 00:04:14.580
And I would hope people who know me well enough know that if I had moral issues, I would not be there.

00:04:14.580 --> 00:04:16.760
And I continue to be happy to be there. So.

00:04:16.760 --> 00:04:22.360
Right on, right on. Well, you know, it's, it's kind of a world where you have a lot of choices

00:04:22.360 --> 00:04:26.720
as a experienced developer. So pretty much if you're an experienced developer and you're somewhere

00:04:26.720 --> 00:04:29.200
consciously or not, you're kind of choosing to be there, right?

00:04:29.200 --> 00:04:31.760
Yeah. Yeah. I'd like to think so at least.

00:04:31.760 --> 00:04:38.260
Yeah. Cool. All right. So that's the day to day W2 side of the world. What about the open source,

00:04:38.260 --> 00:04:40.660
you know, MIT GPL side of the world?

00:04:40.660 --> 00:04:44.260
And actually it's a T4 side of my world because I'm in Vancouver, Canada. So I get a different

00:04:44.260 --> 00:04:48.380
text form. Beautiful. I tried to weave them together.

00:04:48.380 --> 00:04:55.180
Yeah. Other than that, the open source specific bit is I've been a core contributor

00:04:55.180 --> 00:05:02.440
to Python going on 16 years, actually, as of today of our recording. Exactly.

00:05:02.440 --> 00:05:03.860
Wow. What a cool anniversary.

00:05:03.860 --> 00:05:04.480
Yeah.

00:05:04.480 --> 00:05:05.440
That's a long time.

00:05:05.440 --> 00:05:12.320
Yeah. First commit was exactly in 20, sorry, 2003 as of today. Wow.

00:05:12.320 --> 00:05:17.880
Yeah. That's awesome. And then on top of that, I am now one of the inaugural members of Python's

00:05:17.880 --> 00:05:20.140
steering council, which we will obviously be getting into.

00:05:20.140 --> 00:05:23.960
Yeah. That's the main topic, which is really cool. Congratulations on being nominated.

00:05:23.960 --> 00:05:29.280
I know that your name got thrown around in a couple of ways and there was definitely different

00:05:29.280 --> 00:05:36.340
competing styles of governance that were thrown out. And one of them was, we pick a new BDFL and people

00:05:36.340 --> 00:05:40.700
are like, we're going to pick Brett Cannon. That'd be fun. Did that kind of scare you a little bit

00:05:40.700 --> 00:05:44.880
or is that okay? Or what do you see? Like when you heard your name being passed around like that?

00:05:44.880 --> 00:05:49.060
Yeah. So, I mean, we, we obviously can get more depth into it when later on, if we did,

00:05:49.060 --> 00:05:54.000
when we discussed the possibilities we had for our governance models, but it was very humbling

00:05:54.000 --> 00:05:58.840
and flattering when people brought up, well, maybe we should just stick with the single dictator,

00:05:58.840 --> 00:06:04.060
even if they're voted in or what have you. And that my name, I feel like such a humble brag on this,

00:06:04.100 --> 00:06:08.660
but my name was consistently tossed around as who, as the, one of the few people, people were

00:06:08.660 --> 00:06:13.660
comfortable with potentially having that position. So it was very nice. I did have conversations with

00:06:13.660 --> 00:06:17.540
my wife that if this did happen, are you okay with this? Luckily my wife, Andrea is very

00:06:17.540 --> 00:06:22.000
understanding. It's like, yes, as long as you get to continue to take your month off from open source

00:06:22.000 --> 00:06:27.100
and you still dedicate at least one full day every weekend to not touching your email on open source,

00:06:27.340 --> 00:06:31.280
she was fine with it. So, but yes, it was extremely flattering that people thought that of me.

00:06:31.280 --> 00:06:36.120
Yeah. I would have been happy had that been the outcome, at least on the personal level,

00:06:36.120 --> 00:06:41.460
but your wife does a good job of protecting your energy and your time. And I think, you know,

00:06:41.460 --> 00:06:46.180
we all kind of need something like that as well, right? Like it's easy to say, at least for me

00:06:46.180 --> 00:06:49.860
personally, it's easy to say yes to a hundred things and then go like, wait, I have time for three of

00:06:49.860 --> 00:06:55.380
these. Yeah, no, I'm extremely lucky that, I was already heavily involved in Python when I met her. So she knew

00:06:55.380 --> 00:06:59.760
what she was getting into and actually I think, I don't know how much I've told this story publicly,

00:06:59.760 --> 00:07:06.460
but when I first met Andrea, she did the usual and Googled me and then found out what I did.

00:07:06.460 --> 00:07:12.100
And then subsequently she basically understood it. And then she later told a friend of hers who was

00:07:12.100 --> 00:07:17.680
getting their degree in CS who I was and her friend said, Oh, that's epic. And she's never forgotten

00:07:17.680 --> 00:07:21.620
that, that, that, that played a part in my life. And so she's always been very understanding about

00:07:21.620 --> 00:07:26.300
making sure that I never felt like I can't participate. It's just been making sure it's

00:07:26.300 --> 00:07:30.620
at a healthy level. Yeah, absolutely. Absolutely. And, you know, I guess maybe that's a good segue

00:07:30.620 --> 00:07:38.100
into maybe back into July, not you individually, but you know, open source. Yeah. It definitely has

00:07:38.100 --> 00:07:42.580
some, some sides that can be rough, right? Like you work on these projects and you don't have time or

00:07:42.580 --> 00:07:47.320
energy necessarily to keep adding features or that you don't want to go in the direction that someone

00:07:47.320 --> 00:07:52.540
else wants to go to. And then all of a sudden, you know, you're on the receiving end of somebody's

00:07:52.540 --> 00:07:59.480
unpaid, unearned expectation, right? Yeah. Yeah. July of 2018 and the subsequent couple months before

00:07:59.480 --> 00:08:06.620
then were a very rough time to be a core dev and specifically to have your name be Guido Van

00:08:06.620 --> 00:08:13.320
Rossum. It was not, not a pleasant time in the world. For those who don't know, basically Guido ended up

00:08:13.320 --> 00:08:19.840
going with an idea that's encapsulated in Python has proposal 572. It's assignment expressions.

00:08:19.840 --> 00:08:25.320
Emily Morehouse landed that feature support actually, I think a month or two ago. And so it will be

00:08:25.320 --> 00:08:29.820
actually in Python 3.8. So don't be upset if you don't know what it is. You'll know by the end of

00:08:29.820 --> 00:08:34.600
the year, but it was extremely controversial. For those of you that don't know, it's a new piece of

00:08:34.600 --> 00:08:41.620
syntax that basically lets you do assignments in context of where you can do expressions. So for instance,

00:08:41.620 --> 00:08:48.520
an expression would be like the guard you put in an if statement, right? So you could do if a colon

00:08:48.520 --> 00:08:54.180
equals function, expensive function call. Call a function. Yeah. Exactly. Now you have access to a

00:08:54.180 --> 00:08:57.280
and you don't have to do that as a separate line like you normally would have done before where you

00:08:57.280 --> 00:09:02.840
would do a equals expensive function call if a then do something. Right. And it sounds so like,

00:09:02.840 --> 00:09:08.380
okay, we don't need it to be that concise, right? It's not like APL or something insane.

00:09:08.620 --> 00:09:14.180
We could have that extra line. But the thing is, it opens up new possibilities around like

00:09:14.180 --> 00:09:19.920
expressions, generator expression, listed comprehensions, things like that, where you can't

00:09:19.920 --> 00:09:25.880
have more than one line, right? Like I want to for something in a group, test that thing and then

00:09:25.880 --> 00:09:29.600
return some part of that, right? Those would actually be like double function calls without

00:09:29.600 --> 00:09:33.880
the assignment operator and things like this. Exactly. There are certain things that you

00:09:33.880 --> 00:09:39.580
basically couldn't do without making your function calls idempotent and such in generator

00:09:39.580 --> 00:09:45.580
expressions. I personally also think it's a key point that it improves the expressiveness and

00:09:45.580 --> 00:09:52.900
conciseness of some code. Like before, if you did the a equals solution and then did the guard on the if

00:09:52.900 --> 00:09:59.380
on the a, you didn't necessarily know if the author of that code meant for the scoping of that variable

00:09:59.380 --> 00:10:04.520
to be just that if block. But if you use an assignment expression, it's very much communicated

00:10:04.520 --> 00:10:08.540
that I do not expect anyone to necessarily touch this outside. Now, obviously, Python doesn't add

00:10:08.540 --> 00:10:15.000
scoping to that level, but it does show intent. And because Python is always very much about readability

00:10:15.000 --> 00:10:21.100
and productivity and making it easier to read code, the hope is, is that in those cases, this will help

00:10:21.100 --> 00:10:26.240
in that area. Yeah. So I don't think we need to dig too far into this feature. But I do want to make a quick comment because

00:10:26.240 --> 00:10:32.420
I think it's pretty interesting on like this whole feature and the debate around it was kind of what was the

00:10:32.420 --> 00:10:37.920
straw that broke the camel's back for Guido and like all the pressure and stuff. But so my first impression was

00:10:37.920 --> 00:10:44.400
interesting, not terrible syntax. I'm not sure that we need this, you know, so I'm just like, well, it's just adding more

00:10:44.400 --> 00:10:50.360
syntax that I don't really know necessarily super. But like six months later, I'm like, yeah, that's a pretty nice

00:10:50.360 --> 00:10:54.520
feature. I kind of like having it there. And so, you know, I feel like I could have been, you know,

00:10:54.520 --> 00:10:58.820
theoretically a person like, oh, we don't need this, get it out of here. And now I'm, I'm pretty happy with it.

00:10:58.820 --> 00:11:01.140
And that's not how it was. But I, you know, shifted a little.

00:11:01.140 --> 00:11:07.320
Yeah. And honestly, that happens a lot. I mean, a lot of people had the very much the initial,

00:11:07.320 --> 00:11:11.620
and I don't want to say knee jerk, that seems almost rude, but the initial reaction that you

00:11:11.620 --> 00:11:16.660
did, Michael, where it's like, okay, that's nice. But do I really need new syntax for this? Because

00:11:16.660 --> 00:11:22.360
I don't know how many people remember this phrase, because this was bigger back like a decade ago,

00:11:22.360 --> 00:11:28.880
but saying that Python fits your brain, right? People like Python, because the core concepts to be

00:11:28.880 --> 00:11:33.640
fully productive in the language are small and encapsulated and flow through each other nicely

00:11:33.640 --> 00:11:37.940
enough that it doesn't take a lot of mental effort to fully understand how the general language works.

00:11:37.940 --> 00:11:42.080
Now, that doesn't mean you understand how metaclasses work, and that's fine. But the general day to day

00:11:42.080 --> 00:11:47.460
stuff can all fit in your head. And anytime we ever add anything to language, especially syntactically,

00:11:47.460 --> 00:11:53.340
it causes everyone to suddenly go, is this going to finally be the thing that pushes a part of Python

00:11:53.340 --> 00:11:58.420
semantics out of my head day to day, and I'm suddenly going to end up, we're going to suddenly swing

00:11:58.420 --> 00:12:05.780
towards C++. And for 8% of the projects, you use 1% of the language, and you'll never fully understand

00:12:05.780 --> 00:12:11.720
how it works. So, a lot of people had that reaction. And it was really, really voracious,

00:12:11.720 --> 00:12:16.180
I think, because a lot of people realized it didn't, it opened up cases, as you said,

00:12:16.180 --> 00:12:22.020
about generator expressions, and it did open express enough, but not enough people recognized

00:12:22.020 --> 00:12:28.580
in their own cases where they would have needed this to alleviate a problem, that it caused a huge

00:12:28.580 --> 00:12:35.260
backlash. Like, I saw people state publicly, I will refuse to review pull requests that use this

00:12:35.260 --> 00:12:41.620
syntax. Now, granted, this was also said somewhat early on, and the PEP did evolve a good amount over

00:12:41.620 --> 00:12:47.620
its lifetime. Like, when it first got written, it got sent to Python ideas, and then it got cleaned up,

00:12:47.820 --> 00:12:53.180
and then it kept iterating there, and that got sent over. And then before complete rewrites were finished,

00:12:53.180 --> 00:12:57.980
and everything that was brought up on Python ideas were put into that PEP, it got moved over to Python

00:12:57.980 --> 00:13:04.220
dev, and then a whole other set of arguments happened that actually had been covered on Python ideas.

00:13:04.900 --> 00:13:13.600
And so it was very, it was a very long, sustained amount of negativity towards Sweeto, and just the

00:13:13.600 --> 00:13:18.620
PEP in general, and just a lot of, I'd like to say incorrectness, but honestly, a lot of rudeness,

00:13:18.620 --> 00:13:21.100
and just people really overreacting, I think.

00:13:21.100 --> 00:13:21.340
Yeah.

00:13:21.340 --> 00:13:25.080
Why do you think that is? I'm not questioning, I know that it's out there. Like, if you do anything

00:13:25.080 --> 00:13:29.860
on the internet, you know that no matter even how good intended it is, you're going to receive it.

00:13:29.940 --> 00:13:34.980
And I feel like this is even deeper into people's identities, right? If you're a Python developer,

00:13:34.980 --> 00:13:39.680
and you go messing with what Python is, like, that can definitely bring out some emotions.

00:13:39.680 --> 00:13:47.280
I think a lot of people view what programming language they use, like, the equivalent to artists

00:13:47.280 --> 00:13:52.200
having preferences over the paintbrush, or the pencils that they use, or what have you. Ask any

00:13:52.200 --> 00:13:56.380
artist what medium they work in, and they'll tell you. But then ask them exactly what tools they use

00:13:56.380 --> 00:14:01.340
to work in that medium, and they will have, like, a brand name of a pencil that they buy all the time,

00:14:01.340 --> 00:14:05.460
and they will only draw with, because it just feels exactly the way they want. I mean, artists are very

00:14:05.460 --> 00:14:10.900
opinionated about the tools they use, and software developers are no different. If you ask them what

00:14:10.900 --> 00:14:15.380
programming language they use, and what, like, frameworks they use, the stuff that they live and

00:14:15.380 --> 00:14:20.380
breathe every day at work, they will be very particular if you give them the option. And so,

00:14:20.380 --> 00:14:25.420
the idea that someone is going to take their favorite thing, and potentially change it in a way

00:14:25.420 --> 00:14:29.900
that they view as negative, and especially if they view it as changing it in a way that will

00:14:29.900 --> 00:14:33.620
open the floodgates, because this is the other thing, is everyone always feels like this is going

00:14:33.620 --> 00:14:37.620
to be a magic tipping point for Python, that suddenly we do this one thing, and it's going to lead to a

00:14:37.620 --> 00:14:43.380
cascading effect, which, honestly, after 16 years has never happened. Because we had this exact same

00:14:43.380 --> 00:14:47.840
argument when we were adding true and false as keywords, right? Like, this is long running,

00:14:47.840 --> 00:14:52.700
like, people did not like the idea of making keywords out of true and false way back in the day,

00:14:52.700 --> 00:14:55.780
and the world's not falling over. So...

00:14:55.780 --> 00:14:56.560
I'm so glad they are.

00:14:56.560 --> 00:14:59.660
Yeah, exactly. Everyone's happy with that. But once again, it's one of those initial reactions

00:14:59.660 --> 00:15:03.660
is like, no, we really don't need this. This is unnecessary. We can keep using zero and one.

00:15:03.660 --> 00:15:08.020
Python has existed without it for this long. Why do we have to go screw with something that's

00:15:08.020 --> 00:15:13.080
working great? To, oh, yeah, this is beneficial. It's a lot of, over the years,

00:15:13.620 --> 00:15:20.480
trusting Guido's design sense. And a lot of people just don't have that history of realizing that this

00:15:20.480 --> 00:15:27.080
stuff's come and gone before. I mean, history is cyclical. And it just, we're just more connected,

00:15:27.080 --> 00:15:32.100
and the community is literally just bigger. And it seems like we're constantly hitting, like,

00:15:32.100 --> 00:15:35.220
exponential growth. I don't have numbers to back that up, but it sure seems like it sometimes,

00:15:35.220 --> 00:15:41.440
which just leads to that many more people suddenly coming in and just feeling the need to comment and not

00:15:41.440 --> 00:15:45.980
only provide feedback, but provide negative feedback in a non-constructive fashion. And

00:15:45.980 --> 00:15:53.040
it's exhausting. And especially when there's one Guido or one PEP author and the whole community.

00:15:53.040 --> 00:15:57.620
And if the community is growing exponentially, it's not shrink, it's not scaling the number of people

00:15:57.620 --> 00:16:00.820
who are proposing something to the number of people who are coming and leaving comments.

00:16:00.820 --> 00:16:03.400
And so, it can feel a little crushing, honestly.

00:16:03.400 --> 00:16:09.000
Yeah, my visual thing when I heard about all this and Guido and all this, I felt, I was just like,

00:16:09.000 --> 00:16:13.420
okay, there's like this huge press of all this community pressure. And there's like a diamond

00:16:13.420 --> 00:16:19.320
at the end, like a sharp diamond, just focusing it all like right onto him. And I don't fault him at

00:16:19.320 --> 00:16:24.180
all for just going, I just need to spread this out. The PSI is too high. Like the pressure is too high.

00:16:24.180 --> 00:16:26.640
I can't take it all. It's going to make me unhappy, right?

00:16:26.760 --> 00:16:30.720
Yeah. And I mean, the thing that people have to remember, it's not like Guido had staff,

00:16:30.720 --> 00:16:37.000
right? It's not like, oh yeah, Guido can hand this off to his communication manager to handle the

00:16:37.000 --> 00:16:40.700
feedback or a PM who's going to take the feedback from the community and sort through and go like,

00:16:40.700 --> 00:16:46.140
okay, that person's just really upset and angry. That's just vitriol. That's not really providing

00:16:46.140 --> 00:16:49.000
constructive feedback. Oh, that actually is constructive feedback. We should handle it a lot.

00:16:49.340 --> 00:16:54.880
We're not staffed. We're not a company. We're a volunteer run group of people. And so, yeah,

00:16:54.880 --> 00:16:58.780
it's very much, as you said, it's a lot of pressure pushing down to a single point.

00:16:58.780 --> 00:17:05.540
And that's a lot. And in the end, he basically snapped or not snapped. That sounds overnight. He

00:17:05.540 --> 00:17:06.300
basically broke.

00:17:06.300 --> 00:17:10.500
He made a, yeah, he made a decision that that was enough. He'd had enough.

00:17:10.640 --> 00:17:12.040
Yeah, exactly. For sure.

00:17:12.040 --> 00:17:18.140
On July 12th, after all this, Guido sent an email unannounced. No one knew it was coming. Not me,

00:17:18.140 --> 00:17:23.200
not single other core dev I've ever spoken to saying he's retiring. He was going to retire from

00:17:23.200 --> 00:17:27.220
being the Benelit Dictator for Life for Python. And it was going to take a permanent vacation

00:17:27.220 --> 00:17:32.080
because it's just like, I never want to have to go through this ever again. And I don't blame him.

00:17:32.080 --> 00:17:35.640
Yeah, I don't either. There's an interesting interview with him on the MIT

00:17:35.640 --> 00:17:41.180
artificial intelligence podcast, where it's, they actually talk a lot about the history and

00:17:41.180 --> 00:17:44.800
this kind of stuff. And you can, you know, like sort of hear his story and the timeline.

00:17:44.800 --> 00:17:46.820
He personally went through on that as well.

00:17:46.820 --> 00:17:53.720
This portion of Talk Python To Me is brought to you by Linode. Are you looking for hosting that's fast,

00:17:53.720 --> 00:17:58.420
simple, and incredibly affordable? Well, look past that bookstore and check out Linode at

00:17:58.420 --> 00:18:05.300
 talkpython.fm/Linode. That's L-I-N-O-D-E. Plans start at just $5 a month for a dedicated

00:18:05.300 --> 00:18:10.400
server with a gig of RAM. They have 10 data centers across the globe. So no matter where you are or

00:18:10.400 --> 00:18:14.660
where your users are, there's a data center for you. Whether you want to run a Python web app,

00:18:14.660 --> 00:18:19.800
host a private Git server, or just a file server, you'll get native SSDs on all the machines,

00:18:19.800 --> 00:18:25.280
a newly upgraded 200 gigabit network, 24 seven friendly support, even on holidays,

00:18:25.280 --> 00:18:28.860
and a seven day money back guarantee. Need a little help with your infrastructure?

00:18:28.860 --> 00:18:33.580
They even offer professional services to help you with architecture, migrations, and more.

00:18:33.840 --> 00:18:38.640
Do you want a dedicated server for free for the next four months? Just visit talkpython.fm

00:18:38.640 --> 00:18:39.600
slash Linode.

00:18:39.600 --> 00:18:46.760
If this is the end, you know, how much of the Python two versus three debate, do you think

00:18:46.760 --> 00:18:51.760
wore him down such that this was enough to make him go, fine, I'm done, instead of just go,

00:18:51.760 --> 00:18:53.520
well, that was a bad week or whatever?

00:18:53.520 --> 00:19:00.320
No, I don't think the two to three transition in the community really did it. That was very long and very low level,

00:19:00.320 --> 00:19:04.880
just continual over a decade. We'd all dealt with it. We've all seen that Python three,

00:19:04.880 --> 00:19:09.800
one in the end, and everyone's been happy with that and all that. It's just been long.

00:19:10.320 --> 00:19:17.680
I think it was really Guido had over time just been slowly scaling back his day-to-day involvement

00:19:17.680 --> 00:19:22.820
anyway because he realizes that someday he will have to retire for just because he's tired.

00:19:22.820 --> 00:19:27.440
Honestly, he could die. Who knows? It's just something we always had to plan for anyway.

00:19:28.240 --> 00:19:34.840
So, he was always scaling back his involvement and this just finally, I think I saw it. I mean,

00:19:34.840 --> 00:19:38.580
had you asked me before this happened when I thought he was going to retire, I would have said,

00:19:38.580 --> 00:19:44.280
yeah, based on how he looks and how he's feeling, not physically look, just how he looks in terms of

00:19:44.280 --> 00:19:49.080
his interactions and the way he's communicating and stuff, I would have said, yeah, I'd give it two or

00:19:49.080 --> 00:19:53.300
three more years before he says like, okay, let's start to work on a transition. But I think this

00:19:53.300 --> 00:20:02.220
hyper-accelerated it and made it a very clean and somewhat abrupt break to just like, okay,

00:20:02.220 --> 00:20:05.300
we're just going to deal with this now. Maybe it was better because it's like,

00:20:05.300 --> 00:20:09.600
this is how you're going to deal with it. You're going to deal with it now. Not like slowly ease

00:20:09.600 --> 00:20:13.960
into it, right? Yeah. Although funny enough, you say this is how we're going to deal with it was not

00:20:13.960 --> 00:20:18.780
really how it happened because if you go back and read his email, it's like, you're all going to figure

00:20:18.780 --> 00:20:22.200
out how to deal with it. I'm just stepping back. Good luck.

00:20:22.940 --> 00:20:27.120
I called the great Guido mic drop because he literally basically said like, I'm taking

00:20:27.120 --> 00:20:31.520
permanent vacation and I'm not going to dictate how you handle this. I don't want to. And if you

00:20:31.520 --> 00:20:35.980
know Guido, it makes sense that he would approach it this way that he wouldn't want to force anything

00:20:35.980 --> 00:20:42.360
upon people. But it did put everything in an interesting position on how to handle this very

00:20:42.360 --> 00:20:48.020
unique situation. Yeah, definitely unique. So maybe we can dig into that. Like it was,

00:20:48.220 --> 00:20:54.640
I'm not going to be the leader or decider of this community anymore. Figure it out, like you said.

00:20:54.640 --> 00:21:00.940
And so I guess that really started to take structure around PEP 8000, right? And that's where the

00:21:00.940 --> 00:21:03.400
potential options were gathered up.

00:21:03.400 --> 00:21:05.480
Well, that was honestly...

00:21:05.480 --> 00:21:06.320
Was that farther down?

00:21:06.520 --> 00:21:12.120
It took a little longer than that because first there were... We went through the five stages of

00:21:12.120 --> 00:21:18.620
grief, right? Like there was literal denials. Like, is this a weird joke? He said vacation.

00:21:18.620 --> 00:21:19.480
What's the date?

00:21:19.480 --> 00:21:23.700
Yeah. Well, yeah, exactly. He said vacation. He didn't say retirement. Does that mean he could

00:21:23.700 --> 00:21:31.120
come back? Could we maybe ask him to help make the decision? All this stuff. And I mean,

00:21:31.120 --> 00:21:35.740
like I emailed private... I mean, we'd email him and he'd go like, yeah, nope. I'm not kidding. And

00:21:35.740 --> 00:21:40.020
nope, I'm not making any decisions. I'll provide feedback where I think it's timely and appropriate,

00:21:40.020 --> 00:21:44.720
but otherwise I'm staying out of it. He basically really took a step back and just like, I'm not

00:21:44.720 --> 00:21:48.940
getting involved. I will provide suggestions if I think something would really make a difference.

00:21:48.940 --> 00:21:54.900
But I mean, really like he... I don't know if I could... He made more than five suggestions

00:21:54.900 --> 00:21:58.880
throughout the history of the whole process. So like he really stepped back. So yeah,

00:21:58.880 --> 00:22:03.360
so we went through all that and then we started to talk as a group, how are you going to handle

00:22:03.360 --> 00:22:08.800
this? How do we make this decision? How do we decide how we're going to decide even, right?

00:22:08.800 --> 00:22:13.100
It's a really odd situation to be dropped in where you have a preexisting group of people

00:22:13.100 --> 00:22:19.620
who had a very clear governance structure of there's Guido and that's it. Basically,

00:22:19.620 --> 00:22:24.680
we can come to our own agreements, but basically Guido always was the last resort, was the final

00:22:24.680 --> 00:22:32.000
decider, was the king of the seven kingdoms or queen. It was the way it was. And so it was very

00:22:32.000 --> 00:22:35.780
weird to suddenly go like, yeah, you have no leadership now. There's absolutely no one in

00:22:35.780 --> 00:22:41.600
charge. No one has any more rights than anyone else technically to make decisions, to say anything.

00:22:42.160 --> 00:22:47.920
it truly had to all come through consensus, which is dicey, right? Because you have to also remember,

00:22:47.920 --> 00:22:53.120
this is the same group of people who also had just gotten really riled up about Pup572,

00:22:53.120 --> 00:22:59.740
who are very passionate about this project, who all have opinions. And we're talking about a project that

00:22:59.740 --> 00:23:05.820
like for me, for instance, I've put 16 years of my life into this, right? So I'm deeply invested.

00:23:05.820 --> 00:23:12.200
Hundreds of thousands. Yeah. And millions of people, this is their job, right? Or they've

00:23:12.200 --> 00:23:15.980
built companies on it or they built products on it. I mean, there's, there's a lot at stake.

00:23:15.980 --> 00:23:20.820
Look at you, right? If I screw this up, suddenly poor Michael doesn't have a great podcast to talk

00:23:20.820 --> 00:23:25.260
to and has his training that he does. And like, oh my God, I suddenly put one of my favorite podcasters

00:23:25.260 --> 00:23:27.380
out of work because I screwed this up, right?

00:23:27.380 --> 00:23:28.760
Yeah, no pressure.

00:23:28.940 --> 00:23:33.500
No pressure. It was a heavy, it was a heavy responsibility, but it was also a heavy one

00:23:33.500 --> 00:23:39.060
with no clear guidance on how to handle it because no one was in charge. It was really weird. It was

00:23:39.060 --> 00:23:44.260
pretty much almost the epitome of anarchy. It was just a bunch of people who happened to know each

00:23:44.260 --> 00:23:46.680
other having to figure out how to run themselves.

00:23:46.680 --> 00:23:50.020
It's almost like there was a country in the government, the leader just stepped down or

00:23:50.020 --> 00:23:53.540
something, right? There's all these people that are still, they're committed to being there.

00:23:53.540 --> 00:23:55.820
They live there or whatever. Now, what are they going to do, right?

00:23:55.900 --> 00:23:58.900
Yeah, exactly. It's like we were a little country and suddenly the government just said,

00:23:58.900 --> 00:24:00.480
yeah, we're just allowing ourselves. Good luck. Bye.

00:24:00.480 --> 00:24:08.080
Okay. How do you rebuild a government from scratch? I mean, who gets to ever do that?

00:24:08.080 --> 00:24:11.360
And a lot of people don't because it turns out it's kind of hard.

00:24:11.360 --> 00:24:16.680
Yeah. Yeah. It's definitely hard. I guess maybe we could talk about some of the options. I thought,

00:24:16.680 --> 00:24:22.500
I know we spoke a little bit on Python bytes long ago, probably August or late July about this.

00:24:23.040 --> 00:24:26.120
Let's maybe just go through some of the proposals that people had.

00:24:26.120 --> 00:24:31.420
Yeah. So basically, while we were actively discussing how we were going to handle voting,

00:24:31.420 --> 00:24:36.020
we started to more or less quickly solidify that we're going to handle it through the PEP process

00:24:36.020 --> 00:24:39.940
because that's what we were all familiar with. Things would have to be written down and very

00:24:39.940 --> 00:24:44.580
clearly defined because this was basically going to be our version of a charter or constitution or

00:24:44.580 --> 00:24:49.040
basically our set of rules and laws of how we were going to run the project. So that quickly at

00:24:49.040 --> 00:24:55.780
these got settled. And in the end, we ended up with six options. One was PEP 8011. And by the way,

00:24:55.780 --> 00:25:05.640
all of these PEPs start from 8010 and stay within the 8010s range. So 8011 was a proposal to have

00:25:05.640 --> 00:25:10.860
a trio of Pythonistas. So basically that was taking Guido and split it up into three ways,

00:25:10.860 --> 00:25:11.760
more or less.

00:25:11.920 --> 00:25:17.720
Were they going to have like a voting bloc style where they all were kind of co-equal or was it

00:25:17.720 --> 00:25:21.980
this person's going to handle this aspect and that person's going to handle that aspect?

00:25:21.980 --> 00:25:26.460
It was very, basically, we were going to elect three people and it was, they were going to act as if

00:25:26.460 --> 00:25:31.000
they were unified as a single dictator. So it was very much just-

00:25:31.000 --> 00:25:31.260
I see.

00:25:31.500 --> 00:25:36.440
Single responsibilities split into thirds and basically had to agree, at least two out of the

00:25:36.440 --> 00:25:38.140
three had to agree to make anything happen.

00:25:38.140 --> 00:25:38.740
Yep. Okay.

00:25:38.740 --> 00:25:42.760
To compare that to actually 8010, which I accidentally skipped, which was basically,

00:25:42.760 --> 00:25:47.100
let's have an elected dictator and a single individual. That was what you commented about

00:25:47.100 --> 00:25:48.500
where my name got tossed about.

00:25:48.500 --> 00:25:51.340
Exactly. Guido stepped down, who's going to take his place?

00:25:51.340 --> 00:25:54.760
Yeah. And that one was a little interesting from the perspective of some people said like,

00:25:54.760 --> 00:26:01.300
we really can't have a discussion about this, that PEP and that model without knowing who we

00:26:01.300 --> 00:26:06.060
are specifically talking about. Right? So some people are like, I'm not even willing to discuss

00:26:06.060 --> 00:26:10.880
this unless we have a name attached to it, because it's really going to be a vote for that person.

00:26:10.880 --> 00:26:14.260
And other people are like, no, it shouldn't be. It should really be about whether or not we like

00:26:14.260 --> 00:26:19.260
this model and then we will just all choose who we think should handle that. And if you happen to

00:26:19.260 --> 00:26:23.260
think no one, that's fine, but we don't have to have it specifically attached to a person.

00:26:23.260 --> 00:26:28.020
It honestly, very quickly though, became very clear that people in general did not like that model.

00:26:28.020 --> 00:26:34.440
So it was there kind of to fill and there was some initial interest in it, but it really didn't

00:26:34.440 --> 00:26:41.320
stay a top contender for very long. In my opinion, the trio one did, I will say PEP 8012 was a

00:26:41.320 --> 00:26:49.220
community governance model. That one was basically following rust model, if I remember correctly.

00:26:49.220 --> 00:26:49.820
Yeah, exactly.

00:26:49.820 --> 00:26:57.820
And that's very much basically people form working groups and the working groups make decisions and

00:26:57.820 --> 00:27:02.460
there are ways to form working and the PEP specified how working groups would be formed and how they

00:27:02.460 --> 00:27:08.580
would be potentially dissolved. And, but basically everyone's equal footing. People could create work

00:27:08.580 --> 00:27:15.120
groups as necessary. People would get voted into adding to working groups and then those working

00:27:15.120 --> 00:27:19.680
groups would work together to reach conclusions for things. That I believe came in actually second

00:27:19.680 --> 00:27:23.180
in all the voting in the end. Well, the trio selection was third.

00:27:23.180 --> 00:27:23.580
Okay.

00:27:23.580 --> 00:27:31.680
Pep 8013, external governance model. That one was somewhat interesting, but actually never really

00:27:31.680 --> 00:27:39.260
caught on with anyone. That one was basically saying what we should do is almost run Python as a company

00:27:39.260 --> 00:27:46.060
where we have some people from outside the project act as almost our, our VPs. And we just go up and

00:27:46.060 --> 00:27:50.340
report to our VPs about what's going on. Like, here's a PEP. I'm going to give you the quick

00:27:50.340 --> 00:27:54.240
presentation on it. They would ask questions and they would say, yep, we're going to do it. Or they

00:27:54.240 --> 00:27:56.560
would say, nope, you need to go fix these things.

00:27:56.560 --> 00:27:57.960
Kind of like a board of directors.

00:27:58.160 --> 00:28:03.740
Yeah, exactly. It was very much a, yeah, you come forward with your proposal. They'll look at it

00:28:03.740 --> 00:28:08.740
during your monthly meeting, sync up with them and they'll go, you got to change these things,

00:28:08.740 --> 00:28:12.580
these things, or yep. Okay. It's all good. And we'll take it and go for it. But the interesting

00:28:12.580 --> 00:28:20.560
was it was specifically required the members of this board to be not Python core developers to try to

00:28:20.560 --> 00:28:27.140
bring in basically unbiased viewpoint from outside the project. And honestly, I think a lot of core

00:28:27.140 --> 00:28:31.360
developers just didn't like that idea. They thought too much history and too much understanding how the

00:28:31.360 --> 00:28:35.920
project works and just potential disconnect from the project of the community would be too much.

00:28:35.920 --> 00:28:37.920
And it necessarily wouldn't lead to the right result.

00:28:37.920 --> 00:28:42.180
Yeah. The people making decisions, they don't have as much skin in the game, right? They don't have to

00:28:42.180 --> 00:28:46.140
live with it. They don't have to implement it. They just like it or don't like it.

00:28:46.140 --> 00:28:52.080
Yeah, exactly. Right. So it was one of these things that honestly, I just, it was an idea that got

00:28:52.080 --> 00:28:55.700
proposed, but I don't think it ever, ever really went anywhere.

00:28:56.120 --> 00:29:07.600
So the next one was 8014. That one was basically anarchy. And actually in the pep, Jack Jansen wrote it.

00:29:07.960 --> 00:29:11.860
He said he would have just used the term anarchy because it was technically accurate,

00:29:11.860 --> 00:29:16.300
but there's such negative connotations around the term that he didn't want to use that in the wording

00:29:16.300 --> 00:29:20.720
of the actual PEP. But it was basically just everyone's on equal footing. People can propose

00:29:20.720 --> 00:29:27.120
stuff. There would be a voting certification council kind of, where basically there would be a group of

00:29:27.120 --> 00:29:32.560
people who, when people wanted a PEP decided, for instance, they would call for a vote and people would

00:29:32.560 --> 00:29:37.520
vote. And that council would decide whether the vote passed or not, but they would decide not only

00:29:37.520 --> 00:29:43.060
based on numeric numbers, but also on who voted and who voted how. And it was potentially going to be

00:29:43.060 --> 00:29:48.700
open to the whole community or just core devs. It was basically after them to decide how they'd run the

00:29:48.700 --> 00:29:55.480
vote and make that final call of how that outcome really looked. So I think it was just basically too

00:29:55.480 --> 00:29:58.120
wishy-washy for a lot of people to go like, yeah, I want that.

00:29:58.120 --> 00:30:01.920
Yeah. Some of these juice sound kind of wishy-washy. It's like, well, that could be good or it could go

00:30:01.920 --> 00:30:06.800
really bad. And it depends who's here. And it just, I don't know. It just, it seems really vague and vague

00:30:06.800 --> 00:30:11.040
and like law governance kind of seems like a bad combination.

00:30:11.040 --> 00:30:15.960
Yeah. And so, I mean, the idea of like, let's not necessarily put people in the same position that

00:30:15.960 --> 00:30:22.360
Guido has put into, but I think developers being developers, we like structure. And I think there just

00:30:22.360 --> 00:30:23.860
wasn't quite enough structure for that to catch.

00:30:23.860 --> 00:30:24.400
Sure. Okay.

00:30:24.400 --> 00:30:31.200
The next one was 8015. That one, Organization of the Python Community, it was kind of a hybrid between

00:30:31.200 --> 00:30:35.520
let's do everything through working groups and let's do everything through a trio, but with a

00:30:35.520 --> 00:30:39.540
panel of five. But everything was basically going to be done through a more or less a vote.

00:30:39.540 --> 00:30:46.540
So it was another one of those that had ideas, but I think everyone viewed it as enough of a hybrid

00:30:46.540 --> 00:30:51.320
that it never quite caught the eye of people who liked the trio idea or who liked the working group idea.

00:30:51.320 --> 00:30:54.640
And honestly, if anything, I know from my, when I was thinking about it, I was like,

00:30:54.640 --> 00:30:58.880
I was thinking this was really going to be a vote splitter between those two.

00:30:58.880 --> 00:30:59.160
Yeah.

00:30:59.160 --> 00:31:03.960
Depending on what voting system we ended up choosing in the end, that was going to potentially hurt those

00:31:03.960 --> 00:31:04.540
other peps.

00:31:04.540 --> 00:31:05.400
Right.

00:31:05.400 --> 00:31:10.580
So it was there, but it never, I don't think once again, really caught on because it wasn't quite

00:31:10.580 --> 00:31:16.380
clearly as strongly positioned as like, this is how we're going to do it. And this is a easy way to

00:31:16.380 --> 00:31:23.260
explain it versus it has a panel or a board or whatever term, but it also has working groups

00:31:23.260 --> 00:31:28.480
and it's all been done through voting. So I just, I think people typically in all this kind of much

00:31:28.480 --> 00:31:33.380
like politics felt very strongly on one way or the other. And this was once again, too much of a hybrid

00:31:33.380 --> 00:31:33.940
to really catch it.

00:31:33.940 --> 00:31:36.780
Right. This middle ground. Yeah. It's a little too nuanced or whatever.

00:31:36.780 --> 00:31:41.280
Yeah. And then the last one, which was the one that ended up winning, it was 8,016.

00:31:41.740 --> 00:31:46.840
It's now actually known as PEP 13 and that's the steering council model. And basically what that

00:31:46.840 --> 00:31:55.520
did was it said, okay, we're going to choose a council of five people. And those five people are

00:31:55.520 --> 00:32:03.820
going to have basically absolute power, except for changing what's in PEP 13. And PEP 13 basically said

00:32:03.820 --> 00:32:08.880
they can make any decision. They make decisions in all the peps and all that stuff and basically

00:32:08.880 --> 00:32:14.180
decide how things happen, but they should always try to seek to do it through consensus. So it's,

00:32:14.180 --> 00:32:18.880
it's funny. It basically says short of what's written in PEP 13, the council has absolute power,

00:32:18.880 --> 00:32:20.840
but they should look to use it as little as possible.

00:32:20.840 --> 00:32:25.160
Right. I see. So they could theoretically take the steering council down and like change the model

00:32:25.160 --> 00:32:25.640
or something, right?

00:32:25.640 --> 00:32:29.920
Well, no, because that's actually specifying PEP 13 that they can't do that. So that's one of the

00:32:29.920 --> 00:32:34.720
things they can do. So PEP 13 very much is not, is not about necessarily specifying what powers the

00:32:34.720 --> 00:32:39.880
board has, is very much specifying how the board gets elected, how the council, sorry, gets elected

00:32:39.880 --> 00:32:46.620
and how the potential voters for the council get brought in. So the PEP is very much structured

00:32:46.620 --> 00:32:51.820
around the council can do almost anything except it can't dictate how the elections occur for the

00:32:51.820 --> 00:32:55.680
council. And they can't dictate how someone becomes a core developer and who's considered a core

00:32:55.680 --> 00:32:59.060
developer. And that's really what PEP 13 is focused around because otherwise,

00:32:59.060 --> 00:33:02.600
sort of keeps the few pieces in place to keep it on.

00:33:02.600 --> 00:33:05.880
Yeah. And the interesting thing was, is the way it was kind of structured initially,

00:33:05.880 --> 00:33:11.100
and it still is, is it was almost worded in a way of, I publicly said this when it was being

00:33:11.100 --> 00:33:15.240
discussed is this PEP was almost worded as if it was kicking the can down the road. If you know,

00:33:15.240 --> 00:33:19.180
this expression of basically we're going to elect a council that's going to choose how we're going

00:33:19.180 --> 00:33:23.040
to run the project. Because once again, it was, as it was worded is like they have absolute power,

00:33:23.040 --> 00:33:25.160
but they're not supposed to really use it. So it was really like, all right,

00:33:25.160 --> 00:33:29.620
are we going to do kind of more of a, are they going to act more like a trio or are they going

00:33:29.620 --> 00:33:33.720
to do more of a working group approach? And the PEP actually said they should look at the voting

00:33:33.720 --> 00:33:39.680
results of this overall thing and work with that to choose how to happen, how it should work.

00:33:39.680 --> 00:33:45.360
Now, I personally didn't like that approach because it's like, that's not really what's going to

00:33:45.360 --> 00:33:50.260
happen here. What's going to happen is you're going to elect a council that has power more or less

00:33:50.260 --> 00:33:55.100
like, like Guido, except if I had five ways and you're just asking them to please consider doing other

00:33:55.100 --> 00:33:59.000
things, but technically they don't have to do any of it. As long as they don't interfere with how

00:33:59.000 --> 00:34:04.020
core devs are chosen and who qualifies as a core dev and how the elections happen,

00:34:04.020 --> 00:34:08.660
they can basically do whatever they want. And so basically I was saying, you might as well just

00:34:08.660 --> 00:34:12.960
specify the trio because the hopefulness of that, I just didn't think it was actually going to happen.

00:34:12.960 --> 00:34:17.360
Yeah. So what's the difference between the steering council and the trio of Pythonistas? I mean,

00:34:17.360 --> 00:34:22.380
it feels like maybe the steering council just has more, but is there some other principal

00:34:22.380 --> 00:34:23.760
difference between those two models?

00:34:23.760 --> 00:34:28.220
From the top of my head, this is some of this information, luckily it's just completely left

00:34:28.220 --> 00:34:31.200
because it's no longer relevant. Now it's all historical interest.

00:34:31.200 --> 00:34:32.080
That's right.

00:34:32.080 --> 00:34:36.080
But for whatever, technically I don't, the election cycles are different. Like the trio,

00:34:36.080 --> 00:34:42.260
I think was going to be elected for longer and PEP 13 has the councils elected per release cycle.

00:34:42.260 --> 00:34:44.580
Okay. And right now that's every 18 months, right?

00:34:44.980 --> 00:34:50.620
Although this initial one's truncated because we have a release later this year and we all got elected

00:34:50.620 --> 00:34:55.060
starting in February. So this first inaugural group is going to be kind of truncated,

00:34:55.060 --> 00:34:59.880
but it was also brought up that pretty much every group that has a system like this,

00:34:59.880 --> 00:35:04.300
pretty much once you get on the council, chances are, unless you really screw up or you step down,

00:35:04.300 --> 00:35:09.100
you're just going to keep getting reelected because people are always happy with the status quo

00:35:09.100 --> 00:35:13.640
working much like people not wanting to add new syntax to Python. If the status quo works,

00:35:13.640 --> 00:35:17.580
why mess with a good thing? So I think everyone kind of went into it knowing that the first set

00:35:17.580 --> 00:35:20.440
of people who got elected will more or less continually be reelected.

00:35:20.440 --> 00:35:21.540
Yeah. They had a chance. Yeah.

00:35:21.540 --> 00:35:23.040
Sticking around for a long time.

00:35:23.040 --> 00:35:28.180
But yeah, I think it was more the fact that the steering council, PEP, very explicitly says,

00:35:28.180 --> 00:35:32.160
try to find consensus. Don't try to spring anything. Don't try to run as a dictator.

00:35:32.160 --> 00:35:36.980
Don't suddenly make big sweeping decisions. Try to talk to the group and try to work through it.

00:35:36.980 --> 00:35:43.240
But in terms of a last result backstop, the council's there as necessary. So I think that's

00:35:43.240 --> 00:35:45.320
really the difference. This is the spirit really behind it.

00:35:45.320 --> 00:35:49.720
Okay. Yeah. Interesting. Cool. That's the model that won, the steering council model.

00:35:49.720 --> 00:35:50.000
Yes.

00:35:50.000 --> 00:35:51.580
And we've had the elections.

00:35:51.580 --> 00:35:51.860
Yes.

00:35:51.860 --> 00:35:55.600
And we have Barry Warsaw. We have you on there. We have Carol Willing,

00:35:55.600 --> 00:36:01.140
Nick Coughlin, and it's really nice to see Guido is on there as well. That actually

00:36:01.140 --> 00:36:03.360
surprised me a little bit, but in a good way.

00:36:03.360 --> 00:36:08.340
Yeah. So actually, I'll admit Guido actually asked me if I thought it was a good idea personally. And I

00:36:08.340 --> 00:36:14.380
said, yes, because Guido said, he's always said he wanted to continue to contribute technical insights

00:36:14.380 --> 00:36:20.220
in his design sense, which I think we can all admit based on how Pythons turned out is very good.

00:36:20.620 --> 00:36:26.680
And actually, one of the reasons a lot of people didn't like the new dictator model that 8010 proposed,

00:36:26.680 --> 00:36:32.920
because a lot of people said that they didn't feel there was a single person other than Guido who had

00:36:32.920 --> 00:36:41.360
his design acumen, his technical insight and abilities, and his way to kind of project and manage the

00:36:41.360 --> 00:36:49.160
community as it were. So when Guido decided to do it, he said, like, I'd like to still run and be a part of

00:36:49.160 --> 00:36:53.600
it not because he necessarily likes the day to day like management bits, but because he still wanted

00:36:53.600 --> 00:36:58.400
to be able to contribute his technical insights and his design acumen. And I think it honestly also

00:36:58.400 --> 00:37:06.000
provided some transition and some validity to the council, right? Because while Guido is not running

00:37:06.000 --> 00:37:10.660
it as a dictator anymore, he's still participating in an acts of nice way to just smooth things over.

00:37:10.660 --> 00:37:14.760
And it's not just suddenly jarring like, all right, now the person who was involved is completely gone.

00:37:14.840 --> 00:37:18.980
It's like, no Guido's here. He's just sharing the load now across four other people.

00:37:18.980 --> 00:37:23.160
Yeah, exactly. He doesn't have to take all the work and especially he doesn't have to take the

00:37:23.160 --> 00:37:24.640
negative pressure out there, right?

00:37:24.640 --> 00:37:24.960
Yeah, exactly.

00:37:24.960 --> 00:37:26.220
So he can let you have that.

00:37:26.220 --> 00:37:27.200
Just kidding.

00:37:27.200 --> 00:37:29.760
That's good.

00:37:31.280 --> 00:37:35.340
This portion of Talk Python To Me is sponsored by Backlog from NewLab.

00:37:35.340 --> 00:37:40.480
Developers know the importance of organization and efficiency when it comes to collaborating on a team.

00:37:40.480 --> 00:37:44.880
And Backlog is the perfect collaborative task management software for your team.

00:37:44.880 --> 00:37:50.220
With Backlog, you can create tasks, track bugs, make changes, give feedback, and have team conversations

00:37:50.220 --> 00:37:51.420
right next to your code.

00:37:51.420 --> 00:37:54.640
You track progress with features like Gantt and burndown charts.

00:37:54.880 --> 00:37:58.040
You document your processes right alongside your wikis.

00:37:58.040 --> 00:38:01.760
You can integrate with the tools you use every day like Slack, Jira, and Google Sheets.

00:38:01.760 --> 00:38:05.520
You can automatically register issues from email or web form submissions.

00:38:05.520 --> 00:38:09.640
Take your work on the go using their top rated mobile apps available on Android and iOS.

00:38:09.640 --> 00:38:16.760
Try Backlog for your team for free for 30 days using our special URL at talkpython.fm/backlog.

00:38:16.760 --> 00:38:19.400
That's talkpython.fm/backlog.

00:38:21.400 --> 00:38:30.000
So how does it feel as a core dev, you know, inside that group now that this change has been made?

00:38:30.000 --> 00:38:31.400
Like, does it feel significantly different?

00:38:31.400 --> 00:38:32.680
Does it feel like kind of the same?

00:38:32.680 --> 00:38:37.000
And I guess it's worth also pointing out that from July until like two months ago,

00:38:37.000 --> 00:38:42.380
whenever this election was finalized, there was no progress on peps or other decisions.

00:38:42.380 --> 00:38:44.980
Or like, you had to first decide how to decide.

00:38:44.980 --> 00:38:47.920
And now you can start making decisions on stuff that's been backlogged, right?

00:38:47.920 --> 00:38:50.600
Yeah, so and only on top of that.

00:38:50.600 --> 00:38:51.800
So yeah, you're right.

00:38:51.800 --> 00:38:55.260
Basically, anything that Guido would have needed to make a decision on, which is pretty much

00:38:55.260 --> 00:39:00.060
anything in a PEP or anything fairly controversial, dev team felt split on.

00:39:00.060 --> 00:39:03.560
But where the status quo was not an option was completely put on hold.

00:39:03.560 --> 00:39:09.200
Peps came in, but no peps went past being open.

00:39:09.200 --> 00:39:09.780
Nothing.

00:39:09.780 --> 00:39:15.220
We froze completely from July 12th all the way until February 3rd, I think?

00:39:15.220 --> 00:39:16.340
3rd, 4th?

00:39:16.340 --> 00:39:16.940
Yeah.

00:39:16.940 --> 00:39:17.460
I can't remember.

00:39:17.460 --> 00:39:18.180
I was in New Zealand.

00:39:18.180 --> 00:39:20.700
So my day of the year was completely skewed.

00:39:20.700 --> 00:39:21.420
It wasn't the same day.

00:39:21.420 --> 00:39:24.880
It was not the same day that everyone else was dealing with when they got the results in

00:39:24.880 --> 00:39:25.760
and they were voting.

00:39:25.760 --> 00:39:27.580
So yeah.

00:39:27.580 --> 00:39:32.620
And then on top of that, what I also added to this was every so often, usually at the

00:39:32.620 --> 00:39:35.900
language summit, Guido would do what we called a PEP parade, where he would go through

00:39:35.900 --> 00:39:39.400
all the open peps and sometimes just make decisions right then and there that he just

00:39:39.400 --> 00:39:43.600
hadn't gotten through or had been putting off or for whatever reason, had open peps that

00:39:43.600 --> 00:39:44.740
we had not dealt with.

00:39:44.740 --> 00:39:49.080
And so at language summits, sometimes he would go like, okay, let's go through the list of

00:39:49.080 --> 00:39:49.440
open peps.

00:39:49.440 --> 00:39:53.340
Like, okay, let's keep working on that, reject that, accept that.

00:39:53.340 --> 00:39:57.000
And it's literally, we just go through the list and we just get basic updates and shut

00:39:57.000 --> 00:40:00.600
some of the, close some of them, accept some of them, and then just kind of kick some

00:40:00.600 --> 00:40:02.040
of them back up into happening.

00:40:02.040 --> 00:40:05.720
But we hadn't done that in the 2018 language summit.

00:40:05.720 --> 00:40:10.500
So not only did we have anything that came in, but we had everything that was still open

00:40:10.500 --> 00:40:11.020
prior.

00:40:11.020 --> 00:40:17.400
So actually, when we started, I did a quick count and there were 38 open peps when the

00:40:17.400 --> 00:40:19.340
steering council was formed for the first time.

00:40:19.340 --> 00:40:21.940
So we've had a backlog.

00:40:21.940 --> 00:40:28.220
But in terms of how it feels, I have a weekly meeting now with four of the people who I consider

00:40:28.220 --> 00:40:28.760
friends.

00:40:28.760 --> 00:40:29.740
So that's kind of cool.

00:40:30.100 --> 00:40:36.580
It allowed me to ask Microsoft to let me split my time more evenly and more in Python's

00:40:36.580 --> 00:40:39.680
favor than I had got to before, which was great.

00:40:39.680 --> 00:40:43.920
And so the workload honestly hasn't actually really felt like it's increased too much.

00:40:43.920 --> 00:40:48.280
Although honestly, a lot of stuff's been management stuff's been backing up over the last week,

00:40:48.280 --> 00:40:49.360
but that's here nor there.

00:40:49.880 --> 00:40:54.660
But yeah, otherwise, it basically just feels like a more concentrated conversation with

00:40:54.660 --> 00:40:57.820
Guido that I normally would have potentially had anyway with some other people.

00:40:57.820 --> 00:41:02.180
And I guess kind of hard to balance based on the amount of extra time I'm now getting things

00:41:02.180 --> 00:41:06.860
to work, the things that Microsoft's given me versus before and the added responsibility

00:41:06.860 --> 00:41:09.320
because there's technically added responsibility.

00:41:09.320 --> 00:41:13.900
But it also doesn't feel bad because like I trust Barry and Carol and Nick and obviously

00:41:13.900 --> 00:41:14.180
Guido.

00:41:14.180 --> 00:41:18.040
And so having us all just basically decide as a group over something versus just asking Guido

00:41:18.040 --> 00:41:19.260
and all going, okay, sure.

00:41:19.260 --> 00:41:21.600
Technically, it doesn't feel more stressful that way.

00:41:21.600 --> 00:41:23.200
Yeah, it's probably not so different.

00:41:23.200 --> 00:41:27.880
I mean, if Barry and you and Carol and Nick all went to Guido and said, hey, I know you're

00:41:27.880 --> 00:41:28.460
considering this.

00:41:28.460 --> 00:41:29.660
We all don't like it.

00:41:29.660 --> 00:41:32.340
He would probably take that strongly under consideration, right?

00:41:32.340 --> 00:41:33.100
Yeah, exactly.

00:41:33.100 --> 00:41:40.360
So if there was an all out like beforehand, the pre-July 12th days, yeah, the whole community

00:41:40.360 --> 00:41:42.320
just like, don't do it.

00:41:42.320 --> 00:41:43.200
This is not a good idea.

00:41:43.200 --> 00:41:44.080
Please don't do this.

00:41:44.080 --> 00:41:45.520
He really would have taken it under consideration.

00:41:45.520 --> 00:41:46.860
And now there's just five of us.

00:41:46.860 --> 00:41:47.180
Right.

00:41:47.180 --> 00:41:49.200
So that's the benevolent part.

00:41:49.200 --> 00:41:52.000
He wasn't like a violent dictator or something.

00:41:52.000 --> 00:41:52.980
He was a benevolent dictator.

00:41:52.980 --> 00:41:53.580
You could talk to him.

00:41:53.580 --> 00:41:57.600
I mean, to be perfectly honest, the hardest part to deal with this right now is we are

00:41:57.600 --> 00:42:00.980
all both the council and everyone who every other core developer.

00:42:00.980 --> 00:42:03.420
We're still just trying to figure out how all this functions.

00:42:03.420 --> 00:42:04.920
It's like very topical.

00:42:04.920 --> 00:42:09.980
Like literally before I came on to do this recording with you, Michael, is I opened up

00:42:09.980 --> 00:42:16.700
a proposal to set voting timelines in PEP 13 for new core devs and for changes to the

00:42:16.700 --> 00:42:17.180
PEP itself.

00:42:17.180 --> 00:42:19.440
And I thought it was innocuous.

00:42:19.440 --> 00:42:24.120
It was specifying we're going to leave votes open for one week for new core devs.

00:42:24.120 --> 00:42:27.960
And we're going to leave votes open for two weeks for any changes to PEP 13.

00:42:27.960 --> 00:42:28.740
That was it.

00:42:28.960 --> 00:42:30.480
The council did think it was easy.

00:42:30.480 --> 00:42:31.480
The council thought it was simple.

00:42:31.480 --> 00:42:35.900
And then right now we're having an active conversation like, well, okay, when we're proposing changes

00:42:35.900 --> 00:42:36.520
to this PEP.

00:42:36.520 --> 00:42:40.240
And I did it as one because in my mind, it's just specifying timelines.

00:42:40.240 --> 00:42:45.300
So it was a single change versus, oh, this is one proposal for one timeline and one proposal

00:42:45.300 --> 00:42:46.260
for another timeline.

00:42:46.500 --> 00:42:49.740
But it's led to like, hey, you didn't talk to us about this.

00:42:49.740 --> 00:42:51.640
Why are you doing two at once?

00:42:51.640 --> 00:42:54.600
Just all this stuff that we just never really had to think about before.

00:42:54.600 --> 00:42:57.300
Because before it would have just been, we just did it and it was over.

00:42:57.300 --> 00:43:02.080
But now that we're trying to do this more consensus based and, but we also don't know where the

00:43:02.080 --> 00:43:06.780
line of, do we really need to bother Python development team with everything?

00:43:06.780 --> 00:43:07.900
We don't know quite.

00:43:07.900 --> 00:43:09.580
We're still filling out like, where's the line?

00:43:09.700 --> 00:43:14.800
Where do we bring in the whole team versus let's just get it done and let's not bother

00:43:14.800 --> 00:43:15.160
everyone.

00:43:15.160 --> 00:43:18.560
And everyone's still feeling this whole situation out.

00:43:18.560 --> 00:43:24.440
So that's probably the biggest difference is just, we before this just innately kind of

00:43:24.440 --> 00:43:28.320
just knew how things ran and how things worked and when we should and shouldn't do things.

00:43:28.320 --> 00:43:31.960
And now it's kind of more of an open, okay, I'm not quite sure how to have the situation.

00:43:31.960 --> 00:43:33.460
I'm going to try it and we'll see what happens.

00:43:33.460 --> 00:43:36.140
And some people are happy and some aren't.

00:43:36.140 --> 00:43:38.960
Luckily, everyone's being very nice about all this, but we're, we're.

00:43:39.080 --> 00:43:40.800
It's like when you move in with someone, right?

00:43:40.800 --> 00:43:42.460
There's these things that come up.

00:43:42.460 --> 00:43:43.100
You have no idea.

00:43:43.100 --> 00:43:45.520
Like, I didn't know you left the dishes out all night.

00:43:45.520 --> 00:43:46.360
I always do them.

00:43:46.360 --> 00:43:47.340
I can't believe I wake up.

00:43:47.340 --> 00:43:48.280
Like, wait a minute.

00:43:48.280 --> 00:43:48.860
That was a thing.

00:43:48.860 --> 00:43:50.560
I didn't even know this was a thing, right?

00:43:50.560 --> 00:43:51.660
Just all these surprises, right?

00:43:51.660 --> 00:43:54.840
And then you quickly learn about which ones you can live with and which ones you really

00:43:54.840 --> 00:43:57.920
are going to have to work with the other person to change because it just drives you

00:43:57.920 --> 00:43:58.240
bonkers.

00:43:58.240 --> 00:43:59.240
Marriage.

00:43:59.240 --> 00:44:01.120
So, yeah.

00:44:01.120 --> 00:44:07.920
So it's an ongoing, it's an ongoing conversation really between the council and the core devs about

00:44:07.920 --> 00:44:12.240
how we want to make this situation work and how best to handle things.

00:44:12.240 --> 00:44:16.480
Because we honestly, a lot of this is brand, brand new and it still is.

00:44:16.480 --> 00:44:17.080
Yeah, sure.

00:44:17.080 --> 00:44:19.320
You're optimistic about it in the end though?

00:44:19.320 --> 00:44:19.680
Yeah.

00:44:19.780 --> 00:44:26.080
I mean, if you look at it, we've gone through, I think the vast majority of the open peps

00:44:26.080 --> 00:44:31.340
have now either been closed because they were rejected or we deferred them because they were

00:44:31.340 --> 00:44:32.280
just sitting there incomplete.

00:44:32.280 --> 00:44:35.980
Or we've been finding BDFL delegates.

00:44:35.980 --> 00:44:40.420
We kept the term for finding people who we were going to delegate the decision of a PEP to.

00:44:41.220 --> 00:44:46.040
Or the steering council has decided that if the steering council ever makes a decision,

00:44:46.040 --> 00:44:49.040
one of us will be the point person, but we'll decide as a group.

00:44:49.040 --> 00:44:53.200
Unless it's very specifically, we're specifically choosing an individual for a reason like Guido

00:44:53.200 --> 00:44:54.960
on some typing peps.

00:44:54.960 --> 00:44:56.300
It's just going to be Guido.

00:44:56.300 --> 00:45:00.520
He's not going to need to consult the rest of us because Guido is the expert and has a very specific...

00:45:00.520 --> 00:45:01.400
That's his main focus.

00:45:01.400 --> 00:45:03.960
His focus and has a vision and we trust him on that.

00:45:03.960 --> 00:45:08.060
So he doesn't need to consult with the rest of us on how to handle typing peps.

00:45:08.060 --> 00:45:12.960
But like two peps just the other day, I assigned to myself as the delegate, but it specifically

00:45:12.960 --> 00:45:16.480
says Brett Cannon in parentheses on behalf of the steering council.

00:45:16.480 --> 00:45:18.840
But yeah, I mean, otherwise it seems to be going well.

00:45:18.840 --> 00:45:23.740
As I said, I think it's really just at this point feeling out how, what the balance is in

00:45:23.740 --> 00:45:29.480
terms of what the steering council should do on its own and be self-driving versus getting

00:45:29.480 --> 00:45:36.920
feedback and direction from the core team versus when we should just make decisions versus

00:45:36.920 --> 00:45:39.340
consult and just where are the lines?

00:45:39.340 --> 00:45:40.120
Where's the balance?

00:45:40.120 --> 00:45:41.600
What's everyone happy with?

00:45:41.600 --> 00:45:44.600
And but otherwise, yeah, I think it's good.

00:45:44.600 --> 00:45:45.100
It's stable.

00:45:45.100 --> 00:45:50.900
It puts in place a mechanism to make sure there is always basically five people in charge, which

00:45:50.900 --> 00:45:56.340
helps give some form of stability that I think was really critical that we never really,

00:45:56.560 --> 00:46:00.200
we kind of all thought about in the back of our head about Guido always talking, joking

00:46:00.200 --> 00:46:03.820
about his retirement, but never really took too seriously because we figured it would be

00:46:03.820 --> 00:46:08.580
a slow control transition versus a more abrupt get it solved in the next six months transition.

00:46:08.580 --> 00:46:08.920
Yeah.

00:46:08.920 --> 00:46:13.700
Otherwise, yeah, I think it actually puts us on better footing because as I said, yeah, because

00:46:13.700 --> 00:46:17.740
now there's an explicit mechanism on how to always make sure there's always five people

00:46:17.740 --> 00:46:21.760
around to be in charge of the language and to make sure that it's functioning.

00:46:21.760 --> 00:46:22.040
Right.

00:46:22.040 --> 00:46:22.380
Yeah.

00:46:22.380 --> 00:46:25.140
And with five, there's probably always going to be some continuity, right?

00:46:25.140 --> 00:46:27.600
Like you won't have the council overthrown.

00:46:27.600 --> 00:46:29.640
It will be unlikely that that happens.

00:46:29.640 --> 00:46:32.000
I would be a little shocked.

00:46:32.000 --> 00:46:38.540
We released the voting numbers and there were, once again, it feels like such a humble brag,

00:46:38.540 --> 00:46:43.660
but Guido and I both got voted fairly high, fairly quickly, but everyone across the board

00:46:43.660 --> 00:46:45.000
got pretty good numbers.

00:46:45.240 --> 00:46:51.300
So I don't think, I feel like the spectrum of vote counts, it doesn't look like all of

00:46:51.300 --> 00:46:53.540
us like barely squeaked in compared to anyone else.

00:46:53.540 --> 00:46:58.120
So like if just one person had flipped their votes, it would have been a completely different

00:46:58.120 --> 00:46:58.560
outcome.

00:46:58.560 --> 00:47:03.260
So I think there would definitely, there'll definitely be stability in transitions of certain

00:47:03.260 --> 00:47:05.020
people consistently making it through.

00:47:05.020 --> 00:47:09.540
And once again, I suspect all five of us have a decent chance of being reelected if we chose

00:47:09.540 --> 00:47:13.400
to, just because once again, if people decide the status quo works out and we, as we work

00:47:13.400 --> 00:47:17.500
out the, feel out these kinks and how people want to handle things, I think as long as

00:47:17.500 --> 00:47:21.860
we don't step on anyone's toes and make anyone feel really marginalized and like the core team

00:47:21.860 --> 00:47:23.100
doesn't have their voice being heard.

00:47:23.100 --> 00:47:26.700
Hopefully they're just going to be happy and just like, all right, just keep doing what

00:47:26.700 --> 00:47:28.640
you're doing and won't be an issue.

00:47:28.640 --> 00:47:28.900
Yeah.

00:47:28.900 --> 00:47:32.700
So like if like for a three, nine, you guys come out and say, we've decided to make a

00:47:32.700 --> 00:47:36.600
Python a statically typed language and we'll have interfaces and all that, like that

00:47:36.600 --> 00:47:38.460
may cause some ruffled feathers, but.

00:47:38.460 --> 00:47:38.760
Yes.

00:47:38.760 --> 00:47:43.000
And actually there is a way to recall the entire, to recall individuals or the council.

00:47:43.380 --> 00:47:43.960
in PEP 13.

00:47:43.960 --> 00:47:46.360
So there is a mechanism to basically.

00:47:46.360 --> 00:47:46.880
Interesting.

00:47:46.880 --> 00:47:48.540
Pull the lever and eject us.

00:47:48.540 --> 00:47:52.840
I don't see that happening because Lord knows none of us want that for Python either.

00:47:52.840 --> 00:47:55.140
So yeah, no, I think it's going to work out well.

00:47:55.140 --> 00:47:58.960
It's just a matter of, as I said, just figuring things out.

00:47:58.960 --> 00:48:03.980
Ask me again in a year and then I could probably give you a bit more definitive answer, but I'm

00:48:03.980 --> 00:48:05.960
very optimistic and I, and it's not even cautious.

00:48:05.960 --> 00:48:07.480
I'm just flat out optimistic.

00:48:07.480 --> 00:48:08.120
Yeah, that's great.

00:48:08.120 --> 00:48:09.060
I am as well.

00:48:09.120 --> 00:48:13.840
I mean, there was a lot of uncertainty in August and September, but now it feels like,

00:48:13.840 --> 00:48:19.140
well, the people that were generally running it, the core devs who are doing the heavy lifting

00:48:19.140 --> 00:48:20.260
are kind of still doing that.

00:48:20.260 --> 00:48:20.460
Right.

00:48:20.500 --> 00:48:24.740
And people who are well-known in the community are kind of making the decision.

00:48:24.740 --> 00:48:27.500
So yeah, I mean, the day-to-day never even stopped, right?

00:48:27.500 --> 00:48:30.080
Even on July 12th, people were still committing.

00:48:30.080 --> 00:48:36.500
I think the day-to-day changes and PRs and issue closing and all that stuff, that never,

00:48:36.500 --> 00:48:37.360
ever stopped.

00:48:37.680 --> 00:48:41.660
So that day-to-day definitely was never, never threatened and really an issue.

00:48:41.660 --> 00:48:42.760
So yeah.

00:48:42.760 --> 00:48:43.100
Yeah.

00:48:43.100 --> 00:48:43.420
Cool.

00:48:43.420 --> 00:48:48.260
So one thing I did want to ask you about is Python's been growing like crazy and it's been

00:48:48.260 --> 00:48:53.500
bringing people from different areas and its growth in sort of corporate development world

00:48:53.500 --> 00:48:56.520
is certainly seems like it's growing.

00:48:56.920 --> 00:49:00.520
And there's a lot of folks who are coming in and, you know, Peter Wang, who was one of

00:49:00.520 --> 00:49:04.400
the potential people to be in the election, one of the candidates, I guess you would call

00:49:04.400 --> 00:49:05.880
him for the steering council.

00:49:05.880 --> 00:49:11.320
He was on the show 198 and he had some really interesting thoughts that having a lot of these

00:49:11.320 --> 00:49:16.080
corporate developers that are used to working with say Oracle or Microsoft or someone who

00:49:16.080 --> 00:49:21.160
they're paying and then their role is to work with the tools and then maybe ask for features

00:49:21.160 --> 00:49:24.000
or give feedback because they have this commercial relationship.

00:49:24.000 --> 00:49:30.540
A lot of them may be bringing like that mentality to interacting with the core devs and the Python

00:49:30.540 --> 00:49:30.920
community.

00:49:30.920 --> 00:49:34.200
And he's, he put out the idea that maybe that's going to change.

00:49:34.200 --> 00:49:39.640
It's going to put different kinds of pressure and maybe a mismatch of expectations on these

00:49:39.640 --> 00:49:40.100
interactions.

00:49:40.100 --> 00:49:40.660
What do you think?

00:49:40.660 --> 00:49:41.500
Are you concerned?

00:49:41.500 --> 00:49:42.040
Do you think it's okay?

00:49:42.040 --> 00:49:45.220
I'm not concerned just because I haven't seen it yet.

00:49:45.220 --> 00:49:45.500
Okay.

00:49:45.500 --> 00:49:46.160
That's good to hear.

00:49:46.160 --> 00:49:51.860
I've not seen any new corporate onslaught of suddenly corporations coming in and saying,

00:49:51.860 --> 00:49:52.460
I want this.

00:49:52.460 --> 00:49:53.140
I want that.

00:49:53.660 --> 00:49:58.520
I mean, the closest thing I can think of that's even on that vein is VX works has been

00:49:58.520 --> 00:50:01.800
working on adding Python to support to the real-time operating system.

00:50:01.800 --> 00:50:06.200
But they came in and just said like, okay, hey, we want to add Python support to VX works.

00:50:06.200 --> 00:50:08.620
We have some patches we need to make Python work.

00:50:08.620 --> 00:50:12.120
What can we do to try to make it an official supported thing?

00:50:12.460 --> 00:50:14.460
And we pointed them to the PEP.

00:50:14.460 --> 00:50:18.520
I can't remember the number of what it takes to be an officially supported platform.

00:50:18.520 --> 00:50:22.800
And that honestly, probably what's best is if you have patches that just make things function

00:50:22.800 --> 00:50:23.380
better.

00:50:23.380 --> 00:50:24.300
We'll take those.

00:50:24.300 --> 00:50:27.220
But if they're very VX works specific, we'll probably just ask you to maintain your own

00:50:27.220 --> 00:50:27.780
patch set.

00:50:27.780 --> 00:50:28.800
But that was it.

00:50:28.800 --> 00:50:34.100
They very much came in and were very inclusionary and not making demands like, we are this company

00:50:34.100 --> 00:50:36.780
and we want this and you should make this happen.

00:50:36.780 --> 00:50:39.140
Like some users can be.

00:50:39.140 --> 00:50:39.380
Yeah.

00:50:39.380 --> 00:50:42.060
His thought was more not in that realm.

00:50:42.060 --> 00:50:44.120
Like I can certainly see a good relationship there.

00:50:44.120 --> 00:50:48.080
It was more like there's a person who is sort of a nine to five developer.

00:50:48.080 --> 00:50:49.240
They're not super passionate.

00:50:49.240 --> 00:50:51.960
They were doing Java, but then they got moved onto this other project.

00:50:51.960 --> 00:50:53.660
And oh, it happened to have been done in Python.

00:50:53.660 --> 00:50:54.720
And maybe it's Python 2.

00:50:54.720 --> 00:50:56.880
And it's kind of old and has these problems.

00:50:56.880 --> 00:51:00.560
And they didn't really choose Python, but they have to make it work because they were told

00:51:00.560 --> 00:51:01.500
they have to make it work.

00:51:01.500 --> 00:51:05.400
And now you support the package that's in the way of their thing working.

00:51:05.400 --> 00:51:09.060
And so you receive, you know, sort of that disconnect there.

00:51:09.060 --> 00:51:09.440
Yeah.

00:51:09.440 --> 00:51:14.820
So that would be more at the community level, I would argue, though, not at the core dev slash

00:51:14.820 --> 00:51:15.640
council level.

00:51:15.640 --> 00:51:16.700
So like.

00:51:16.700 --> 00:51:17.280
Yeah, yeah, of course.

00:51:17.280 --> 00:51:17.680
Yeah.

00:51:17.680 --> 00:51:20.940
So I personally haven't bumped up against that.

00:51:20.940 --> 00:51:25.880
But the other thing I would say is, is Python's been successful at the corporate level for

00:51:25.880 --> 00:51:27.500
quite some time, I would argue.

00:51:27.500 --> 00:51:28.500
Right.

00:51:28.500 --> 00:51:30.340
It's not like Instagram showed up yesterday.

00:51:30.340 --> 00:51:35.100
And Instagram is probably one of the largest single Python applications in terms of volume

00:51:35.100 --> 00:51:36.840
of users out there.

00:51:36.840 --> 00:51:42.480
So I don't think it's necessarily any different than any other growth we've seen in the community.

00:51:42.480 --> 00:51:49.260
I mean, from my perspective on the Python extension of VS Code, for instance, I do see somewhat

00:51:49.260 --> 00:51:51.880
uptick in terms of people learning.

00:51:51.880 --> 00:51:57.940
And I definitely see that as increasing over the last year and a half since I've been leading

00:51:57.940 --> 00:51:58.420
that team.

00:51:58.420 --> 00:52:01.960
But I haven't seen a shift in something like all these corporate people coming like Google

00:52:01.960 --> 00:52:04.260
without this, I can't use this.

00:52:04.260 --> 00:52:04.940
Yeah, yeah.

00:52:04.940 --> 00:52:05.540
All right.

00:52:05.540 --> 00:52:05.940
That's good.

00:52:06.080 --> 00:52:13.360
But I do see where I have seen a feeling of corporations and just the general enterprise

00:52:13.360 --> 00:52:17.980
world coming in saying like, okay, what Python, we now really rely on Python.

00:52:17.980 --> 00:52:20.820
This isn't just some little side thing that we rely on.

00:52:20.820 --> 00:52:24.440
Like, we're billions of dollars in kind of relying on.

00:52:25.020 --> 00:52:26.120
What are we going to do?

00:52:26.120 --> 00:52:32.260
Because something I think a lot of people really don't realize is if you look at the

00:52:32.260 --> 00:52:36.660
popular languages out there, and I know you can choose whatever scale you want, right?

00:52:36.660 --> 00:52:38.060
Python's always in the top five now.

00:52:38.060 --> 00:52:41.580
Like, I do not see anything anymore that puts us at six.

00:52:41.580 --> 00:52:42.840
We're always key on five.

00:52:42.840 --> 00:52:45.260
And honestly, I'm seeing more and more where we're in the top three.

00:52:45.960 --> 00:52:49.480
But regardless of which of those top five languages you choose, we're consistently the

00:52:49.480 --> 00:52:52.160
only language that is fully volunteer run, right?

00:52:52.160 --> 00:52:58.500
Like, JavaScript is run by a committee that is staffed by people paid to work on that committee

00:52:58.500 --> 00:53:02.460
and on JavaScript by major corporations, usually browser vendors.

00:53:02.460 --> 00:53:04.420
C++, same thing.

00:53:04.420 --> 00:53:09.800
Companies that really heavily rely on C++ and care enough that they will employ LLVM and GCC

00:53:09.800 --> 00:53:13.100
developers to get their compilers to run faster.

00:53:13.100 --> 00:53:15.480
PHP's got Xen and they've got stuff.

00:53:15.480 --> 00:53:16.940
I mean, the list goes on.

00:53:16.940 --> 00:53:17.760
Java's got Oracle.

00:53:17.760 --> 00:53:23.300
I mean, we are the only one at that level that is completely run by a group of volunteers.

00:53:23.300 --> 00:53:25.700
Even Rust, right, is backed by Mozilla.

00:53:25.700 --> 00:53:28.040
And that's very much a community-run project.

00:53:28.040 --> 00:53:31.180
But they still have the backstop of Mozilla.

00:53:31.180 --> 00:53:33.080
Python doesn't have that with anybody.

00:53:33.080 --> 00:53:37.980
I think that gives some corporations pause that like, well, okay, why does all the volunteers

00:53:37.980 --> 00:53:38.520
walk away?

00:53:38.520 --> 00:53:41.160
With Go, I know at least Google's there.

00:53:41.160 --> 00:53:44.640
And Google's so invested that unless Google tanks, Go's going to be around.

00:53:45.000 --> 00:53:46.320
Google's not about to tank.

00:53:46.320 --> 00:53:47.620
Same with Rust.

00:53:47.620 --> 00:53:49.080
Like, Mozilla's backing it.

00:53:49.080 --> 00:53:51.500
Mozilla's not about to go anywhere, even as a nonprofit.

00:53:51.500 --> 00:53:53.000
So that's in good hands.

00:53:53.000 --> 00:53:59.500
All those kind of languages have that kind of financial stopgap to make sure that nothing

00:53:59.500 --> 00:53:59.760
happens.

00:53:59.840 --> 00:54:02.060
Now, we have the PSF, and that's great.

00:54:02.060 --> 00:54:06.740
But it's still, Anna, you could argue that having that nonprofit is really what our backstop

00:54:06.740 --> 00:54:07.160
is.

00:54:07.160 --> 00:54:13.500
But the PSF has always perfectly kind of taken a light approach in terms of some of the core

00:54:13.500 --> 00:54:15.560
devs hoped and people in the community create the PSF.

00:54:15.560 --> 00:54:17.780
The PSF didn't create core devs, basically.

00:54:17.780 --> 00:54:18.180
Right.

00:54:18.360 --> 00:54:23.920
It's more there to support the legal mumbo jumbo and the trademarks and all that kind

00:54:23.920 --> 00:54:24.400
of stuff, right?

00:54:24.400 --> 00:54:29.680
It doesn't actually support you as this is the company that drives the tech.

00:54:29.680 --> 00:54:30.060
Yeah.

00:54:30.060 --> 00:54:32.360
It's not like the Mozilla Foundation in that regard.

00:54:32.360 --> 00:54:37.920
The PSF was, yeah, very much created to handle the legal holdings and issues for Python.

00:54:37.920 --> 00:54:40.960
And then it kind of grew into this big driver of the community.

00:54:40.960 --> 00:54:45.020
But it's purposely always been kept at arm's length from the development team because they

00:54:45.020 --> 00:54:48.100
didn't want no politics ever came into the actual development language.

00:54:48.100 --> 00:54:49.220
But they're there.

00:54:49.220 --> 00:54:53.540
I mean, they will totally provide support as necessary for services and such if we need

00:54:53.540 --> 00:54:53.700
them.

00:54:53.700 --> 00:54:56.860
But I don't know how corporations feel about that.

00:54:56.860 --> 00:55:01.100
I don't know if they like that idea of a nonprofit being the backstop for whatever.

00:55:01.100 --> 00:55:05.580
Now, I will say that some of the newer things we're doing other than talking about PEPs,

00:55:05.660 --> 00:55:09.900
one of them is we have started to talk with the PSF about potentially getting like a project

00:55:09.900 --> 00:55:11.740
manager for very pointed things.

00:55:11.740 --> 00:55:14.540
Like, how do we handle the Python 2 sunset, right?

00:55:14.540 --> 00:55:15.640
It's coming up.

00:55:15.640 --> 00:55:17.340
It's going to be a party.

00:55:17.340 --> 00:55:21.360
My wife's determined to get me really drunk on January 1st, 2020.

00:55:21.360 --> 00:55:24.700
But there's a lot of stuff to happen between now and then, right?

00:55:24.700 --> 00:55:27.560
Like, what do we do about docs.python.org, for instance?

00:55:27.560 --> 00:55:33.280
Right now, there's docs.python.org slash 2 slash stuff and then slash 3 slash stuff.

00:55:33.520 --> 00:55:38.360
And if you Google stuff on Google, it's still oftentimes the first link is the Python 2 docs

00:55:38.360 --> 00:55:41.020
and then it's the Python 3 docs for a module, for instance.

00:55:41.020 --> 00:55:41.380
Yeah.

00:55:41.380 --> 00:55:42.340
I mean, what do you do?

00:55:42.340 --> 00:55:43.700
301 through 2?

00:55:43.700 --> 00:55:43.780
Yeah.

00:55:43.780 --> 00:55:47.620
Well, the 2 docs will probably be going away, right?

00:55:47.620 --> 00:55:49.780
Because it's not supported anymore.

00:55:49.780 --> 00:55:50.480
Yeah, exactly.

00:55:50.480 --> 00:55:52.540
Just a permanent redirect over to the version 3.

00:55:52.540 --> 00:55:53.260
Yeah, exactly.

00:55:53.260 --> 00:55:55.980
What other stuff do we have to suddenly deal with?

00:55:55.980 --> 00:56:00.300
Like, I'm sure there's a ton of stuff on python.org that mentions, too, that honestly doesn't

00:56:00.300 --> 00:56:03.920
need to mention it come 2020 because we're not supporting it anymore.

00:56:03.920 --> 00:56:04.900
It's no longer...

00:56:04.900 --> 00:56:07.120
The download page on python.org.

00:56:07.120 --> 00:56:07.140
Yeah.

00:56:07.140 --> 00:56:09.280
I mean, luckily, that's pointing straight to 3 now.

00:56:09.280 --> 00:56:10.740
But for the longest time, it was both.

00:56:10.740 --> 00:56:11.800
But it's stuff like that.

00:56:11.800 --> 00:56:13.640
But when you go to, like, get all versions, right?

00:56:13.640 --> 00:56:14.500
It's got, like, all that.

00:56:14.500 --> 00:56:14.800
Yeah.

00:56:14.800 --> 00:56:16.120
How are we going to handle all that stuff?

00:56:16.200 --> 00:56:19.680
So we're talking to the PSF about getting us a PM for that.

00:56:19.680 --> 00:56:25.240
We're also talking to them about handling to getting a PM potentially about moving our issues

00:56:25.240 --> 00:56:25.600
to GitHub.

00:56:25.600 --> 00:56:27.000
There's an open PEP about that.

00:56:27.000 --> 00:56:29.600
And we're discussing the feasibility of that.

00:56:29.600 --> 00:56:34.140
And part of that would probably require having a PM to handle that kind of major project.

00:56:34.140 --> 00:56:37.000
So we're talking to them like, okay, well, if we're going to consider this, we need to

00:56:37.000 --> 00:56:39.240
make sure we have a PM to help make that happen.

00:56:39.240 --> 00:56:42.960
So we're talking with the PSF right now about what that would look like to get a PM for

00:56:42.960 --> 00:56:45.020
us to help handle that specific thing.

00:56:45.380 --> 00:56:48.520
And so we're starting to have more of a conversation along those lines.

00:56:48.520 --> 00:56:49.640
But it's still early days.

00:56:49.640 --> 00:56:52.720
But back to the whole corporate onslaught and stuff.

00:56:52.720 --> 00:56:56.600
I don't know how many corporations realize that the PSF exists and they're there to help

00:56:56.600 --> 00:56:57.240
us as necessary.

00:56:57.240 --> 00:57:01.260
Because I've talked to corporations who have said, like, they've claimed they would throw

00:57:01.260 --> 00:57:05.360
money at us if they knew it would only go towards development.

00:57:05.360 --> 00:57:07.000
Because they don't care about the community.

00:57:07.000 --> 00:57:10.100
Honestly, for capitalistic reasons, they just care about the language.

00:57:10.100 --> 00:57:10.420
Right.

00:57:10.420 --> 00:57:12.860
We need this feature to be improved.

00:57:12.860 --> 00:57:13.380
And we need...

00:57:13.380 --> 00:57:13.900
Not even feature.

00:57:13.900 --> 00:57:14.720
This area.

00:57:14.720 --> 00:57:14.780
Yeah.

00:57:14.780 --> 00:57:16.300
We need people working on just...

00:57:16.300 --> 00:57:16.400
Yeah.

00:57:16.400 --> 00:57:16.640
All right.

00:57:16.640 --> 00:57:16.840
Okay.

00:57:16.840 --> 00:57:18.840
Just working on the runtime and on the interpreter.

00:57:18.840 --> 00:57:19.200
Exactly.

00:57:19.200 --> 00:57:24.760
How do we make sure that Python doesn't suddenly collapse under its own weight next month?

00:57:24.760 --> 00:57:28.180
Because I got to at least make it through the quarter to make my numbers.

00:57:28.180 --> 00:57:29.460
Where can I send money?

00:57:29.460 --> 00:57:30.820
Because I'm just...

00:57:30.820 --> 00:57:32.940
I work for a bank or something.

00:57:32.940 --> 00:57:36.620
I'm not set up to staff people to just contribute to Python full time.

00:57:36.620 --> 00:57:37.280
It's just...

00:57:37.280 --> 00:57:39.220
I don't even know how I promote such a person.

00:57:39.220 --> 00:57:41.500
So where do I throw money at this problem?

00:57:41.500 --> 00:57:43.700
And we just haven't structured things that way.

00:57:43.700 --> 00:57:45.400
And that conversation, I think, is also about...

00:57:45.400 --> 00:57:47.720
It's probably going to start happening in the near future.

00:57:47.720 --> 00:57:49.440
It would be a good problem to have, right?

00:57:49.440 --> 00:57:52.060
If you actually could set this up and folks could contribute.

00:57:52.060 --> 00:57:53.520
But it's tricky, I know.

00:57:53.640 --> 00:57:53.800
Yeah.

00:57:53.800 --> 00:57:56.240
So I think the PM thing is probably going to be the first step.

00:57:56.240 --> 00:58:02.440
And then depending if that works out and how that goes, we'll probably see how wide of a net we want to start talking.

00:58:02.440 --> 00:58:08.880
Like, personally, I would love to get something like the Django Fellowship for Python Dev.

00:58:08.880 --> 00:58:18.220
And have a core dev who's available be staffed for like six months or a year or something to do nothing but just work on closing PRs, closing issues.

00:58:18.220 --> 00:58:19.780
The community communication stuff.

00:58:19.780 --> 00:58:23.400
Basically what Django has with the Django Fellowship program.

00:58:23.820 --> 00:58:24.560
I'd love to see that.

00:58:24.560 --> 00:58:24.820
Yeah.

00:58:24.820 --> 00:58:25.440
That'd be cool.

00:58:25.440 --> 00:58:31.440
I feel like that kind of deep work where you can just be 100% focused on it for a long time would probably make a big difference.

00:58:31.440 --> 00:58:32.120
Yeah.

00:58:32.120 --> 00:58:32.480
Cool.

00:58:32.480 --> 00:58:32.900
All right.

00:58:32.900 --> 00:58:34.120
Well, that's all good news.

00:58:34.120 --> 00:58:37.940
I have a ton of other things I want to ask you, but I've already used up more than my time.

00:58:37.940 --> 00:58:39.520
So let me just ask you some real quick things.

00:58:39.520 --> 00:58:40.600
You're going to be at PyCon.

00:58:40.600 --> 00:58:41.700
There's going to be a Language Summit.

00:58:41.700 --> 00:58:42.640
People can see you there.

00:58:42.640 --> 00:58:42.940
Yes.

00:58:42.940 --> 00:58:44.700
There will be our annual Language Summit.

00:58:44.700 --> 00:58:45.680
I will be attending.

00:58:45.680 --> 00:58:49.260
I think I'd be in deep trouble if, as a council member, I didn't show up.

00:58:49.420 --> 00:58:54.100
So basically, as long as I make my connection in Milwaukee, my flight out, I will be there.

00:58:54.100 --> 00:58:55.180
You could walk from Milwaukee.

00:58:55.180 --> 00:58:57.940
No, not really.

00:58:57.940 --> 00:58:59.120
But you'd be close.

00:58:59.120 --> 00:58:59.800
You could rent a car.

00:58:59.800 --> 00:59:01.000
So I think you're going to make it.

00:59:01.000 --> 00:59:01.780
I guess that's true.

00:59:01.780 --> 00:59:02.840
I never really thought about it that way.

00:59:02.840 --> 00:59:04.480
I have 45 minutes to make my connection.

00:59:04.480 --> 00:59:05.220
I'm not really worried.

00:59:05.220 --> 00:59:08.020
It's just when I open up TripIt and it says, connection at risk.

00:59:08.020 --> 00:59:09.140
It's like, oh God.

00:59:09.140 --> 00:59:10.800
It's more than half an hour.

00:59:10.800 --> 00:59:11.600
I think it's fine.

00:59:11.600 --> 00:59:12.540
I made it last year.

00:59:12.660 --> 00:59:15.100
It's just, I don't love having that red banner in my face every time.

00:59:15.100 --> 00:59:17.080
It makes me a little worried, but I think I'll be fine.

00:59:17.080 --> 00:59:18.220
You should be fine.

00:59:18.220 --> 00:59:18.560
Exactly.

00:59:18.560 --> 00:59:19.280
Unless it's not.

00:59:19.280 --> 00:59:19.940
Yeah, perfect.

00:59:19.940 --> 00:59:20.820
All right, cool.

00:59:20.820 --> 00:59:22.280
Well, I'm definitely going to be there too.

00:59:22.280 --> 00:59:23.080
It's going to be a lot of fun.

00:59:23.080 --> 00:59:30.060
Really quickly, what is the upcoming feature, either in 3.8 or beyond, that you're most excited about?

00:59:30.060 --> 00:59:30.540
God.

00:59:30.540 --> 00:59:32.860
Language, standard library, whatever.

00:59:32.860 --> 00:59:34.300
I don't know if I really have one.

00:59:34.300 --> 00:59:36.560
I've been having to read all the peps.

00:59:36.560 --> 00:59:39.460
I haven't actually get to stop and really think about any of them quite yet.

00:59:39.540 --> 00:59:43.000
I've been too busy trying to find people to make the decision for me of whether or not we want it.

00:59:43.000 --> 00:59:44.080
Well, I think I'll throw one out there.

00:59:44.080 --> 00:59:50.140
I'm really, I was really impressed with the new support for shared memory in multi-processing.

00:59:50.140 --> 00:59:51.520
That looks really cool coming in 3.8.

00:59:51.520 --> 00:59:57.180
Yeah, all the work Devin put in is going to be great for a lot of people, I think, to try to help with that.

00:59:57.180 --> 00:59:58.320
So that's going to be awesome.

00:59:58.320 --> 01:00:04.980
The other problem is because I live in the development, I forget what's even gone live or what hasn't gone live.

01:00:04.980 --> 01:00:07.500
So version numbers blur for me horribly.

01:00:07.500 --> 01:00:09.440
So it's hard to even remember.

01:00:09.740 --> 01:00:14.460
I mean, honestly, I am curious to get to use assignment expressions and see how that works out in my code.

01:00:14.460 --> 01:00:14.980
Yeah, same.

01:00:14.980 --> 01:00:16.020
That'll be out pretty soon, yeah.

01:00:16.020 --> 01:00:22.680
One thing that did land that, once again, very controversial topic, but I actually think was a good thing, is we accepted positional-only arguments.

01:00:22.680 --> 01:00:23.120
Yeah.

01:00:23.120 --> 01:00:24.920
You've had keyword-only arguments for a while.

01:00:24.920 --> 01:00:27.060
So now it's like the anti-keyword-only argument.

01:00:27.060 --> 01:00:28.120
It's the positional-only.

01:00:28.120 --> 01:00:28.520
Yeah.

01:00:28.520 --> 01:00:33.980
And basically the way to think about it, you can go from positional-only to positional-only to positional-only to keyword-only.

01:00:33.980 --> 01:00:36.920
And actually the syntax actually works with that mnemonic.

01:00:36.920 --> 01:00:41.860
In case you haven't seen it, basically what happens is you have your parameters.

01:00:41.860 --> 01:00:44.440
And then if you put a forward slash...

01:00:44.440 --> 01:00:45.860
Forward slash, I think.

01:00:45.860 --> 01:00:46.060
Yeah.

01:00:46.060 --> 01:00:50.340
That demarcates the end of positional-only arguments.

01:00:50.340 --> 01:00:53.500
So everything past that will be keywords or positional.

01:00:53.500 --> 01:00:57.060
And then as soon as you have the asterisk by itself, that denotes keyword-only.

01:00:57.060 --> 01:01:04.560
I think that's going to be really nice because it's going to deal with some annoying code where you actually do not care about that keyword name.

01:01:04.560 --> 01:01:05.660
And you really don't want to take it up.

01:01:05.880 --> 01:01:19.260
Like anything that takes star-star keyword args and you want to be able to take absolutely anything, any argument like even self would actually muck with that and get in the way because anything you pass as the self as a keyword argument would get caught by that.

01:01:19.260 --> 01:01:22.020
And then I also had some compatibility with C code.

01:01:22.020 --> 01:01:26.060
And I'm personally always happy to have more flexibility in how I design my APIs.

01:01:26.060 --> 01:01:30.720
So I'll go with positional-only arguments is the thing I'm most excited about.

01:01:30.720 --> 01:01:31.040
All right.

01:01:31.040 --> 01:01:31.400
Right on.

01:01:31.400 --> 01:01:32.060
I like it as well.

01:01:32.060 --> 01:01:32.860
All right.

01:01:32.860 --> 01:01:34.340
Final two questions before we get out of here.

01:01:34.480 --> 01:01:37.560
I have a hunch on what you're going to answer for the first one.

01:01:37.560 --> 01:01:38.820
I'm going to just put it out there.

01:01:38.820 --> 01:01:39.900
Favorite editor?

01:01:39.900 --> 01:01:40.820
VS Code.

01:01:40.820 --> 01:01:42.780
More than a hunch.

01:01:42.780 --> 01:01:47.620
I think I'd have a very stern conversation with my manager or my PMs if I'd said anything else anyway.

01:01:47.620 --> 01:01:49.640
Yeah, but you're working on the team because you like it.

01:01:49.640 --> 01:01:49.880
Yeah.

01:01:49.880 --> 01:01:52.660
I was actually happy when I got asked to work on the team.

01:01:52.660 --> 01:01:54.080
And I was already a user and a fan.

01:01:54.080 --> 01:01:55.240
So it's a choice.

01:01:55.240 --> 01:01:56.840
It's a lifestyle choice.

01:01:56.840 --> 01:01:57.240
Yeah.

01:01:57.240 --> 01:02:03.260
And if you look at the Stack Overflow 2019 developer survey results which just came out, you guys are crushing it.

01:02:03.260 --> 01:02:04.180
Yeah, exactly.

01:02:04.440 --> 01:02:08.740
If you like Python and you like VS Code and based on Stack Overflow, you should like both.

01:02:08.740 --> 01:02:12.260
You should definitely be using VS Code with our Python extension.

01:02:12.260 --> 01:02:17.600
The number one most downloaded and most installed extension on the VS Code marketplace, actually.

01:02:17.600 --> 01:02:18.100
That's crazy.

01:02:18.100 --> 01:02:18.700
It beats C-Shirt.

01:02:18.700 --> 01:02:19.460
We beat everything.

01:02:19.460 --> 01:02:21.960
And it's not even close.

01:02:21.960 --> 01:02:24.620
So we're doing something right.

01:02:24.620 --> 01:02:25.240
Thank goodness.

01:02:25.240 --> 01:02:26.620
Yeah, I would say so.

01:02:26.620 --> 01:02:27.000
Awesome.

01:02:27.000 --> 01:02:27.580
All right.

01:02:27.600 --> 01:02:29.120
The notable PyPI package.

01:02:29.120 --> 01:02:37.100
I think even though Brian Okken, I know, sometimes gets upset with this package because it doesn't support his source preferred layout.

01:02:37.100 --> 01:02:43.200
I'm going to say Flit because I still think not enough people realize how much simpler packaging could be if they just weren't using setup tools.

01:02:43.380 --> 01:02:43.960
Okay, Flit.

01:02:43.960 --> 01:02:44.340
Right on.

01:02:44.340 --> 01:02:44.840
That's awesome.

01:02:44.840 --> 01:02:45.260
Yeah.

01:02:45.260 --> 01:02:53.900
So for those of you that don't know, I worked on pip 518, which is pyproject.toml, which is a way to standardize on how to specify how to build your packages.

01:02:53.900 --> 01:02:57.760
And obviously, everyone knows setup tools at this point is the way to do it.

01:02:57.760 --> 01:02:58.720
I should look at it, actually.

01:02:58.860 --> 01:03:02.060
Yeah, well, it's very straightforward, and it works the way you would expect, right?

01:03:02.060 --> 01:03:04.360
Like, you don't have to specify your version anymore.

01:03:04.360 --> 01:03:08.440
You just specify the Dunder version in your package, and it'll just use that.

01:03:08.440 --> 01:03:13.960
You don't have to open the file in your setup.py to read a readme file.

01:03:13.960 --> 01:03:15.720
You just specify the path to your readme file.

01:03:15.720 --> 01:03:19.360
I mean, just really obvious ways to do things.

01:03:19.360 --> 01:03:19.520
That's beautiful.

01:03:19.520 --> 01:03:23.560
We've all come to kind of, like, forget that that's, oh, yeah, we should be allowed to do that.

01:03:23.560 --> 01:03:24.480
And it's one file.

01:03:24.480 --> 01:03:25.920
It's all in your pyproject.toml.

01:03:26.120 --> 01:03:27.560
There's no more setup.py.

01:03:27.560 --> 01:03:29.200
There's no more setup.cfg.

01:03:29.200 --> 01:03:34.500
There's no package-info, manifest.in, none of that.

01:03:34.500 --> 01:03:35.500
It all just works.

01:03:35.500 --> 01:03:36.680
Yeah, that's cool.

01:03:36.680 --> 01:03:40.720
If it's in Git, it gets packaged, and Thomas Kluiver has done a great job with it.

01:03:40.720 --> 01:03:40.960
Cool.

01:03:40.960 --> 01:03:42.060
Yeah, it sounds awesome.

01:03:42.060 --> 01:03:43.300
All right, I'm definitely going to check that out.

01:03:43.300 --> 01:03:45.760
So, Flit, people can do better packaging.

01:03:45.760 --> 01:03:46.220
Cool.

01:03:46.220 --> 01:03:47.700
All right, final call to action.

01:03:47.700 --> 01:03:52.600
People maybe want to give feedback or support the council or whatever.

01:03:52.600 --> 01:03:53.300
What do you got?

01:03:53.500 --> 01:03:56.360
Not much other than just be nice.

01:03:56.360 --> 01:04:00.880
I mean, there's nothing really specific other than just be supportive and be understanding.

01:04:00.880 --> 01:04:02.420
We're all on Twitter.

01:04:02.420 --> 01:04:03.540
We're all on social media.

01:04:03.540 --> 01:04:04.020
We're everywhere.

01:04:04.020 --> 01:04:06.500
We do see the negative comments, and they don't really help.

01:04:06.500 --> 01:04:09.340
If you have feedback and it's constructive, that's great.

01:04:09.340 --> 01:04:12.760
But just being flat-out cranky just doesn't really help.

01:04:12.760 --> 01:04:18.520
So, my call to action is, and I have a whole keynote from PyCon US 2018 on this.

01:04:18.520 --> 01:04:20.600
Basically, be nice if you can.

01:04:20.600 --> 01:04:25.640
And if you can't, just be cranky not in public where the rest of us might see it.

01:04:25.640 --> 01:04:27.180
And that's a big one.

01:04:27.180 --> 01:04:28.000
That's good advice.

01:04:28.000 --> 01:04:28.420
Yeah.

01:04:28.420 --> 01:04:31.600
Will you all, like all the people on the council, be at PyCon?

01:04:31.600 --> 01:04:32.920
People come meet you?

01:04:32.920 --> 01:04:34.400
Yeah, I will be at PyCon.

01:04:34.600 --> 01:04:37.100
All five of us will be at PyCon.

01:04:37.100 --> 01:04:44.080
We are actually going to be giving a panel keynote, I believe, Sunday morning, if I remember the date correctly.

01:04:44.080 --> 01:04:47.280
I will also, PyCon's the keynotes, the Keystone sponsor again this year.

01:04:47.280 --> 01:04:50.720
So, I will probably be floating around the Microsoft booth.

01:04:50.720 --> 01:04:53.540
So, if people want to try to catch me, either catch me in the halls.

01:04:53.540 --> 01:04:56.240
I'm 6'6", or 198 centimeters.

01:04:56.240 --> 01:04:57.580
It's kind of hard not to see me.

01:04:57.680 --> 01:04:59.020
You can be seen in a crowd, for sure.

01:04:59.020 --> 01:05:00.040
I can be seen in a crowd.

01:05:00.040 --> 01:05:02.360
So, if you see me walking down the hall, feel free to say hi.

01:05:02.360 --> 01:05:06.000
Otherwise, just look for me at the Microsoft booth and just catch me there.

01:05:06.000 --> 01:05:06.560
All right, cool.

01:05:06.560 --> 01:05:09.740
Well, Brett, thank you for coming on and giving this update.

01:05:09.740 --> 01:05:13.560
It's really interesting, and I think it'll be good to have it all spelled out for history.

01:05:13.560 --> 01:05:14.080
Yeah.

01:05:14.080 --> 01:05:16.020
Yeah, it's nice to finally have it settled.

01:05:16.020 --> 01:05:19.800
I mean, going from July 12th to the beginning of February, it was kind of like,

01:05:19.800 --> 01:05:22.000
all right, where is this going to go?

01:05:22.000 --> 01:05:23.940
There were a couple moments where it was a bit stressful.

01:05:23.940 --> 01:05:27.560
There were kind of like messages between some people behind the scenes.

01:05:27.620 --> 01:05:29.680
about trying to get the vote set up and like, are we going to do it?

01:05:29.680 --> 01:05:30.440
Are we going to do it today?

01:05:30.440 --> 01:05:31.340
Do we need to push back?

01:05:31.340 --> 01:05:35.020
There was a lot of back and forth discussions, and there's a lot of passions.

01:05:35.020 --> 01:05:39.800
People did pretty well at keeping it civil and in check, which was great.

01:05:39.800 --> 01:05:42.820
But it's definitely nice to have it finally all resolved, and we're all just moving forward.

01:05:42.820 --> 01:05:43.720
Yeah, absolutely.

01:05:43.720 --> 01:05:45.500
All right, well, thanks for being on the show.

01:05:45.500 --> 01:05:46.220
Catch up with you later.

01:05:46.220 --> 01:05:46.780
All right, see you later.

01:05:46.780 --> 01:05:47.460
Yeah, bye.

01:05:47.460 --> 01:05:51.300
This has been another episode of Talk Python To Me.

01:05:51.300 --> 01:05:56.180
Our guest in this episode is Brett Cannon, and it's been brought to you by Linode and Backlog.

01:05:57.080 --> 01:06:00.340
Linode is your go-to hosting for whatever you're building with Python.

01:06:00.340 --> 01:06:03.900
Get four months free at talkpython.fm/linode.

01:06:03.900 --> 01:06:05.800
That's L-I-N-O-D-E.

01:06:05.800 --> 01:06:12.100
With Backlog, you can create tasks, track bugs, make changes, give feedback, and have team conversations

01:06:12.100 --> 01:06:13.460
right next to your code.

01:06:13.460 --> 01:06:20.380
Try Backlog for your team for free for 30 days using the special URL talkpython.fm/backlog.

01:06:21.240 --> 01:06:22.760
Want to level up your Python?

01:06:22.760 --> 01:06:27.580
If you're just getting started, try my Python Jumpstart by Building 10 Apps course.

01:06:27.580 --> 01:06:32.660
Or if you're looking for something more advanced, check out our new async course that digs into

01:06:32.660 --> 01:06:35.740
all the different types of async programming you can do in Python.

01:06:35.740 --> 01:06:39.680
And of course, if you're interested in more than one of these, be sure to check out our

01:06:39.680 --> 01:06:40.360
everything bundle.

01:06:40.520 --> 01:06:42.280
It's like a subscription that never expires.

01:06:42.280 --> 01:06:44.580
Be sure to subscribe to the show.

01:06:44.580 --> 01:06:46.980
Open your favorite podcatcher and search for Python.

01:06:46.980 --> 01:06:48.200
We should be right at the top.

01:06:48.200 --> 01:06:53.760
You can also find the iTunes feed at /itunes, the Google Play feed at /play, and the

01:06:53.760 --> 01:06:57.200
direct RSS feed at /rss on talkpython.fm.

01:06:57.740 --> 01:06:59.300
This is your host, Michael Kennedy.

01:06:59.300 --> 01:07:00.800
Thanks so much for listening.

01:07:00.800 --> 01:07:01.860
I really appreciate it.

01:07:01.860 --> 01:07:03.620
Now get out there and write some Python code.

01:07:03.620 --> 01:07:04.620
Bye.

01:07:04.620 --> 01:07:05.620
Bye.

01:07:05.620 --> 01:07:06.620
Bye.

01:07:06.620 --> 01:07:07.620
Bye.

01:07:07.620 --> 01:07:08.620
Bye.

01:07:08.620 --> 01:07:09.620
Bye.

01:07:09.620 --> 01:07:10.620
Bye.

01:07:10.620 --> 01:07:11.620
Bye.

01:07:11.620 --> 01:07:12.620
Bye.

01:07:12.620 --> 01:07:13.620
Bye.

01:07:13.620 --> 01:07:14.620
Bye.

01:07:14.620 --> 01:07:15.620
Bye.

01:07:15.620 --> 01:07:16.620
Bye.

01:07:16.620 --> 01:07:17.620
Bye.

01:07:17.620 --> 01:07:18.620
Bye.

01:07:18.620 --> 01:07:19.620
Bye.

01:07:19.620 --> 01:07:20.620
Bye.

01:07:20.620 --> 01:07:21.120
you

01:07:21.120 --> 01:07:21.620
you

01:07:21.620 --> 01:07:23.620
Thank you.

01:07:23.620 --> 01:07:53.600
Thank you.