Learn Python with Talk Python's 270 hours of courses

#350: Python Steering Council 2021 Retrospective Transcript

Recorded on Tuesday, Dec 14, 2021.

00:00 For 30 years, Python was overseen by Guido von Rossum since he created and released it back in 1990.

00:06 When he retired in 2018, he left the creation of the new governing body up to the core developers.

00:12 After a few stressful months, the concept of us steering council became the way forward.

00:17 On this episode, I welcome on the outgoing steering council to give us a look back on how this past year has gone.

00:23 We have Barry Warsaw, Kara Willing, Brett Cannon, Pablo Galindo, and Thomas Waters on the show.

00:30 They're going to give us a rundown on the important decisions of 2021 for the steering council.

00:34 This is Talk Python to Me, episode 350, recorded December 14th, 2021.

00:40 Welcome to Talk Python to Me, a weekly podcast on Python.

00:56 This is your host, Michael Kennedy.

00:59 Follow me on Twitter where I'm @mkennedy, and keep up with the show and listen to past episodes at talkpython.fm.

01:04 And follow the show on Twitter via at Talk Python.

01:07 This episode is brought to you by Research Affiliates and Signal Wire.

01:12 Please check out what they're offering during their segments.

01:14 It really helps support the show.

01:15 Hey, everyone.

01:17 I just want to give a quick shout out to one of the videos I made in my Python Shorts series since the last time we've spoken.

01:24 I released one called Do You Even Need Loops in Python?

01:26 If that sounds interesting, really, it's about list comprehensions, isn't it?

01:30 Check it out.

01:31 I'll put the link in the show notes.

01:33 All right.

01:33 Let's talk to the council.

01:34 Barry, Thomas, Carol, Brett, and Pablo, welcome all of you to Talk Python to Me.

01:39 Thanks, Michael.

01:40 Thanks, Michael.

01:41 Hey.

01:41 Thanks.

01:42 It's so good to have you on the show.

01:43 Some of you brand new.

01:45 Some of you familiar faces, but nice to have you all together.

01:49 You're all on the Python Steering Council.

01:52 It takes a lot of people to replace Guido.

01:54 Is that what I'm hearing?

01:55 Absolutely.

01:57 Not even replace.

01:59 Just parody.

01:59 Yeah, exactly.

02:01 There you go.

02:01 Fantastic.

02:03 Well, I'm really looking forward to talking to you all about it.

02:08 Shine a little bit of a light on what the Steering Council does, what you don't do, what your challenges are, and the role, and so on.

02:14 But before we do, maybe we can just go around the video version here and have you all introduce yourselves.

02:20 You know, start at 12 o'clock.

02:23 Barry, you've been on the show before with Paul Everett talking about Python 1984.

02:27 Was it 94?

02:28 Yeah.

02:29 Yeah.

02:29 Yeah.

02:30 PyCon 9.

02:31 The workshop at NIST in 1994.

02:34 Yeah, that was the first time I got a chance to meet Guido.

02:36 Right on.

02:38 Yeah, so quick background, though, for people who didn't listen to that episode.

02:41 Yeah, so I've been working in Python since 94.

02:45 Been on the Steering Council since the initial term, I guess.

02:50 I currently work for LinkedIn, and I guess that's all I really need to say.

02:56 Yeah, what kind of stuff are you doing on LinkedIn?

02:57 I do work with the Python team over LinkedIn.

03:01 Currently, I'm working on an interesting project that's trying to improve the access to technical documentation to our developers, which is kind of a fun project at times.

03:11 Yeah.

03:12 I bet it is.

03:13 That sounds awesome.

03:14 Yeah.

03:15 Cool.

03:15 Thomas, welcome.

03:16 Thank you.

03:17 I'm from Amsterdam in the Netherlands.

03:20 I've worked on Python since, I think, 2000.

03:23 I became a core developer in 2001, so I've been around for quite a while.

03:27 Ned Batchelder, who wrote coverage, likes to call me the most famous Python person you've never heard of because of the things that I implemented in Python that everyone uses that nobody realizes I implemented.

03:40 But I'm happy being somewhat anonymous.

03:43 I work at Google on Python itself, on how we deploy Python internally, and I have a lot of fun with very complex technical solutions that grows Pablo out.

03:54 And I'm also on the board of directors of the Python Software Foundation, which is a little bit of different work than the Python Steering Council.

04:02 And right now, I'm also stepping in for Eva, who left us, decided to move on last week.

04:09 So I'm currently the interim general manager while we're looking for the new executive director.

04:15 So you have basically four jobs.

04:16 You're a busy person.

04:17 Yes.

04:18 My dad made a lot of fun of me last week when I told him this.

04:22 He has two full-time jobs, and he said I do more work than he does.

04:27 Sounds like you're busy.

04:30 Being from Amsterdam, are you happy the F1 championship is now on there?

04:35 I heard fireworks yesterday, but I wasn't actually paying attention because I haven't watched the Formula One for many, many years.

04:43 Yeah, right on.

04:44 Well, it's another thing to celebrate over there.

04:46 Carol, welcome.

04:47 Thanks, Michael.

04:48 It's always a pleasure to see you.

04:50 Yes, you as well.

04:51 Happy to have you here.

04:52 Much better circumstances.

04:53 I think the last time I was on, Brett and I were here right after Guido had resigned.

04:59 Yeah, to basically explain, what was that, to discuss the possibilities that were being considered for what has now become the Steering Council?

05:07 Absolutely.

05:07 So we're in a great place now, I think.

05:11 I've been at the Steering Council since the start, and this was my last term.

05:16 Right now, I'm not running for re-election.

05:19 I feel really strongly, much like I did with the Python Software Foundation, that turnover is good.

05:24 And so I am right now in the midst of working as a VP of learning for a startup called Notable.

05:31 And based on the work that I've done in the Jupyter ecosystem and with open science, and so we're creating a collaborative data platform, which helps everyone and teams work well together.

05:44 Yeah, that sounds really fun.

05:45 Awesome.

05:46 So you don't have any worry about re-election.

05:49 You can just vote however you want.

05:50 You're unencumbered.

05:52 I'm unencumbered, and it's a great slate of people, so I'm really, really pleased at how things have evolved over time.

05:59 And obviously, these fine folks would be wonderful to be re-elected, but there's also a great group of folks on the slate as well.

06:08 So I think we're in good shape.

06:10 Yeah, fantastic.

06:11 Brett, welcome back.

06:12 Thank you very much.

06:13 Background.

06:14 So I'm calling from Vancouver on the unceded traditional lands of the Musqueam, Squamish, and Sailor Truth First Nations.

06:21 I'll be right up front on that.

06:23 I have been on the steering council since it started.

06:27 And as for a day job, I am constantly trying to convince Michael to try out VS Code for Python as the manager for the Python extension of VS Code.

06:38 Yeah, yeah.

06:39 No, good work.

06:40 I mean, I've not seen a tool take off with such broad support.

06:45 You know, I always ask the question at the end of the show, like, what do you use to write Python these days?

06:49 And nothing has a second derivative as high as VS Code.

06:55 Like, the rate of acceleration or adoption is really quite something.

06:59 So you should be proud of that.

07:01 It's awesome.

07:01 Oh, yes.

07:01 I'm very proud of the team.

07:03 They've done a great job.

07:04 Yeah.

07:04 And you also now live on an island, right?

07:06 Didn't those storms, like, separate all the roads from the rest of Canada?

07:10 Yeah.

07:11 You guys doing all right?

07:12 Yeah, I'm fine.

07:13 For those of you who don't know, we had a river of storms, literally, that came through the greater Metro Vancouver area and flooded out every single road in the greater area such that there was literally no land link to the rest of Canada through Canadian land.

07:28 You either had to fly out or you had to go down through the states, which also was flooded out near us in the Pacific Northwest.

07:34 So it's a thing.

07:35 No rail lines either.

07:37 The port's completely backed up and we're, like, the third largest in North America here in Vancouver.

07:40 So, like, I went to the grocery store yesterday.

07:43 The shelves were pretty bare due to just logistical issues.

07:46 I mean, I'm in Vancouver.

07:49 I'm fine.

07:49 It was mainly out.

07:51 The poor folks in the Fraser Valley completely flooded out.

07:54 Like, we have no clue what it's going to do.

07:55 And, like, half of all the dairy and all the chickens for the province come through there.

07:59 There's been a lot of, unfortunately, a lot of animals that drowned.

08:02 It's really bad.

08:03 We'll get through it, unfortunately.

08:04 I'm glad you're okay.

08:06 That was quite the thing.

08:08 Pablo's on a higher note.

08:09 Hello.

08:09 Hopefully.

08:10 Welcome.

08:10 I'm Pablo Galindo.

08:12 I've been on the steering council for only this year.

08:15 This was the first time serving.

08:17 I'm living in the exotic land of London.

08:21 And I work at Bloomberg, which is kind of a financial slash news company in the Python infrastructure team.

08:26 So, we do a very similar thing, as Thomas' team do, but slightly different, I will say, because we need to support all these, not as exciting old systems that banks like to use and whatnot.

08:36 But we also, like, do a lot of, like, very cool tools, like, you know, the baggers and profilers that we plan to open source soonish.

08:44 And we also make sure that Python experience at the company is the better we can.

08:49 So, we are in the VEX kind of department after the seventh reorg or something.

08:54 So, now we are supposed, like, to take care of that people are happy and whatnot.

08:57 And, yeah, people use a lot of VS Code, apparently, as well.

09:00 So, I bet they do.

09:02 Fantastic.

09:03 I was just recommending the running Microwizgi in production article from the Bloomberg tech engineering.

09:12 Oh, right, right.

09:12 That's Peter Sperl, I think, is the author.

09:15 Like, he, yeah.

09:16 Yeah, just last week or something.

09:17 That's a really, really neat stuff you guys are doing there.

09:19 Right, right, right.

09:20 And, yeah, and I think the only, in Cpython, I mainly work on the parser and the garbage collector these days.

09:28 I've been working, as well, recently on improving error messages all around.

09:33 And, kind of, user experience, if you may.

09:36 Although, that's a bit of misuse, I think.

09:38 Yeah, a lot of improvement on the error messages and tracebacks and things like that, right?

09:44 Yeah.

09:44 People have been more excited than you would expect.

09:46 Really?

09:47 When you described that.

09:48 I've heard people are like, this is so exciting.

09:50 I can't wait to start using this feature.

09:51 Yeah, well, we finished the new parser and it's like, well, we can do it this.

09:55 That is not only, like, more syntax because, like, you know, like, people are like, oh, now we have, like, all this syntax, right?

10:01 Like, that's not good.

10:01 So, I said, okay, let's make something good so people don't demonize the parser.

10:06 So, you know, like, they say, oh, well, the messages are good.

10:09 So, let's leave the parser alone, right?

10:12 Exactly.

10:13 Yeah, well, nice work.

10:13 You're also the release manager, Pablo.

10:15 Right, right.

10:16 Sorry.

10:16 Thanks, thanks.

10:17 It's a small thing.

10:19 Thanks, buddy.

10:19 Yeah.

10:20 Yeah, and also the release manager for Python 3.10 and 3.11, which is going to be released this year, late this year.

10:29 And, yeah, apparently it's been a very cool release, three times.

10:33 So, let's hope that.

10:34 Yeah.

10:35 I've not noticed any problems and it just rolled out nice and smooth.

10:37 Yeah, that's a good sign because it's not that there hasn't been any problems.

10:41 But only on the release side.

10:43 Once it's released, it's good and well, right?

10:45 I mean, I'm also able to do because I have a good team of release managers, all release managers helping me.

10:51 So, thanks.

10:52 Thanks to all of them.

10:53 Yeah, fantastic.

10:54 Well, let's just get started with some definitions.

10:58 Maybe, Carol, you could also just tell us a little bit of history since you were on the show as well.

11:02 Like, what is the steering council and then, you know, where did it come from?

11:06 Yeah.

11:06 This is a relatively new thing for Python.

11:08 It is a relatively new thing.

11:10 When Guido retired, he left it in the hands of the core developers to come up with a new governance for the language.

11:17 And so, I'm really proud of the core development team for coming up with several different options for how to organize.

11:27 And then we voted as a group after we discussed it all.

11:30 And the steering council model was the one that won out.

11:34 It's five individuals from the Python community, not necessarily core developers, but could be beyond, who are basically entrusted with, by consensus, building the direction and the future for Python, both the language as well as the core development community.

11:53 And I think so far, it's worked out really well through three terms.

11:58 You know, I think we faced a number of different issues and we've done our best to include many different voices and do our best to steward the whole entire ecosystem.

12:11 Well, I would say you all have done a great job because I haven't heard anything very much.

12:16 You know, it's in the sense that Python is still being released.

12:19 Features are still being added to the language.

12:21 Maintenance is still being done.

12:24 And there wasn't a big disruption when Guido left.

12:26 And there was a lot of uncertainty because, as you said, he said, all right, I need a break.

12:32 I'm stepping back.

12:33 I've been doing this for 30 years.

12:34 That's a long time.

12:35 But he didn't want to impose a structure as the person with no skin in the game.

12:41 Yeah, the entire Python ecosystem, yourself and others, for really rallying around and trying to make everything work.

12:50 And I can't underestimate Eva's and the Python Software Foundation's impact on that as well for their support.

12:57 So I'm glad you haven't heard anything.

13:00 I can't say that we've seen the same.

13:02 Well, when you're, you know, in the eye of the hurricane, it feels different.

13:06 Yeah, totally.

13:07 Yeah, or the middle of the hurricane, rather.

13:09 Anyone else want to add anything to that?

13:11 Just sort of the historical bits before we get into mechanics?

13:14 I think I want to be fair to Guido.

13:15 He said, I'm going to give the core developers a chance to self-organize before I decide on a successor or something.

13:25 So it wasn't really him saying, you guys figured it out.

13:28 It was, I think core developers need to figure out what they want.

13:32 And he still is a core developer.

13:34 And he was on the first steering council as well.

13:36 So there was a very deliberate transition of influence, I will say, instead of power.

13:42 But if the core developers hadn't figured something out, then I'm pretty sure he would have decided for us.

13:48 And I think people would have been, probably would have been happy with that at that point.

13:52 But I am really glad that we got a working and very effective steering council instead.

13:58 Yeah.

13:59 I think the thing I'll add is that, you know, over the years, like there was a lot that was sort of underspecified in the steering council spec.

14:07 And every year we sort of figure out like what the right rhythm of business is, you know, how often we're going to meet, what kinds of agenda we're going to, you know, take on.

14:16 That's been really great.

14:17 You know, it's been great to work with everybody here and everybody in the community to kind of figure out how the steering council is going to work.

14:23 And I think we've gotten to a place where it's very effective.

14:26 Yeah. And there are other organizations sort of playing in that space.

14:30 We have the core developers, right?

14:32 We've got the board of directors, Thomas, you've already mentioned.

14:35 And then you've got the steering council.

14:38 So where does the steering council fit in there?

14:41 What's the responsibility of the steering council?

14:43 Are you overseeing the core developers?

14:46 Do you work with them?

14:47 How does this all fit together?

14:48 So I think PEP 13 does a reasonable job explaining this.

14:52 The idea is that Hito wasn't, he was called the benevolent dictator, but he wasn't really dictating all that much.

14:59 He was basically the final arbiter and he let the core dev community make its decisions.

15:04 The benevolent delegator?

15:06 Well, he did push his opinion through when he knew he was right.

15:10 And I think history has shown that he was right more often than not.

15:14 So the core developers are the people with commit bit rights in the GitHub repo.

15:19 That's basically it.

15:21 It's the people who've contributed a lot to Python of various bits and pieces or overall.

15:25 I think everyone there has earned the right to self-organize.

15:30 So that's what the steering council is.

15:32 But it is still consensus-based.

15:35 It's still the mandate of the steering council is to figure out what the core developers want.

15:41 It's not for us to impose our opinion on the core developers unless there is no other way.

15:48 Yeah.

15:48 Some organization or somebody has to decide if it's 40, 60% plus and against some idea, somebody's got to go, we're going to do it or not do it.

15:58 That used to be Guido.

15:59 And now it's you all, right?

16:01 Yes.

16:01 It's easy when there's a clear answer.

16:04 It's easy when everyone's clearly in favor or against something.

16:08 It is the 40, 60 things, you know, the difficult decisions where we also have to take our time to understand the problem and see how it affects people and carefully make that kind of decision.

16:20 Sure.

16:21 And I'll just point out that the PSF board of directors is not specifically involved with the core developers.

16:29 So the PSF is for community work.

16:32 It's for fundraising.

16:33 It's for the trademarks.

16:35 It's the copyright owner.

16:36 So it's also for legal things.

16:38 But the PSF doesn't dictate what direction Python should, the language should be going.

16:44 It just talks about the community.

16:45 So it's a completely separate concern there.

16:48 But we did have the executive director, Eva, sit in on our weekly meetings and help us with administration.

16:56 And we hired the developer in residence.

16:58 That is to say that the steering council hired the PSF employee that is Lukash, the developer in residence.

17:06 So there is a lot of interaction as well.

17:09 But it's mostly the steering council using the Python software foundation, I would say.

17:16 This portion of Talk Python to me is sponsored by Research Affiliates.

17:20 If you're a regular listener to the podcast, then you're passionate about Python and looking for ways to grow your skills.

17:26 But are you toiling away with Java in your day job only to spend your nights and weekends exploring Python?

17:31 Or maybe you are working in Python, but your management puts shipping features over testing and code quality.

17:38 How does a full-time software engineering job where writing excellent Python is an everyday requirement sound to you?

17:44 That would be your job if you worked at Research Affiliates.

17:47 Research Affiliates is a California-based leader in investment products.

17:52 You probably haven't heard of them, but their research and insight powers mutual funds and ETFs that may already be in your 401k.

17:59 Their technology group is looking for software engineers with a deep understanding of Python.

18:03 They are a team of expert Python coders who use Python to write production financial systems, internal Python libraries, and business automation routines.

18:12 What's more, their team provides ample opportunities for shared learning and professional development.

18:18 Frequent team code reviews and community engagement through open source contributions and conference attendance are core parts of how their developers work.

18:26 So if you're looking for a full-time engineering job writing professional Python with a team of friendly and congenial engineers,

18:33 come work for Research Affiliates.

18:35 Apply today at talkpython.fm/research affiliates or just click the link in your podcast player show notes.

18:40 Carol, it looked like you were going to add something.

18:43 Yeah, I was just going to say in terms of like the 60-40 decisions, there's been very few of those.

18:49 Part of the reason is there isn't consensus.

18:53 What we do is work like, for example, pattern matching was one where we asked the PEP to be reworked several times so that we wound up with a better solution in the end than what we would have if we had just voted yay or nay at the start.

19:10 Right.

19:10 I think that's an important thing to remember.

19:12 Yeah, it helps that all of you are on the technical side of things, right?

19:16 As opposed to overseeing this or whatever, right?

19:21 It really helps that you can get in there and say, no, no, no, this is going to have performance implications or this is going to have break and changes or whatever.

19:28 And we come at it from different places too.

19:30 So that's also an interesting thing that's been, I think, really valuable for us.

19:36 Yeah.

19:36 Yeah.

19:37 Carol, you come at it from the science, the data science, scientific side a little bit more.

19:42 And Brett comes at it from the editor side.

19:44 No, just kidding, Brett.

19:45 Fantastic.

19:48 When are the elections and then how long do you serve for?

19:51 The elections are right now.

19:53 They close, I think, on Wednesday, the 15th of December, anywhere on earth.

19:57 Or is it Tuesday, anywhere on earth?

19:59 It's sometime around there.

20:01 I think it's Wednesday or something.

20:03 Yeah.

20:03 Yeah.

20:04 And they've been going for the last two weeks.

20:06 The way it works is when the major Python version is released, so 3.10 in this case, that triggers the elections of the new steering council.

20:14 Since we have releases every year, that means we have a new steering council every year.

20:18 And we have a single one-year term.

20:21 So everyone gets re-elected or not at the end there.

20:24 There's a two-week nomination period.

20:26 And then we have a two-week sort of discussion period.

20:29 And then a two-week vote period.

20:31 And so we're nearly at the end of the two-week vote period.

20:35 So by Wednesday, Thursday, we should have a new steering council.

20:40 And as Carol mentioned, Carol's not up for re-election, decided not to go for re-election.

20:46 The rest of us is.

20:47 We have no idea if we're in the running or not.

20:50 I mean, the slate is just really great.

20:52 So it could be just five new people entirely, which I would be more than happy with.

20:57 More than enough to do as it is.

20:59 Yeah.

20:59 Do you think it would make sense to have one person stay around as sort of some continuity?

21:04 Or it probably is going to happen just statistically, right?

21:07 I guess we've talked about it.

21:10 I mean, that's sort of the nice thing, right?

21:12 It's like we adjust.

21:13 Things aren't necessarily set in stone.

21:15 So for example, when the first steering council was elected, right?

21:20 When Guido retired, we were actually on an 18-month release cycle.

21:23 So there was a lot more time between elections.

21:26 And now that we're on a yearly release cycle, we've decided to keep the steering council elections

21:31 aligned with Python releases.

21:33 It seems to be working okay.

21:36 And if it doesn't, then we'll have a discussion about that as a community and propose changes.

21:42 But so far, so good, right?

21:44 Yeah.

21:45 Yeah, absolutely.

21:46 We used to have Eva as sort of the administrative memory of the steering council, even though I

21:52 think there was an overlap of four people at every single past election.

21:57 So it didn't really matter.

21:58 Even though I have taken over some of Eva's duties, if I am not re-elected on the steering

22:04 council, I won't be attending as the PSF representative because it just doesn't feel right.

22:10 But it might be that the next executive director does step up and take that position.

22:15 So we might have the PSF executive director as the one person who has been in multiple steering

22:22 councils and can transfer over things.

22:24 Yeah.

22:24 And that would give the PSF a seat at the table as well.

22:27 It's more about information flowing from the PSF to the steering council than the other direction,

22:32 because the PSF doesn't really involve itself in the steering council things.

22:36 But there is the developer in residence, there's money, there's sponsorships.

22:41 There's a sponsorship benefit to PSF sponsors that they get to have a little chat with the steering

22:46 council, which each steering council has to ratify.

22:49 It's not a done deal for the next steering council, but it's just a nice way to have some

22:54 connection with the people who care a lot about Python, companies that care a lot about Python.

22:59 And we also, we do have a handover meeting for the next steering council where we'll have both

23:05 the old steering council members and the new steering council members and make sure that,

23:09 you know, discuss any running issues, anything that the new steering council needs to know.

23:13 So it's not, even if five new people get elected, it's not that we're just throwing them out,

23:19 you know, in the wild and let them figure it out on their own.

23:22 We're still there.

23:22 We're still part of the community, even if we don't get to reelect.

23:24 Yeah, true.

23:25 You're all still core developers.

23:26 They could still reach out to you and ask how about something.

23:30 I want to talk about two people really quick while we're, you sort of touched on both of them,

23:35 Thomas.

23:36 One is just to say thanks to Eva that she's done a lot of work and she's been at it for 10 years or

23:45 something like that, right?

23:45 10 years as the secretary or director of operations or executive director of the PSF.

23:50 She was involved in organizing, or she was organizing PyCon before then.

23:56 So she's involved in PyCon even longer than that.

23:59 Yeah.

23:59 And for those who are not watching the live stream, pretty much the whole story cancel

24:03 just did a little silent applause.

24:05 So we all miss her dearly.

24:06 It's only been a week.

24:07 Yeah, absolutely.

24:08 Best of luck to whatever she's off to do next.

24:11 Also, Betsy.

24:13 Betsy did a lot as well.

24:14 And, you know, thanks.

24:16 She's also moved on.

24:17 Betsy was assistant secretary, I think, of the PSF and also organizing sponsorships and

24:22 all that.

24:23 And so she was involved in a lot of community efforts.

24:25 We owe her a lot.

24:26 Especially PyCon.

24:27 It seemed like she did a lot there.

24:28 And both of them, so much of what they did was behind the scenes.

24:33 And I can't think enough.

24:36 Their work ethic and how helpful they have been to me and the steering council on so many

24:42 different levels.

24:43 So we certainly miss them, but we also wish them the best in their next adventures.

24:48 Yeah.

24:49 All right.

24:50 With serious thanks.

24:52 I do want to show something I think you all will be amused by.

24:55 I don't know if you have you all seen this, this Twitter thread here?

24:58 Yes.

24:59 There was a great mention by Patrick Mason saying, hey, the PSF, the at, you know, thus,

25:05 basic, at PSF on Twitter is searching for an executive director.

25:09 Here's the job announcement.

25:10 Has this been filled yet?

25:11 We're still looking for it.

25:13 Well, I mean, the process isn't, oh, we like someone, we're hiring them.

25:17 There's a whole search committee and there's resumes to go through.

25:20 And then there's, you know, interviews to have.

25:23 We're in the process of interviewing a whole bunch of people via the search committee.

25:27 Okay.

25:27 Is it still open for applicants or is it kind of, you have tons and now you're going through

25:32 them?

25:32 I think we have really good candidates, but I think more is always welcome.

25:36 So right up until we decide, especially in December, I think more resumes.

25:42 Yeah.

25:43 Great.

25:43 If people want to apply.

25:44 Absolutely.

25:45 Cool.

25:45 Okay.

25:45 I'll put a link in the show notes for that.

25:47 But of course, at PSF is the Pacific Salmon Foundation.

25:52 And they kindly respond at the PSF is looking for an executive director at PSF is not currently

25:57 good luck on your search.

25:59 Sorry for the confusion.

26:00 And then they responded.

26:02 It happens.

26:03 We're starting to feel like at the PSF family.

26:05 It's not like at Java ever calls broken heart.

26:08 I thought that was, that was a good way to respond to it there.

26:12 Yeah.

26:12 That was a lot of, but yeah, I think Dustin Ingram, one of the PSF board directors and also

26:17 a Googler got a follow from the Pacific Salmon Foundation, even though he's

26:21 never had a follow from the PSF.

26:24 So I thought that was extra funny.

26:26 Yeah, that is really funny.

26:28 Nice and lighthearted.

26:30 Now, I also want to ask about the developer in residence and how has Lucas's work helped

26:38 you all out?

26:39 I mean, I'm sure Pablo, he was the prior release manager and is also dedicated to helping this

26:46 be smooth.

26:46 So maybe had an even bigger effect on you.

26:49 But what's the developer in residence role interaction with you all?

26:52 Yeah, I think, I mean, I think this is one of the things that we are more proud of bootstrapping.

26:57 I took a lot of time because we have excellent candidates, all of them.

27:02 And, you know, it was not an easy decision.

27:04 But I think so far also like Lucas has made an excellent job.

27:07 So I think one of the things he was working on a lot is trying to help with the review kind

27:14 of queue.

27:14 That's one of the things he's been putting on a lot of work.

27:16 is extremely difficult because, you know, like we have a lot of peers and I think he

27:22 has already been on the show before, right?

27:25 Yeah, we actually, I interviewed him about specifically about that role.

27:29 We probably defer listeners to that particular episode.

27:31 But I think that has a lot of impact.

27:34 But there has been a lot of other places that maybe are a bit less known when he has been

27:40 helping a lot.

27:41 Like for instance, on the releases, like doing Python releases is quite involved to say in

27:46 some good way.

27:47 Is it harder to do a major release, like a 3.9 to 3.10?

27:51 Like 3.10.0?

27:53 Is that harder than 3.10?

27:54 Oh yeah, absolutely.

27:55 Yeah.

27:55 There is two moments that are especially bad.

27:58 One of them is the first beta release because what happens is that on the first beta release

28:04 kind of is the point when no new features can be added.

28:07 And technically from that point until the final release, it's only back fixes and things like

28:12 that.

28:13 Although people try to stretch the definition of a bug fix quite a lot because there has

28:18 always been the strategy of like, I can push maybe this feature like half-baked and then

28:23 call it a bug.

28:23 And then it's like, oh, I'm doing a bug fix, right?

28:26 So, you know, that's when the role of the release manager, you know, is quite important because

28:31 you need to, I mean, you need to be human.

28:32 So sometimes it's like, you know, like people have, you know, they are contributing on their

28:36 free time.

28:37 So, you know, maybe they tell you, I don't really have time for this, but like, you know,

28:41 blah, blah.

28:41 So, you know, there is always time for discussions.

28:44 But also like you need to be careful with that.

28:48 And the other problem that happens is actually, you know, because it's a deadline, everybody

28:52 pushes everything on the last day.

28:53 Like, it's like incredible amount of activity.

28:56 And some of the, you know, systems that we have to check everything, they take a lot of

29:02 time to do their checks because they are quite slow checks that take like three, four, five

29:07 hours and I will have to run every unit test for the entire CPython suite and things.

29:13 It's kind of, we have like a big CI that tests us on like my Windows, macOS and Linux.

29:19 But then we have like this thing called bill bots that basically machines that are donated

29:24 or that we run that test us on like flavors of these platforms or different distributions

29:29 and different versions of macOS, but also like it runs like heavier checks, like sanitizers,

29:35 checks for reference leaks.

29:36 So it's these things like that take, like if you put that thing on the CI, everybody will

29:40 help you, like in the sense that it would be ridiculous.

29:42 So we have these things and they only, they not don't run on a single commit, they run on

29:47 batches.

29:47 So basically all commits of the day.

29:49 And then if it fails, you know, you need to do some manual bisection.

29:53 But anyway, what happens is that, you know, because everybody pushes that and then you

29:57 need to do the release at the end of the day.

29:59 You need to kind of wait for these machines to run.

30:01 And then what happens is that everything is like extremely, extremely broken.

30:05 So normally up to this point, it was kind of, it was a bit weird because like technically

30:10 people are, you know, responsible for the things that they break or they push broken.

30:13 But at the end of the day, it's kind of like, it's the release manager that finds people to

30:17 fix it.

30:17 I fixed myself a lot of these things.

30:20 And it's very stressful because, you know, like people are waiting for your release and

30:24 it's a quite important release to start testing.

30:26 And, you know, like the redistributors are waiting for you because they, they have their

30:30 calendars.

30:31 And those nights have been extremely stressful for sure.

30:35 I mean, and then three times has been as well, but like the, with the help of Guk, exactly.

30:40 We've been coordinating with this.

30:43 And if not, like for instance, last time we've been like fixing between the two of us, all

30:48 these little things.

30:50 Sometimes you need to revert the thing because, you know, it's like, it's so broken that we

30:53 don't have the time to like find out what's going on or like too risky to think like, you

30:58 know, maybe it's fixed, but who knows?

30:59 So, you know, sometimes we just revert.

31:02 That would be a bummer if your PR failed through CI and you got to wait a year.

31:06 Before it was two years.

31:07 Before it was two years.

31:09 And, you know, like people don't get happy when, when you push them back your feature.

31:13 It was a year and a half.

31:14 Yeah, actually.

31:15 Almost.

31:16 Right.

31:16 But still, it's quite a long time.

31:18 Like, especially if you miss the line because, you know, like.

31:21 Well, don't put things off until the last day.

31:23 Come on.

31:24 Yeah.

31:25 People don't understand that thing as well as you would think.

31:28 Thomas.

31:30 Yeah.

31:30 Thomas, you can say this.

31:32 And then there's the reality of human behavior.

31:35 Yeah.

31:35 I know.

31:36 You know, like people get quite angry.

31:39 But it's good advice.

31:39 But in a good way.

31:40 I mean, it's not like, you know, they, they, we are all friends here in the court.

31:43 And, you know, like it's, it's important to have, I think one of the important parts of

31:47 being a release manager is that you need to have a good kind of communication skills because

31:51 it's not only about like the technical part.

31:53 It's also like communicating.

31:54 And I think like Lucas in this case has been also doing a very good job.

31:56 He, he communicates quite well and especially in tricky situations.

32:00 And I think that that is an asset of the, of the position.

32:03 Like, you know, you need to interact with a lot of different people in the team.

32:06 Like people, sometimes they say, oh, you're paid for this.

32:09 So here's all my land release.

32:10 And, you know, like you need to also tell them like, no, I mean, we have these priorities

32:14 and whatnot.

32:15 But yeah.

32:15 So, so this has been an area where he has been helping a lot doing releases.

32:19 He's still doing releases himself, right?

32:21 Because three nine dot whatever we are now still have it.

32:24 So release manager is kind of a long, it's a long serving.

32:29 This portion of Talk Python to Me is brought to you by SignalWire.

32:32 Let's kick this off with a question.

32:34 Do you need to add multi-party video calls to your website or app?

32:38 I'm talking about live video conference rooms that host 500 active participants, run in the

32:43 browser and work within your existing stack and even support 1080p without devouring the

32:48 bandwidth and CPU on your users' devices.

32:51 SignalWire offers the APIs, the SDKs and edge networks around the world for building the

32:55 realest of real-time voice and video communication apps with less than 50 milliseconds of latency.

33:01 Their core products use WebSockets to deliver 300% lower latency than APIs built on REST,

33:07 making them ideal for apps where every millisecond of responsiveness makes a difference.

33:11 Now, you may wonder how they get 500 active participants in a browser-based app.

33:16 Most current approaches use a limited but more economical approach called SFU or Selective

33:20 Forwarding Units, which leaves the work of mixing and decoding all those video and audio

33:25 streams of every participant to each user's device.

33:28 Browser-based apps built on SFU struggle to support more than 20 interactive participants.

33:33 So SignalWire mixes all the video and audio feeds on the server and distributes a single

33:38 unified stream back to every participant.

33:40 So you can build things like live streaming fitness studios where instructors demonstrate every

33:45 move from multiple angles.

33:46 Or even live shopping apps that highlight the charisma of the presenter and the charisma of

33:52 the products they're pitching at the same time.

33:53 SignalWire comes from the team behind FreeSwitch, the open-source telecom infrastructure toolkit

33:59 used by Amazon, Zoom, and tens of thousands of more to build mass-scale telecom products.

34:04 So sign up for your free account at talkpython.fm/signalwire.

34:08 And be sure to mention Talk Python to me to receive an extra 5,000 video minutes.

34:13 That's talkpython.fm/signalwire.

34:15 And mention Talk Python to me for all those credits.

34:19 We need to actually find the next release manager for...

34:23 It's a big commitment.

34:24 Right.

34:24 This is about the time that we try to find...

34:27 How do you do that, Barry?

34:28 We have a group of former release managers.

34:34 We throw around some names and then we find somebody to, I guess, convince.

34:39 They look for someone to volunteer.

34:41 Yeah, volunteer.

34:42 Yeah, exactly.

34:43 Exactly.

34:44 So we have like a long chain with a big ball at the end.

34:47 It's just a finance amount.

34:50 We got this present for you.

34:52 This is going to be real company.

34:53 No one will ever approach Benjamin Peterson's tour duty.

34:58 Man, that was a bad deal.

35:00 That was a bad deal.

35:01 Yeah, yeah, yeah.

35:02 Yeah, he was the two-sector release manager.

35:04 Yeah, yeah.

35:05 He did not sign up for 10 years of bug fix releases.

35:09 It's also like people underestimate the work of releasing an operative system.

35:13 Sorry, that is a primary language.

35:16 Yeah, I cannot imagine releasing a Linux kernel version.

35:19 But like it's a multi-hour process.

35:21 It's quite a lot.

35:22 And, you know, like there is always when people say, oh, can't you automate this thing with GitHub actions?

35:27 And it's like, oh, come on.

35:29 I mean, good luck.

35:30 We have already like a huge amount of automation, but there is a lot of processes that are manual.

35:35 Like it's ridiculous.

35:37 Or there is so many ways it can fail and you need manual intervention.

35:41 The automating is, I mean, I have something already that for minor release,

35:46 like sort of alpha releases and whatnot, which are a bit like, you know, you don't need to build documentation or whatnot.

35:51 It's almost automatic, even waiting for humans to do things.

35:55 But for big ones like betas and final releases, it's like five hours of you sitting down.

36:02 Yeah, and, you know, there's a lot of problems that happen on the go, so it's impossible to do it.

36:07 Pablo has also live streamed all this.

36:09 So if you really want to see all the effort that goes into it, you can, including watching him.

36:13 If you go back, watch the ones where he breaks GitHub.

36:16 So there's a lot that goes on in those rooms.

36:18 Yeah, that's right.

36:19 I think I saw you guys all sitting down and live streaming on YouTube.

36:23 Yeah, that was a 3.10.

36:25 It was just Pablo and Rukas and the other managers.

36:29 Not the steering council, just to make sure the rest of the steering council stays away with him from all that.

36:35 We know too well.

36:37 You know too well.

36:38 Fantastic.

36:39 I did want to bring it a little bit back to Lukas's work and the developer in residence position,

36:45 because it was funded for one year so far by Google because of some money that was lying around.

36:53 And, you know, they wanted a good place to donate it.

36:56 Eva sold it to them or Dustin sold it to them.

36:59 I'm not sure what happened there.

37:00 I wasn't actually involved myself, but it is something that we need to fundraise for in the future to continue it or maybe expand it.

37:07 We've already talked amongst ourselves saying we would love to have three developers in residence instead of just the one.

37:14 We've had some really good candidates when we hired Lukas.

37:18 You know, other candidates, I don't know if they'd be in the running, but there's clearly enough interest.

37:23 There's clearly enough work as well.

37:26 Lukas has been focusing a little bit on selling the position as well because he was very aware from the start that, you know, for it to continue, we need more funding.

37:35 So he's been trying to make the case with his work, make the case that this is a good thing to have and something that people should invest money in,

37:44 which is why we have the weekly developer in residence reports that he does, for instance, is to showcase the work and all that.

37:52 Yeah, he's very much out in the open about that, right?

37:54 He does his sort of weekly blog and summary of almost the report you would give to a manager, but his managers are the community.

38:02 And so it just published that, right?

38:03 In a very real sense, that is the case.

38:05 I mean, it's not a manager who prioritizes the work because that's us, sort of.

38:11 I mean, he does it on his own mostly, but we're there.

38:15 But it is the people he is accountable to, the way he feels it.

38:19 And I think we all feel it that way.

38:22 It's the community work.

38:23 And he's supposed to be doing the things that need to be done, but that you can't really demand of volunteers that they do.

38:31 So I think that's working out fairly well.

38:33 Yeah.

38:33 And it's also the context switching, right?

38:36 Like every one of you has something you've got to work on for your day job.

38:40 And then to come back and work on a PR or a bug or triage something or help somebody get CPython to compile on their machine so they can contribute.

38:51 All of those things are better done if you just stay in the flow of, you know, going through the issues and going through stuff.

38:58 And he can do that full time, right?

38:59 Yeah.

38:59 Well, he has a full time to spend on all of those things.

39:03 So he's still context switching a lot.

39:04 Sure.

39:05 But the context is more tightly grouped.

39:07 Yeah.

39:08 Yes.

39:08 Yeah.

39:09 And I think it gives you, it gives the language a continuity and sustainability.

39:15 You know, people are going to have to onboard and offboard.

39:18 We've seen that very much within the pandemic.

39:20 And it kind of gives us a baseline that things are running as it should be.

39:26 And also he's made a lot of automation improvements as well.

39:30 So there's an incremental, like, let's make it better each year.

39:34 Yeah, absolutely.

39:35 How involved or if at all were you, was the steering council in getting a move to GitHub?

39:41 Like the repo or the issues?

39:43 Yeah, the repo, not the issues.

39:45 I know the issues are still coming, right?

39:47 They're not there yet, are they?

39:48 Yeah.

39:48 Yeah.

39:49 Working on that still.

39:50 Yeah.

39:50 But the initial get the code over there, get the merging.

39:54 I think the steering council didn't exist.

39:55 Yeah.

39:56 I was trying to think about the time.

39:57 It just preceded that, didn't it?

39:59 Yeah.

39:59 Yeah.

39:59 I mean, Brett actually was very involved into that, if I recall correctly.

40:03 But I think what that was.

40:04 Yeah.

40:05 Brett's been involved in every change to our version control system, probably since the

40:11 CVS days.

40:12 I was going to make a joke about CVS.

40:14 Come on.

40:15 Yeah.

40:15 Yeah.

40:15 Yeah.

40:16 I don't think I was not involved with CVS to subversion, but everything subsequently I've

40:23 somehow been involved with.

40:25 Yeah.

40:25 Yeah.

40:25 So how are you happy to see it on GitHub now, Brett?

40:27 Since I'm the one that made that happen, yes.

40:29 Well, I mean, you could regret it.

40:33 No, I would think so.

40:34 No, it seems like it's gone well.

40:35 Yeah.

40:35 It's worked out pretty well, I think.

40:37 There were some bumps way back.

40:38 Like, for instance, I wasn't expecting quite so many core devs who don't contribute to any

40:44 other open source except Python.

40:46 And thus, they didn't know GitHub and they didn't know Git at all.

40:49 Yeah.

40:49 You completely changed their workflow, right?

40:52 Yeah.

40:52 So it was one of these things.

40:53 It was a learning experience for some people.

40:55 And we just had to help them along.

40:57 There's a whole doc, I think, might still be there in the dev guard of how to Git for

41:01 Mercurial users.

41:02 Yeah.

41:02 All that.

41:03 So it's definitely been great.

41:05 And I'm really appreciative that one of the things we've been able to do this year, the

41:09 steering council, is we're very close to moving our issue tracker over to GitHub as well.

41:13 So there'll be a bit more of a connection between the PRs and the issues.

41:16 Yeah, that'd be great.

41:17 And we don't want to maintain our own infrastructure anymore, which has always been somewhat of a

41:19 burden.

41:20 4E has been having to keep bugs.python.org running this whole time.

41:23 He's got everything else on his plate that always has to keep up and running.

41:25 So, yeah.

41:27 But I mean, Marietta, for instance, deserves a lot of the credit for pushing this because

41:30 she wrote the original PEP and has always been poking people like, hey, can we still

41:35 do this?

41:35 Because it's still happening.

41:36 What's going on?

41:37 And thanks to the PSF for getting the money together through GitHub's donations to make sure that

41:43 this happens and coordinating all that money and all that hiring.

41:45 And so we're able to have, let's say, it was a core dev work on this.

41:49 And we've been kind of project managing it towards the end on this to get over the fish

41:53 line, but looking good.

41:54 And the goal now is hopefully January sometime we'll be flipping the switch and moving over.

41:59 Yeah.

41:59 Well, that's coming up quick.

42:00 Yep.

42:00 Yeah.

42:01 I think that's sort of like, you know, an underappreciated perhaps contribution to Python,

42:06 right?

42:07 It's like Marietta has done an amazing amount of work and Brett's done a lot of this as well

42:11 as to make those kind of like GitHub workflows really natural and easy to use.

42:16 So there's lots of people who contribute to Python in ways that are maybe not quite as

42:21 obvious as what the steering council does, but are just as important.

42:24 It's not more important for making the whole experience of developing Python really smooth

42:30 and easy to do.

42:31 Yeah.

42:31 I think also kind of nowadays there is more and more people are conscious of this, but

42:37 I think there is also like a special emphasis on like when you contribute this code, right?

42:42 Like, like, and then even like people feel that or they have been like doing documentation

42:47 contributions or even like CI contributions or whatever.

42:51 like, and they say like, Oh, I didn't continue to see Python.

42:53 I mean, come on.

42:54 Like, you know, it's important for, for us to highlight this.

42:58 And, you know, there is a lot of, even code developers, there is a lot of code developers

43:02 that don't continue code.

43:03 Like even just, you know, try adding and all those things that those are as important or

43:07 even more.

43:07 Like, you know, code is, is not a small part, but it's also by far not the full picture.

43:12 Right.

43:13 Like, even if you take Guka's work, right?

43:15 Like he's not coding that much as the developer in racing.

43:18 I mean, he does some coding, right?

43:19 But like, and that you see the impact that he's having, right?

43:22 Like literally we are, we are searching for someone who, who does that kind of work because

43:26 he's needed.

43:27 No, we are not searching for an excellent coder, right?

43:29 Like we already have a lot of those.

43:31 So, you know, like, I think it's important to highlight and I would like to take the time

43:35 to say here that, that when, when people think about contributing, you know, you don't

43:40 need to think about code.

43:40 Right.

43:41 You don't have to master pointers to pointers, you know, void pointers.

43:44 You know, there is a lot of, there's a lot of ways to contribute.

43:47 Yeah.

43:47 And you know, there is a lot of people that go and it's always the same thing, right?

43:51 I mentor, I'm spending a lot of time mentoring new core developers, like the last four core

43:55 developers were people that I helped mentoring myself or partially.

43:59 And, you know, it always happens.

44:00 I mean, I've been also very lucky and like the last core developers that I've been mentoring

44:05 has been like extremely smart people and super competent.

44:07 So it's not been a problem, but from the people that are starting to contribute,

44:11 for the first time, it's always the first question.

44:13 It's like, how do I find issues that I can work on, right?

44:17 Or PRs, which is the most difficult thing to solve because it's not only like, what do you

44:20 like?

44:21 And, you know, what are your skills or interests?

44:22 But, you know, it's also like C-Python is a fairly mature code.

44:26 So it's not that easy as like, oh, there is this thing, you know, I pick it up.

44:30 But the key here is that a lot of people don't think about the fact that, you know, you don't

44:34 need to think out like, because they think bugs, like what is the bug or what is the feature,

44:38 you know, like that I cannot.

44:39 A lot of the time what happens is that the easier parts are actually for even for them,

44:44 right?

44:44 I mean, maybe there is a programmer that really likes coding and, you know, it's very easy

44:48 to say.

44:48 It's like work on this or do I packaging work on that.

44:50 But like a lot of people actually, you know, are very passionate precisely about other

44:55 things.

44:55 They come from a point that core developers don't have, like for instance, documentation.

45:00 We are quite bad at writing documentation, not because we don't have the skills that we

45:04 do.

45:04 It's because we are already, we are thinking like core developers.

45:07 So we are like, okay, yeah, I think I know how, I know the system.

45:10 So I'm documenting this as I think, you know, and for someone who is new to the system.

45:15 Yeah.

45:15 It's hard to see with new eyes.

45:17 Yeah.

45:17 Yeah.

45:18 Or like from the user perspective, like maybe we put a lot of detail that is not that important and, you know, makes the more difficult, or maybe

45:25 we are missing some things that we think is implementation detail, but there's other is

45:28 not.

45:29 So, you know, that is quite important.

45:30 And I mean, happy to see that more and more people are like working on this kind of things

45:35 and those contributions are super important, right?

45:37 Maybe, maybe that's where you can have a huge amount of impact, right?

45:40 Like instead of fixing bugs, I mean, fixing bugs is also important, but I think my first

45:45 PR in the, in CPython was in the documentation.

45:48 I'm super proud of it.

45:49 Like this actually Marietta was the person who merged it.

45:51 Interesting.

45:52 Yeah.

45:53 That's fantastic.

45:53 I think it's important to mention that.

45:55 And, you know, more and more people now are helping with things like CI because like, you

45:59 know, they, they are super knowledgeable about like GitHub actions and they say, oh, actually,

46:04 you know, like this is very inefficient.

46:05 Maybe you can do this and blah, blah, blah.

46:07 Or like, maybe you do this, you can have in the PRs kind of comments from the compiler

46:12 warnings.

46:12 That's something that someone could do.

46:14 And I mean, that is fantastic.

46:16 It's like how many bugs are going to be solved just because, you know, like for us, for even

46:20 for Google as I myself, like helps a lot because we don't need to, when we see the warnings,

46:24 we don't need to fix it ourselves because like, it's there.

46:26 Right.

46:26 So, so those changes are actually more long lasting or even documentation.

46:29 Like, yeah.

46:30 And that's the kind of thing that's a little orthogonal to the main CPython code that you

46:35 can go and say, I'm going to just try to make the error message more descriptive.

46:39 And that's less likely to cause some sort of butterfly effect.

46:44 Like, well, I changed the speed of the C eval C loop.

46:48 And that has all these knock on effects, right?

46:50 Like we put in more details into the string as part of the error.

46:53 That's, that's way more doable.

46:55 Right.

46:55 That kind of stuff as well.

46:56 And I will, and that's the last thing I want to say.

46:58 Yeah.

46:58 And I would example as well is, you think, oh, is the last, the, the better errors thing.

47:04 I mean, there is a lot of like technical stuff there, but like one thing that happened is

47:07 that now a lot of contributors are actually contributing the errors themselves.

47:11 Like not, not, I mean, there's some part of the government would not, but like, it's not

47:15 focused on code or like fixing or adding infrastructure is because like, they like, you know, to have

47:20 better errors and they're, they are very passionate about it.

47:22 And that is fantastic because you know, it's not, it's, it's also a different area when

47:27 it can have a, but you were saying that apparently like people are super happy about that.

47:30 And, you know, I've been contributing in very core parts of CPython and I would never have

47:34 thought that this was something that is going to be so, so much accepted.

47:38 Yeah.

47:38 But if, if you are in the training business, like if you were going and doing an in-person

47:43 event or a workshop and the students are stuck and now they have a message that gives them

47:48 more info that, that helps a lot of things, you know, go more smoothly.

47:52 So Brett, I'll, I'll throw this question out to you first here.

47:55 What are some of the big during the tenure of this group?

47:59 So this year, basically, what were some of the big or hard things that you had to decide

48:05 upon?

48:06 Oh, wow.

48:07 Right.

48:07 Hard things to decide about.

48:09 Well, honestly, if we're going to be honest, anything conduct related is always hard.

48:13 Stuff comes up and as the final deciders, as it were, or the great deciders for the core

48:20 team, sometimes conduct stuff comes up.

48:22 Out in the audience, PyLink refers to you all as the dream team.

48:24 So.

48:25 Thanks for that.

48:27 But yeah, conduct is always the hardest.

48:28 We don't like it.

48:29 No one likes it.

48:30 It's tough.

48:31 We were very lucky that the PSF conduct working group backs us.

48:35 I'll disclaimer, I'm on it as well.

48:37 But I also recuse myself whenever Python core stuff comes up.

48:41 But it's, we're really going to have them to help us give guidance because that's what

48:46 the kind of work groups there for is actually to provide guidance that actually can't enforce

48:48 anything.

48:49 But we lean on them to kind of act as independent arbiters of everything.

48:52 because for a lot of us, we've been here.

48:56 I mean, we've been on this team long enough that we pretty much know everybody.

48:58 Right.

48:59 And a lot of us are friends.

49:00 That's hard to be impartial.

49:01 There's a lot of history as well with people.

49:04 So we lean on the conduct work group to help kind of act as the independent body that doesn't

49:09 have all that baggage as it were with people.

49:11 But then it comes back to us and we have to make a final decision of what are we going

49:15 to do about this?

49:15 And that's hard every time.

49:17 It's not fun.

49:18 It's stressful as heck.

49:19 If it's ever reached that point, it's not great.

49:22 Yeah.

49:22 I would put those in the quadrant of hard and not fun.

49:25 There are other ones that are in sort of a hard but fun kind of quadrant where, you know,

49:31 some of the technical peps and things like that, pattern matching was probably one of the most

49:37 recent ones where you really have to think through some difficult technical problems.

49:43 But that's kind of the fun part of doing this, right?

49:46 Like we enjoy that even though it's hard, it's still a fun part of the job.

49:51 So hopefully there'll be more days and fewer of the fun and not or not fun and hard.

49:57 Yeah.

49:57 Yeah.

49:58 Probably the closest I can think of off the top of my head was deciding for 310 not to make

50:05 from Dunderfuture import annotations.

50:07 That was a really tough one because...

50:11 That was a lot of stuff happening in the community.

50:13 People, certain framework authors are like, you're going to break our framework because

50:17 we depend upon this and whatnot, right?

50:18 Right.

50:19 Yeah.

50:19 I mean, it was one of these things where that PEP was written, accepted, I think, like two

50:24 months after Pydantic was even created.

50:26 It went public or something.

50:27 Yeah.

50:28 Yeah.

50:28 Pydantic and FastAPI were two of the most popular.

50:31 Exactly.

50:31 And stuff has just changed since that PEP got accepted way back when.

50:34 I think even that was...

50:35 I don't think that was even steering council decision.

50:38 I think that was a Guido decision.

50:39 No, no, no.

50:40 It was a Guido delegated to Ukash decision.

50:43 Right.

50:43 So that was a bit stressful because it all happened right before beta, right?

50:48 And it was a lot of...

50:49 It was people reaching out to people.

50:51 There was a bit of panic in some corners of the community.

50:55 There was...

50:56 But we did the best we could to reach out to everyone and say, no, let's have a discussion.

51:00 We can figure this out.

51:01 And we just discussed it with everyone involved on both sides of the type...

51:04 All sides of the typing community, both dynamic and static.

51:06 And just chatted with people.

51:08 I was like, look, we can't rush this.

51:09 And it's looking like this decision is going to feel rushed based on the feedback we're getting

51:13 very near beta.

51:14 So we're just going to rip the code out.

51:17 Which...

51:17 Thank you, Pablo, for reverting that work.

51:19 Because that was a messy back...

51:22 Next time I can dump that on Ukash.

51:24 There you go.

51:25 Exactly.

51:26 Yeah.

51:26 Because this was pre-Dev in Residence, right?

51:29 Yeah.

51:29 Yeah.

51:29 Deal with this.

51:30 But it was tough.

51:31 It was...

51:32 But I think everyone involved was happy with the decision that was made in the end.

51:36 I have no regrets.

51:37 I don't think anyone else in the Strength Council has regrets.

51:39 I think everyone involved feels like it was the right decision not to rush that.

51:42 We still have to make a decision, which is tough.

51:45 We've asked the community to see if anyone wanted to step forward to actually talk with

51:50 all areas of the typing world to see like the PEP 649, which Larry Hastings has proposed

51:56 as a solution to the problem of runtime types and binding and all this lot of stuff.

52:02 We've asked the community, can someone step forward and kind of act as almost a champion

52:06 of a shepherd or an expert to come talk to us to explain like, have we hit all of the

52:10 potential issues with the Gender Futures import annotations or PEP 649's proposal or something

52:16 else?

52:16 And honestly, no one stepped forward.

52:19 So this is actually one of those things where the Strength Council might actually in 2022

52:22 have to come forward and we'll have to chat with this ourselves.

52:25 We'll have to do the legwork and we'll just have to do it and it'll take time.

52:29 But that's what we're here for is if we ask the community to do something and no one

52:32 wants to do it, we're the backstop to make sure stuff still happens and works.

52:36 Yeah, sure.

52:37 Maybe give people who have been tracking that super closely just a quick summary of

52:42 what was that feature and why did it cause a problem?

52:44 Yeah.

52:45 So the from Gender Futures import annotations, what it did was is it made all type annotation

52:50 strings, which for performance reasons and forward reference problems is really handy, right?

52:56 Like there's no overhead in import.

52:57 Everything is just a string.

52:58 It's in the code object.

52:59 It's nice and fast.

53:00 And if you need to reference something in the same module before you've actually gotten to

53:04 define it, right?

53:05 Like if you have circular references.

53:07 Right.

53:07 A class method that returns its own self.

53:10 So you would just put that in quotes instead of say it's not me.

53:12 Yeah.

53:12 Or class A has an attribute of class B and class B has got reference A and it takes care of all that.

53:18 Cause it's just strings.

53:19 There's, there's nothing to really do there.

53:20 And then the type checkers just handle the, like the references.

53:23 It's not a problem.

53:24 The problem is, is projects like Pydantic, which various other projects like Pydantic depend on that messes them up because they need to actually convert those strings back to the original objects that they represent.

53:37 Right.

53:37 Cause they want the rich type information out of that.

53:40 They need to see the real type.

53:41 They want the actual object that that type annotation defines, right?

53:44 When you do like list bracket int, right?

53:47 They want that actual object that that represents so they can get at that information.

53:51 Oh, okay.

53:52 This is type to a list events, not just, oh, it's a string.

53:55 I don't know what the heck that is.

53:57 And there's a function in the standard library that you can call in the inspect and typing module that will, which is now in the inspect module, but a better version of the inspect module that will give you the actual objects.

54:06 But the problem is, is you still have this reference problem and a couple other things and it's not worked perfectly.

54:12 And that's why the dynamic typing side, the live typing side, as it were, the typing community got really worried when they realized this was about to become the permanent thing.

54:22 And why we stopped now there is a PEP PEP 649, which tries to use closures instead to kind of capture all the variables and everything, but not execute anything.

54:34 Right.

54:34 It's very much like a function closure you'd use today, where you had a function and a function, the inner function refers to something in the outer function.

54:41 Nothing's actually happened yet, but at least that reference is still there.

54:44 So it knows where to look for stuff.

54:45 Problem is, is we don't know if 649 fixes enough things for that to be the solution we want to go with.

54:52 Because we don't think we're going to get another chance to tweak this, right?

54:54 If we're going to try to come up with a solution that fixes all the problems that from send to future import annotations fixes, we also have to make sure it fixes as many of the other problems that also exist at the same time.

55:05 So that we only do this once because this is potentially messy.

55:08 And it doesn't have to fix everything, but anything that it doesn't fix probably will never get fixed.

55:14 So we have to be prepared to live with that.

55:16 And be very aware of what those non-fixed situations are.

55:19 So everyone knows that's something to be careful.

55:21 I think the second aspect is the key.

55:23 I think it's probably what is making this so difficult that we already have future input.

55:28 And we don't want three of them or a combination of them or whatnot.

55:32 So I think it's important.

55:34 And this is the most difficult thing for us because, you know, as a student council, we like reviewing peps is extremely time consuming and whatnot because you need to not only be aware of the change itself, but also like what the documents are written by the authors, right?

55:48 And then you need to, I mean, it's not like that is ill intention or anything, but there is a lot of things that maybe are left out or like, so you need to make, make sense of the void that is behind these things.

55:58 Right.

55:58 Or like what is the far reaching effects.

56:00 And in this case, the problem is that how many other things don't we know that is not going to work?

56:05 Because, you know, like now we, like you see, we knew all these use cases days before beta, but like what else about all the people that are not contacting?

56:14 Yeah.

56:14 Yeah.

56:15 Right.

56:15 And one thing I want to say as well is because this is important.

56:18 Like we, we care about like, you know, the antique and FastAPI, but we care about everything else.

56:23 Right.

56:23 It's not, you don't need to be the author of a big framework to have the steam council attention.

56:27 And that's quite important.

56:28 Yeah.

56:29 I think it's important to remind, right.

56:30 Because, you know, it's important because there is a lot of people using this use case and therefore, you know, it has more weight.

56:36 That's true.

56:37 Just because, you know, if we mess up, it's going to affect more people than some random library.

56:41 So the random library is also as important as long as it's using, you know, the, the interfaces that we provide in its own right.

56:48 Right.

56:49 And this is important to know because like maybe there is a community of people that use type annotations for, I don't know, database tables or who knows.

56:56 Yeah.

56:56 And then they didn't follow out contacting the steam council or the Python dev or whatever.

57:01 So, you know, it's important if you're listening to this and then you're an author of libraries that use type annotations or even a user that uses type annotations in non-standard ways.

57:11 It's very important to reach to us and maybe in the future to this person, we're going to lead this effort because we absolutely need to know what these peps are not going to fix.

57:19 So we say as a steam council, okay, we take the, or the next steam council, right.

57:23 We take the informed decision to accept this pep, even if these use cases are going to be sacrificed because as Thomas says, we cannot fix everything.

57:31 Right.

57:31 But we must know where we're lifting it out because what we cannot have is now, you know, this situation again, because just we miss.

57:39 You only get so many readers.

57:40 Carol?

57:41 Right.

57:41 Yeah.

57:42 I mean, there's so many different communication levels on this whole thing.

57:48 I mean, as you know, Michael, from doing all your courses, a 30 year old language that has many different use cases.

57:57 It's hard to sort of one size fits all.

58:01 Oh, yeah.

58:01 Yeah.

58:01 And I think, you know, I reached out to Sebastian and Samuel because we had been using FastAPI with great success and our engineers really loved it.

58:13 And I think it is something that, you know, is re-energizing the whole web-based side of Python.

58:20 So you don't want to sort of cut that off at its knees.

58:25 Exactly.

58:26 It's one of the things, taking advantage of so many of the cool new features, the typing, the async and all those things and whatnot.

58:33 Right. But by the same token, you know, it also, as a library writer, you know, with JupyterHub and Binder, it's really hard to keep up with everything.

58:43 And we tried to always test ahead, but not everybody will and can do that.

58:50 And then also what you do is you understand your library well, but you don't necessarily understand the Python internals at the same level or the same depth.

59:00 And so I think Lukash's proactive, you know, reports out as well as Pablo's amazing release notes in the last couple of years helps to communicate out what's going on.

59:13 And this was an unfortunate, you know, last minute revert.

59:18 And the whole community working together is really what's needed to be successful over time.

59:24 And I'm glad we, although it was tough in the moment, I'm glad we sort of weathered through that because we've seen growth all around as a result of it.

59:34 Yeah, absolutely.

59:34 Really quickly, because we're getting short on time.

59:37 Alvaro out in the audience asked, was enum.stir enum delay related to breaking Pydantic?

59:44 We can give a really, really quick answer.

59:45 No, had nothing to do whatsoever with Pydantic.

59:48 All right, cool.

59:49 Ethan's been working on a bunch of changes to the enum module and making the repper and stir of enums make more sense.

59:57 Oh, that's great.

59:57 And there were some changes that we weren't sure if they were going to impact users in a negative way.

01:00:03 But we just wanted to make sure that we understood the decision and why it was made.

01:00:08 So we asked him to revert it for 310 and then write a PEP to propose the changes just because of the scale and the impact of the changes.

01:00:16 Propose a PEP for 311.

01:00:19 And we ended up rejecting that PEP.

01:00:21 So that was just purely based on the change that was made and the rationale for the change.

01:00:26 And we don't know of any actual breakage that would have happened, but it's just not something that we were.

01:00:33 Someone's trying to parse the repper and it doesn't work anymore or something.

01:00:37 Well, logging it and that kind of thing.

01:00:40 You never know where those things end up.

01:00:41 Yeah.

01:00:42 Brett, it looks like you were going to add one more thing.

01:00:44 And then I think we're getting short on time.

01:00:46 Maybe I'll ask you one more question then.

01:00:48 It was just an aside, but just to share how much of a fan I am.

01:00:51 Last week on Python Bytes, you and Brian were asking whether 3.10.1 was a security concern or not.

01:00:57 And I was just going to say, call out Pablo's great release notes.

01:00:59 If they don't screen security, it's not a security problem.

01:01:02 All right, super.

01:01:03 Because if I go and check the Apple release notes for some OS updates, it's like, oh, it contains this little thing and other possible security.

01:01:11 You never, sometimes you don't know, right?

01:01:14 If it's just...

01:01:14 No, we are very thorough with those notes.

01:01:17 And when we release, actually, it's possible that we release extra versions when there is something very important.

01:01:24 I think I have actually a bunch of those.

01:01:27 For that, I mean, I have not been forced to do any of this, but sometimes, you know, there is CVs and whatnot.

01:01:33 We are very into that.

01:01:35 So, yeah.

01:01:36 Unless we say it, it's kind of okay.

01:01:38 Well, I just want to thank everyone in the entire Python community for not writing a sub language inside of logging for Python.

01:01:48 It's funny because the logging module was definitely inspired by the Java logging module, but...

01:01:54 Yeah, you can tell why the names.

01:01:55 You know, I didn't decide to include, you know, that particular load of class path thing.

01:02:01 Remote pickles or whatever the equivalent would be.

01:02:05 Right, right.

01:02:06 Fantastic.

01:02:07 All right, let's close out our conversation here, which has been great, with maybe the challenges or the opportunities, whichever side of the glass fullness you want to take for the Python community that you all see.

01:02:20 Like, what do you see as like a big opportunity or maybe as a big thing we need to be aware of and try to work to avoid?

01:02:26 Barry, go with you first, I guess, since you're top of the video.

01:02:29 Oh, I'm going to steal probably the thunder, I guess.

01:02:32 I think the two really interesting things that are happening in Python land these days are the faster CPython work that Guido and his team is working on over at Microsoft.

01:02:43 And I think the other really interesting thing is Sam Grace's no-kill work.

01:02:48 From a technical standpoint, I think, you know, we have a lot of smart people in the community.

01:02:53 We can work through the technical parts of it.

01:02:54 I think the really interesting thing will be the sort of the social aspects and how we make all that work and get people comfortable with those changes.

01:03:02 It's easy to make everything faster, better, stronger.

01:03:04 But if there's compromises, all of a sudden it becomes a challenge.

01:03:08 Yeah.

01:03:08 Thomas, you want to go next?

01:03:09 Well, I'm just going to say finding a new executive director for the Python Self-Ware Foundation is right up there for me.

01:03:15 Yeah.

01:03:15 Because that may have significant impact on the long-term goals of the PSF and the direction of the community and all that.

01:03:23 And even though the PSF is very much driven by the community, it's still, you know, it's still a big deal.

01:03:29 However, I do realize most of the community probably doesn't care and it's all happening behind the scenes.

01:03:34 So I'm just going to say the Sam Gross thing is the thing that I think is the great opportunity.

01:03:39 It's going to take years to land an interpreter that doesn't have a GIL and it's going to break a bunch of things.

01:03:45 And we just need to be very deliberate and shiver that correctly and make sure that there's a migration path for users and as little impact as we can manage.

01:03:55 Yeah, absolutely.

01:03:56 That's a good one.

01:03:57 Carol?

01:03:58 Yeah.

01:03:58 I mean, I see a really, really bright future for Python for a couple of reasons.

01:04:04 One, our community has always embraced education and continual learning.

01:04:09 And I think that is part of having a vibrant language after 30 years.

01:04:14 The kids coming out of school are excited they still get to use this.

01:04:18 Not, oh no, do I have to learn this now, right?

01:04:20 Exactly.

01:04:21 And then from a standpoint of being a truly global language, where you're seeing innovation in Africa, Asia, South America, you know, all over the world.

01:04:34 And I think that's exciting.

01:04:36 You know, I'm excited to see what comes next.

01:04:39 And I have full confidence the next steering council will help guide us in the right direction.

01:04:44 Yeah, fantastic.

01:04:45 Brett?

01:04:45 Yeah, this is a tough one.

01:04:46 I feel like I've been around too long.

01:04:49 I'm just curious to see how the community continues to be the community that it is in the face of whatever this pandemic throws at us in 2022, which is hopefully nothing.

01:04:57 But we all know that that may not be.

01:05:00 We've gone a while, PyCon less.

01:05:01 Yeah, well, and even if this year is a little tricky for like someone from Canada, right?

01:05:06 Like traveling down to the States is not quite as simple.

01:05:08 So even if PyCon US is more US folk because it's easier for them to travel and some of us international folk can't make it this year, it's at least good that we're at least seemingly going that direction.

01:05:18 But I mean, kudos to the community for keeping things going and continuing to make this community feel welcoming and open, even if it's been fully virtual for everything.

01:05:25 So yeah, absolutely.

01:05:26 My hope is we'll just be able to continue to find ways for the community to do that for itself and continue to feel welcoming and open and inviting regardless of the situation.

01:05:35 And yeah, whatever that brings.

01:05:37 Yeah.

01:05:37 We'll pull through it.

01:05:38 We will.

01:05:39 Pablo?

01:05:39 I think, I mean, I share a lot of the things that have been said, but I think my, I think with the biggest challenges that we are going to face as a community, as a language is that we are like, we have so many big groups of users that are using the language that have, you know, are very passionate.

01:05:55 I have different priorities that now it was not true before, but now it's especially not true.

01:05:59 It's not possible to make everyone happy and decisions that make some people happy are directly hurting others.

01:06:04 And we have seen this express a lot, right?

01:06:07 You know, educators don't like big new things because, you know, it makes more difficult and language is bigger and whatnot.

01:06:12 Well, you know, enterprise Python, let's call that a lot.

01:06:16 But like, you know, they are pushing for features that make more sense in that scale or not exclusive.

01:06:21 So I think it's quite hard because now it's not a matter anymore of like deciding where the actual good decision is and like, you know, digging for it and picking it and, you know, this was a good decision.

01:06:32 Not anymore.

01:06:32 Right.

01:06:32 But now you need to take decisions that are going to affect a group positively and another group negatively.

01:06:38 And that is a quite important position to be into.

01:06:42 It's hard to know because the community is so diverse in terms of technical and application of the code and stuff.

01:06:48 Exactly.

01:06:48 And in action is some possibility in some cases.

01:06:51 And maybe we need to be more, you know, more conservative.

01:06:54 But in some others, it's impossible because, you know, the language needs to evolve.

01:06:58 Like the GIL work that was mentioned, we cannot say, I mean, we could say, yeah, we are not going to do it because, you know, it's going to break a lot.

01:07:05 And, you know, everyone is going to be doing part of the C extensions or whatever.

01:07:08 I mean, the language needs to evolve, right?

01:07:09 Like even grammar and, you know, implementations and, you know, community-wise.

01:07:14 And, you know, it's very hard.

01:07:17 It's very hard and it's impossible to make everyone happy.

01:07:20 Like, it's not difficult.

01:07:21 It's impossible.

01:07:21 And I think that's the biggest.

01:07:23 As a community, I will hope that, you know, more than we make everyone happy,

01:07:27 we understand each other and, you know, we come to a place when there is some good vibes about these problems.

01:07:34 I think that's going to be the biggest challenge, given how big our use base is.

01:07:37 Yeah, that is important.

01:07:38 All right, everyone, we are definitely out of time.

01:07:41 Thank you for taking all this really quickly.

01:07:43 Finish it up with just one of the final questions.

01:07:46 And we'll just super quick.

01:07:47 What editor used, Barry?

01:07:49 Emacs, still.

01:07:50 Thomas?

01:07:51 Joe, which no one will have heard of.

01:07:54 I have not heard of.

01:07:55 My brother's name is Joe, but I'm sure he doesn't help you.

01:07:57 I know Joe.

01:07:57 Joe is Joe's own editor and it's from like the 80s.

01:08:01 And it has WordStar key bindings, if you know what WordStar is, which is why I use it.

01:08:06 Right on.

01:08:07 Carol?

01:08:08 I have to say, truthfully, Vim, VS Code, PyCharm.

01:08:12 Right.

01:08:12 The gamut.

01:08:13 Brett, I could predict yours, but go ahead and let us know.

01:08:16 Visual Studio.

01:08:17 Right on.

01:08:18 Pablo?

01:08:18 Vim.

01:08:19 Vim.

01:08:19 Okay.

01:08:20 Well, I will join Pylang in saying thank you for all the work.

01:08:24 And it's great to be all keeping Python going strong.

01:08:29 Thank you very much.

01:08:29 Thank you, Michael.

01:08:30 Thank you.

01:08:30 Yeah.

01:08:31 Thanks so much.

01:08:32 Yeah.

01:08:32 Thanks for being here.

01:08:33 Thanks, Michael.

01:08:33 Thanks to you.

01:08:34 Bye.

01:08:34 Bye.

01:08:35 This has been another episode of Talk Python to Me.

01:08:39 Thank you to our sponsors.

01:08:41 Be sure to check out what they're offering.

01:08:43 It really helps support the show.

01:08:44 Get a job writing modern Python with a team that values software development.

01:08:49 Apply to Research Affiliates today.

01:08:51 Visit talkpython.fm/research affiliates.

01:08:55 Add high-performance, multi-party video calls to any app or website with SignalWire.

01:08:59 Visit talkpython.fm/signalwire and mention that you came from Talk Python to me to get started

01:09:05 and grab those free credits.

01:09:06 Want to level up your Python?

01:09:09 We have one of the largest catalogs of Python video courses over at Talk Python.

01:09:13 Our content ranges from true beginners to deeply advanced topics like memory and async.

01:09:18 And best of all, there's not a subscription in sight.

01:09:20 Check it out for yourself at training.talkpython.fm.

01:09:23 Be sure to subscribe to the show, open your favorite podcast app, and search for Python.

01:09:28 We should be right at the top.

01:09:29 You can also find the iTunes feed at /itunes, the Google Play feed at /play,

01:09:35 and the direct RSS feed at /rss on talkpython.fm.

01:09:39 We're live streaming most of our recordings these days.

01:09:42 If you want to be part of the show and have your comments featured on the air,

01:09:46 be sure to subscribe to our YouTube channel at talkpython.fm/youtube.

01:09:50 This is your host, Michael Kennedy.

01:09:52 Thanks so much for listening.

01:09:53 I really appreciate it.

01:09:54 Now get out there and write some Python code.

01:09:56 Bye.

01:09:57 Bye.

01:09:57 Bye.

01:09:57 Bye.

01:09:57 Bye.

01:09:57 Bye.

01:09:57 Bye.

01:09:58 Bye.

01:09:58 Bye.

01:09:59 Bye.

01:09:59 Bye.

01:10:00 Bye.

01:10:01 Bye.

01:10:02 Bye.

01:10:03 Bye.

01:10:04 Bye.

01:10:05 Bye.

01:10:06 Bye.

01:10:07 Bye.

01:10:08 Bye.

01:10:09 Bye.

01:10:10 Bye.

01:10:11 Bye.

01:10:12 Bye.

01:10:13 Bye.

01:10:14 you you Thank you.

01:10:17 Thank you.

Back to show page
Talk Python's Mastodon Michael Kennedy's Mastodon