#331: Meet the Python Developer in Residence: Lukasz Langa Transcript
00:00 Python is a technology and community built upon the goodwill and volunteer time of thousands of
00:05 contributors, from the core devs inside CPython to the authors of hundreds of thousands of external
00:10 packages over on PyPI. Until recently, the only full-time folks have been at the PSF doing very
00:16 important work, but that work has been largely outside of CPython the technology itself.
00:21 In July 2021, the PSF created the Python Developer in Residence position. The first
00:28 person in that role is Lucas Lange, and he's here to tell you how it's going and how it'll benefit
00:33 Python at large. This is Talk Python to Me, episode 331, recorded August 25th, 2021.
00:40 Welcome to Talk Python to Me, a weekly podcast on Python. This is your host, Michael Kennedy.
00:58 Follow me on Twitter where I'm @mkennedy and keep up with the show and listen to past episodes
01:03 at talkpython.fm and follow the show on Twitter via at Talk Python. We've started streaming most of our
01:10 episodes live on YouTube. Subscribe to our YouTube channel over at talkpython.fm/youtube to get
01:15 notified about upcoming shows and be part of that episode. This episode is brought to you by us over
01:22 at Talk Python training and the transcripts are brought to you by Assembly AI. Lucas, welcome back
01:27 to Talk Python to Me.
01:29 Lucas Lange: Very happy to be here. It's the first time you can see me as well, I guess. So it's kind of
01:33 kind of a new thing for me. So first times, first times.
01:36 Lucas Lange: You've been on the show three times before.
01:39 Lucas Lange: Yep.
01:39 Lucas Lange: You talked about, let's see, the very first one was gradual typing of production
01:44 applications. And that was applying type hints and mypy over on Instagram, which was fantastic work. And
01:51 Lucas Lange: I loved what you're doing there. Then we talked about the Python language summit. You
01:55 Lucas Lange: gave us a wrap up on that or a rundown on that for 2018 and then diving into CPython 3.8 and
02:02 Lucas Lange: beyond. So here we are again. Thanks for being back.
02:06 Lucas Lange: Yeah. Happy to be here. Like 3.8 is now already an old release, right? It's already in
02:11 security only fixes mode. So it was new at the time. Lucas Lange: Yeah. I think when we were talking about
02:16 it, it's like, what are the new exciting features? I guess, you know, while we're on that topic,
02:19 Lucas Lange: just real quickly is, you know, what are the new features that you're excited about now,
02:23 Lucas Lange: either 3.9, 3.10 or 3.11? Like what's out now, what's just about out and what's coming
02:29 Lucas Lange: soon?
02:29 Lucas Lange: There's quite many. The one that I'm kind of living with the most right now is actually
02:34 Lucas Lange: kind of just better error messages. So this is kind of like a trend that is still kind of
02:40 Lucas Lange: happening, right? So there's further changes for 3.11 later, which is already like the main
02:45 Lucas Lange: branch right now of development, right? So 3.10 is already in release candidate mode. So
02:50 Lucas Lange: like we're going to get the second release candidate pretty soon. And then,
02:54 Lucas Lange: you know, the final release. So all new features now go to 3.11 already,
02:58 Lucas Lange: but the better error messages like really kind of, they're kind of this icing on the cake that
03:02 Lucas Lange: make stuff much nicer for you. There's a bunch of typing changes that I was really looking
03:08 Lucas Lange: forward to like back in PEP 484 times, like when we first added string and well annotations
03:14 Lucas Lange: to Python. I always kind of wanted them to feel more native inside your code. And now with Python 3.10,
03:23 Lucas Lange: you can use, I guess it's PEP 604, like union types, you know, like that kind of are not so
03:30 Lucas Lange: verbose. They use the pipe operator instead of spelling out, you know, capital case union of
03:37 Lucas Lange: whatever, which is kind of more compact and also more readable through this, right? Because
03:43 Lucas Lange: now types that aren't super trivial don't look as scary anymore, right? Because like you kind of
03:49 Lucas Lange: don't have to have the square brackets so much and whatnot. Yeah. Yeah. For people who haven't explored this deeply, there
03:55 Lucas Lange: previously was basically a parallel, a mirrored hierarchy of types that weren't actually the types, but they
04:04 Lucas Lange: describe the types. So from typing import capital L list, that would say you're returning a lowercase L list as your type.
04:11 Lucas Lange: And then it got even more interesting when you have like optional, right? I have an optional user that's returned from this query. Now you can just do things like
04:19 Lucas Lange: user pipe none and things like that. Yeah, absolutely. So this was fun, but also like what
04:24 Lucas Lange: they really kind of like to use is that like the lowercase types just feel more natural, right? So, you know, kind of just putting
04:32 Lucas Lange: dicts and lists and whatever, like just straight out of built ins and just applying generics to them just kind of looks right. Like feels right. So yeah, it always felt weird. Like why do I have to do an import just to talk about this thing I'm already using, right?
04:44 Lucas Lange: Yeah. Because like, if you actually look at how the feature was enabled to
04:49 Lucas Lange: allow lowercase list of string and whatnot, like this is now part of the interpreter. This was a
04:54 Lucas Lange: kind of changed like deeply in the C code of the interpreter back in 2014 when we first released
05:01 Lucas Lange: PEP 484. The value of typing wasn't really so clear cut yet. It was a new idea. We wanted to have this out.
05:09 Lucas Lange: And we wanted to have people actually tested and say, you know, and is this something that Python could actually see value in?
05:16 Lucas Lange: So it was a little too early to make, you know, drastic changes to the interpreter just because it would be handy to have for typing.
05:24 Lucas Lange: Like it's kind of, you know, icky in the sense that between here and there, we clearly have this transition period where typing just becomes more natural to use.
05:36 Lucas Lange: And you know, more ergonomic and obviously the tooling like mypy matures, but it's what you have to do if you're dealing with a language that is 30 years old. Right?
05:46 Lucas Lange: So we didn't have this clean room experience because the language was already successful. It was already out there.
05:52 Lucas Lange: So yeah, like a bunch of new languages now have this comfort, like have this luxury of just being able to just, you know, can look at an empty page and just design from scratch. Like we had to evolve what we had.
06:04 Lucas Lange: Yeah, yeah, for sure. I mean, Python is 30 years old, right?
06:06 Lucas Lange: But you know, language that gives me sort of that comes to mind when you say that is Swift. Right? Swift took a bunch of these ideas like you have to explicitly.
06:16 Lucas Lange: Say here's a nullable reference type and whatnot, but like all of that stuff was done looking back at Python,
06:22 Lucas Lange: at C# at C++ and all these languages that, you know, and then like sort of put together the pieces. Right?
06:28 Lucas Lange: Yeah, absolutely. Like Swift in particular, I kind of like, you know, kind of it fits my brain.
06:34 Lucas Lange: I talk with Corey Benfield every now and again about it.
06:36 Lucas Lange: Like he's now working on it actually at Apple.
06:38 Lucas Lange: So yeah, I do feel it's, it's a good evolution of Objective-C since, you know, kind of it's where it all
06:45 Lucas Lange: Yeah, you know, started from.
06:47 Lucas Lange: It's definitely an improvement. I don't want to go too far down the rat hole,
06:50 Lucas Lange: But I do wish it had something like a better standard library like Python has. I feel
06:55 Lucas Lange: Like the language is good. But then when I want to do stuff, I'm like, oh, it's,
06:58 Lucas Lange: There's so much missing from like the foundation of it in terms of the functionality.
07:03 Lucas Lange: Anyway, long story short, because it still depends on the whole Objective-C sort of like
07:07 Lucas Lange: really funky class library stuff.
07:10 Lucas Lange: Oh yeah.
07:10 Lucas Lange: Yeah. I'm sure I'll get mail about that.
07:11 Lucas Lange: All right. So sorry, I super derailed you. What else is exciting that's coming in the near term?
07:18 Lucas Lange: Of course, like the biggest kind of feature that was most controversial,
07:22 Lucas Lange: probably is the match statement, right? So pattern matching in Python, it is a huge feature.
07:27 Lucas Lange: It kind of changes how, you know, some of the code that you're dealing with looks.
07:32 Lucas Lange: And also it kind of introduces for the first time this concept of context specific
07:39 Lucas Lange: keywords, right? Like that's something that maybe not so many what's new in Python 3.10 posts
07:45 Lucas Lange: It's kind of touched on, but just notice that you can still use match and case as regular
07:51 Lucas Lange: variable names. You can still name your functions that you can still use this as argument
07:56 Lucas Lange: names and whatnot and whatnot. But when the Python grammar discovers when the parser sees
08:01 Lucas Lange: that, oh, this is in a place where it fits a construct that looks like a match statement,
08:07 Lucas Lange: it'll deal with that and it'll parse that successfully. That is what we could do,
08:12 Lucas Lange: having this new peg parser that it started in Python 3.9 like it was released then already,
08:19 Lucas Lange: but without any new features, right? Like now in Python 3.10, we're getting the match
08:23 Lucas Lange: statement. I'm still kind of, you know, to be honest with you, before this area where I can
08:29 Lucas Lange: tell you that I have a lot of experience writing match statements, it's like super useful for me
08:34 Lucas Lange: and whatnot. Like I've written a few of them where it actually made sense and made the code.
08:39 Lucas Lange: Well, I couldn't really say shorter because usually it actually doesn't, but much
08:44 Lucas Lange: more readable because it's kind of flatter. It's easier to parse. Like visually, I mean by a
08:50 Lucas Lange: person. But it's not something that I really use daily. So like whenever somebody is really
08:56 Lucas Lange: worried about like, hey, like what is Python becoming? It's such a complex feature.
09:00 Lucas Lange: Like, you know, what about the kids? Think of the children. Like I always tell them like, hey,
09:04 Lucas Lange: like how many descriptors did you implement in your last week or month or year?
09:10 Lucas Lange: Like probably none.
09:10 Lucas Lange: True. And how many meta classes?
09:12 Lucas Lange: Exactly.
09:13 Lucas Lange: So like how many meta classes have you worked with? That's a good point.
09:16 Lucas Lange: It's almost like another feature like this, where sometimes it will make perfect sense,
09:20 Lucas Lange: but most often, just like with assignment expressions, like most often you won't see them. You
09:27 Lucas Lange: You won't be using those.
09:28 Lucas Lange: Yeah.
09:28 Lucas Lange: Okay. Well, fantastic. You know, you're talking about the foundational stuff like the peg parser,
09:35 Lucas Lange: right? That's not a feature that a bunch of people are saying, you know, I can't wait for a
09:41 Lucas Lange: better parser, right? But it's one of these enabling things. And I feel like this whole role that
09:46 Lucas Lange: you're in is sort of in that same idea, right? The same vein that that it might not be super
09:54 Lucas Lange: public or generate a bunch of new features, but it might be making things a lot smoother for
10:00 Lucas Lange: everyone who wants to come along and do those things. What do you think?
10:04 Lucas Lange: The way I look at it is that there's a lot of us on the core team and even more people
10:11 Lucas Lange: around the core team who are kind of, well, we call them drive by contributors, right?
10:16 Lucas Lange: Yeah.
10:16 Lucas Lange: Like, you know, they would find an issue, just produce a bunch of pull requests and
10:20 Lucas Lange: maybe then kind of disappear. Or maybe they're around, but like not producing more for us.
10:24 Lucas Lange: And we are obviously very happy with any contribution. And the sad reality is that like,
10:29 Lucas Lange: we have more of those than we can realistically review.
10:33 Lucas Lange: Yeah.
10:33 Lucas Lange: So the problem isn't even that, you know, you need more people to actually be able to,
10:39 Lucas Lange: actually produce value. We need people to evaluate the value that we're already getting
10:45 Lucas Lange: from the community and from each other to be able to, you know, actually merge them into
10:50 Lucas Lange: mainline and to see how the language evolves. Obviously every year, you know, this changes
10:56 Lucas Lange: over the years how Python is developed. Like we're going to have a bunch of people who are
11:01 Lucas Lange: super invested and they're going to be spending crazy amounts of time, including on weekends and
11:06 Lucas Lange: whatnot, like to work on Python, even for free. I know I did that for like, you know,
11:10 Lucas Lange: a decade. So those contributions are super valued, but usually those really,
11:15 Lucas Lange: those people change, right? Like, you know, you cannot really do this in a consistent
11:20 Lucas Lange: manner day in day out for a long period of time. You know, your life situation changes,
11:26 Lucas Lange: you know, your job changes or whatnot. And you know, like you stop contributing. And what happens
11:31 Lucas Lange: to Python then? Well, we lose some value. Currently we have over 1400 open pull requests,
11:38 Lucas Lange: and I've been on a mission to kind of bring that number down. Currently, as I'm looking
11:42 Lucas Lange: at it, it's 1421.
11:43 Lucas Lange: I was looking at this morning here, I put it up on the screen for people watching live and
11:48 Lucas Lange: wow, wow, wow. That is a lot of information coming in and not just the sheer number of open
11:55 Lucas Lange: ones. But the thing that struck me is I'm reading down 26 minutes ago, an hour ago, two hours
12:00 Lucas Lange: ago, three hours ago, three hours ago, four hours ago, five hours. Like that's hard to keep up no
12:06 Lucas Lange: matter what, right?
12:07 Lucas Lange: Yeah. Some of those are already reviewed, like the faster implementation of Gzip decompress that you
12:12 Lucas Lange: have like somewhere in the screen, like a little lower than the first one.
12:16 Lucas Lange: Yes, like this on lowest one at the moment.
12:19 Lucas Lange: So, so the thing is like there's so many of those that, you know, kind of somebody
12:24 Lucas Lange: actually has to come in and you know, day in day out, like butts in seats, just review the
12:29 Lucas Lange: value that people are already providing for you. Like this particular change actually extracted
12:34 Lucas Lange: from an older rejected change, like is actually providing clear value, right? Like now we're
12:41 Lucas Lange: going to have Gzip compress and decompress be faster, right? But it is actually not change that is
12:46 Lucas Lange: obvious, right? Like you have eight files that are changed. You really need to see that,
12:51 Lucas Lange: Oh, there's a lot of code that changed. Some of it actually wasn't, it was just moved so that we
12:55 Lucas Lange: could reuse it better. Some of it actually has subtle changes. So this isn't something that many
13:02 Lucas Lange: volunteers will be willing to do on their free time because it's mostly kind of, well, it's work.
13:07 Lucas Lange: It really is work.
13:08 Lucas Lange: It's the janitorial typo. Just keep it clean. Keep it going. Yeah.
13:13 Lucas Lange: Exactly.
13:14 Lucas Lange: Yeah, exactly.
13:15 Lucas Lange: So let's go ahead and actually introduce this main topic here, the big announcement for you.
13:20 Lucas Lange: On your blog here you have, I am the new CPython developer in residence. Congratulations.
13:25 Lucas Lange: Ah, thank you. I'm still very excited about this. Like back when we only had volunteers doing this and maybe,
13:31 Lucas Lange: while Guido being, you know, kind of tolerated as the BDFL at Dropbox, because obviously he was being paid to actually move my
13:40 Lucas Lange: PyPy forward. Right? That was his team. But obviously he did a lot for Python as well. And that was
13:46 Lucas Lange: Kind of understood by Dropbox that it's fine. And many of us were in the same situation. Like I was
13:52 Lucas Lange: tolerated as a CPython core developer at Facebook and some others were at their own respective
13:58 Lucas Lange: companies. So I was super frustrated by this because, you know, there's tremendous
14:03 Lucas Lange: value that we're giving to the entire community, including multi-billion dollar corporations.
14:08 Lucas Lange: Yes.
14:09 Lucas Lange: And we only thought like, hey, like the expectations are high and we want to provide
14:13 Lucas Lange: the best tooling that we can for the industry. But it is kind of a hard sell,
14:18 Lucas Lange: you know, when your kid wants to go out and you're like, oh no, I'm fixing this bug. But at
14:23 Lucas Lange: the same time you're doing this for free. So you're thinking, you know, like, where did I go wrong
14:28 Lucas Lange: in life? Like, you know, my values are somewhere, not where they're supposed to be.
14:31 Lucas Lange: So Red Hat actually hired Victor Stinner like full time to work on Python, but it was still
14:36 Lucas Lange: Red Hat. He's still an employee of a company that is for profit. So now,
14:41 Lucas Lange: Yeah.
14:43 Lucas Lange: the CPython developer in residence is different, right? It is sponsored by a PSF sponsor.
14:47 Lucas Lange: In this particular case by Google, like Google as a company reached out to the PSF
14:53 Lucas Lange: specifically to sponsor stuff like this. And that is amazing. I am very happy that they did,
14:58 Lucas Lange: because you really believe that this is something that might, you know, kind of alter how
15:02 Lucas Lange: we think about maintenance of community driven projects like Python.
15:07 Lucas Lange: Yeah. And thank you to Google for doing this. It's so easy for them to say,
15:11 Lucas Lange: Well, maybe we could just hire some core developers and they could work on
15:14 Lucas Lange: speeding up the Google Cloud stuff for Python and we'll let them also contribute back.
15:19 Lucas Lange: Right. That would be the sort of natural historical way of doing something like that.
15:24 Lucas Lange: Yes.
15:24 Lucas Lange: But here it's like, no, let's actually directly sort of effectively hire a person,
15:32 Lucas Lange: but put them in an independent role that just makes Python better. And that's interesting,
15:37 Lucas Lange: Right?
15:37 Lucas Lange: Yeah. Like amazing thing about this is that, you know, while
15:40 Lucas Lange: I do hope that some of the work that I already did was useful for Google as well,
15:44 Lucas Lange: like there is no job description written by them and there are no like tasks that they're
15:50 Lucas Lange: directly giving me.
15:51 Lucas Lange: Right? Like it's really independent in this sense.
15:54 Lucas Lange: And this is what makes it super healthy and like, you know, kind of, I think,
15:57 Lucas Lange: well, sustainable for the future that it is actually me being able to talk to the
16:03 Lucas Lange: steering council, which I do regularly and to the PSF about like,
16:07 Lucas Lange: Hey, what do we actually need? And we don't have to take into consideration,
16:11 Lucas Lange: you know, kind of direct value for our sponsors.
16:14 Lucas Lange: Like we are providing indirect value, like, but you know, we don't have a roadmap where
16:20 Lucas Lange: there are certain milestones that we need to reach like it's not like that. So I'm
16:24 Lucas Lange: very happy about this difference because we did have sponsors before that did have
16:29 Lucas Lange: either projects that they really wanted to move forward.
16:32 Lucas Lange: Right? You know, and we still have those like, so for example, packaging and whatnot,
16:36 Lucas Lange: or events that happen. Right? So Facebook sponsored, you know, core development
16:41 Lucas Lange: spins, sprints. So we had those at the campus two years in a row and then Microsoft
16:46 Lucas Lange: took over and we had Bloomberg and then we had COVID, you know, so like those things do happen
16:52 Lucas Lange: and I'm very happy for those. But this is a kind of a game changer. Like we have not done
16:58 Lucas Lange: this way of sponsoring a project before where we're actually thinking about the software
17:02 Lucas Lange: word in Python software foundation where we directly sponsor work on the code on the source
17:09 Lucas Lange: code. Yeah. The PSF has what seven, eight, nine full-time employees, but you are the first
17:14 Lucas Lange: employee who is in a sort of software developer role. I think the closest we had before
17:20 Lucas Lange: was a project management role for the new PIP. Is that right?
17:24 Lucas Lange: Yeah. So like we, we have that, like there's also E who works on our infrastructure,
17:29 Lucas Lange: right? So what is also important for Python and this is the
17:32 Lucas Lange: dealt with by the PSF is to keep the website running and to keep my PI running, right?
17:39 Lucas Lange: Yeah. And so on. So obviously all of this requires constant supervision.
17:44 Lucas Lange: And it's also something that you can spend your life like working full-time on. And this
17:48 Lucas Lange: is what E is doing. However, that wasn't contributing to CPython as a repository directly.
17:54 Lucas Lange: And this is the entire change.
17:56 Lucas Lange: Yeah, that's fantastic. Quick shout out to just the two other visionary sponsors. We've got Bloomberg
18:01 Lucas Lange: and Microsoft through Azure. So I think that's awesome. I think this whole visionary
18:06 Lucas Lange: sponsor, Google was the first one in that category, right?
18:08 Lucas Lange: Yes. That is a change in how the PSF was looking at sponsorship before. Like,
18:13 Lucas Lange: I'm very happy to see that like this entire developer in residence position
18:18 Lucas Lange: was something that I was pretty stressed by when I first got to know that,
18:23 Lucas Lange: Oh, this is actually going to be happening because I do believe that my particular
18:28 Lucas Lange: performance kind of will make or break future ideas on whether this should be extended to
18:34 Lucas Lange: more people, right? Or just closed down altogether. So it's not only providing,
18:40 Lucas Lange: value to the project. It's literally providing kind of proof that this development model works.
18:46 Lucas Lange: So yeah, there's certain responsibility around it. I think I already caught a rhythm that I can
18:52 Lucas Lange: sustain and I think, you know, kind of splits my own coding with actually
18:58 Lucas Lange: reviewing and accepting other contributions, which are the bulk of what I'm doing. Because
19:02 Lucas Lange: like, you know, otherwise, if I just focused on coding all week, I might maybe if I'm lucky and
19:08 Lucas Lange: other people review my work, make maybe five, maybe six changes to see Python. Like we're doing
19:14 Lucas Lange: careful reviews because like even simple changes might have actual far reaching consequences. But when I'm
19:19 Lucas Lange: reviewing other changes, we sometimes have like 50 or over 50 changes that I can actually
19:25 Lucas Lange: merge into mainline. So I'm very happy about that. You know, like that that is obviously
19:30 Lucas Lange: a much better deal for everybody.
19:32 Lucas Lange: Yeah, it's one of these enabling roles, not just sort of heads down coding roles, which I think
19:37 Lucas Lange: is the important thing.
19:39 Lucas Lange: Absolutely.
19:39 Lucas Lange: Yeah. Paul Everett out there in the live stream says, Lucas Lange: you mentioned the stress from the responsibility. Agreed. It takes some bravery to do it.
19:45 Lucas Lucas Lucas Lucas: Oh, thank you.
19:46 Lucas Lange: At the same time, I was literally giving talks before about, you know, yeah, we should
19:51 Lucas Lange: do this. So, you know, like I kind of put myself out there even before this, this was a
19:56 Lucas Lange: position. So at least applying because like, obviously it wasn't at all obvious to anybody
20:01 Lucas Lange: like who is going to be chosen for this. I have this applying was, was sort of in the cards.
20:07 Lucas Lange: Like I had to man up and do it, you know?
20:09 Lucas Lange: Yeah, that's cool. Let's sort of explore a bit your background. Like,
20:13 Lucas Lange: It's not just that you are a user of Python. I don't know, even a really good Python
20:17 Lucas Lange: developer themselves might not be a good fit for this role because it really is like
20:23 Lucas Lange: closely working with people contributing to the code base and the core developers and all
20:27 Lucas Lange: that. So, you know, maybe give people a sense of some of the things that you did previously to
20:32 Lucas Lange: to this in the cPython space. Like for example, you create a black. I think maybe people have heard of black.
20:38 Lucas Lange: Yeah. If anything, this, this was actually probably on something that made it harder for me to get this position.
20:44 Lucas Lange: Because obviously everybody is scared. Like, hey, are you going to reformat all of this
20:48 Lucas Lange: library now? Like, you know.
20:48 Lucas Lange: Oh, you're bringing the black guy. He's going to totally format it different.
20:52 Lucas Lange: yeah.
20:54 Lucas Lange: The biggest PR ever.
20:55 Lucas Lange: No, like, so joking aside, like I'm not new in the project. And that was obviously important. It's kind of hard for me to
21:02 Lucas Lange: you know, kind of now enumerate the reasons why I was chosen. Like, you know, kind of,
21:06 Lucas Lange: I can only tell you what I told the PSF when I applied, because that was actually like the
21:12 Lucas Lange: only time in my life where I actually had to write like a proper cover letter and actually
21:17 Lucas Lange: kind of, you know, do some soul searching and say like, hey, am I actually a good fit for this?
21:22 Lucas Lange: And you know, I think that's my mission statement.
21:24 Lucas Lange: Exactly. Like, yeah, pretty much. So, you know, I've been around for a while. I've done some changes,
21:30 Lucas Lange: big and small. There's a bunch of peps with my name on them. So I guess, you know, kind of,
21:34 Lucas Lange: it's not just, you know, tiny typo fixes and introducing new bugs. It's also introducing peps.
21:42 Lucas Lange: Some of them might be more clear cut wins than others.
21:45 Lucas Lange: Yeah, you appear in a lot of the peps. You were the release manager as well, right?
21:49 Lucas Lange: Yes, I still am for 3.9. 3.9 is now currently already pretty late in the game in the sense that we will be
21:56 Lucas Lange: releasing Python 3.9. 7 just next Monday. So probably not when, you know,
22:02 Lucas Lange: the listeners of the podcast are going to, well, like they're probably going to see this
22:07 Lucas Lange: already released, but that for now, like for the ones like watching the live stream.
22:11 Lucas Lange: Yeah. Next Monday is when we're going to release 3.9. 7. So that's already the seventh
22:16 Lucas Lange: bug fix release of Python 3.9. There's going to be a bunch of more of those,
22:21 Lucas Lange: and then it's going to graduate or retire into the mode where only security fixes
22:27 Lucas Lange: are considered for inclusion. This is where Python 3.8 is already. I've been managing the releases of that.
22:34 Lucas Lange: How long do you Lucas Lange: remain the release manager until 3.9 is retired or does it get handed off at some point?
22:40 Lucas Lange: No, no, no. So like for, Lucas Lange: You become a release manager for the entirety of a life cycle of two releases,
22:48 Lucas Lange: right? This was true for a long time. Like I didn't dig up like, you know, kind of prehistory,
22:55 Lucas Lange: but since like the Python 3 releases, I looked at, like that was the case. Python 2.7,
23:01 Lucas Lange: I think was, you know, Benjamin and 2.6. I'm not sure that it was him. Like it was probably
23:06 Lucas Lange: Barry Warsaw. But the thing is like 2.7 was, you know, the longest release managing job ever.
23:13 Lucas Lange: So, you know, kind of you could just burn yourself out on that one release. So that's fine.
23:18 Lucas Lange: For us currently, we're managing two releases. Like, so how long is that? Well, with the development of
23:25 Lucas Lange: Given Python version where 3.11 is already being developed right now, it takes around a year and a half
23:32 Lucas Lange: for it to actually, you know, get out there as the final release. We do have a cadence where we release new versions every year. But that's only because once one release becomes beta, we can already switch the branches. And now new features go to a yet new version. So currently, it's a little weird.
23:51 Lucas Lange: I think that happened on your watch, right? That happened on your watch. Wasn't it 18 months before?
23:56 Lucas Lange: Yes. So 18 months of a cadence was never really a hard calendar event. Like it was more like, you know, a guideline where like, yeah, we're going for 18 months. Sometimes it was 19, sometimes it was 20. But it was problematic for many reasons. So yes, like one of the peps that I authored was a PEP saying, hey, we should change the cadence of development to make it on annual release cadence, which helps with downstream
24:21 Lucas Lange: distributors like Linux distributions. And for many other reasons, like, you know, for us, like that's in the pep. But yeah, like to just close on your original question, like, it takes around eight years from starting the job to like actually saying, oh, now I'm a retired release manager. So it's a long term contribution.
24:41 Lucas Lange: That's a big commitment, isn't it?
24:42 Lucas Lange: Yeah, wow, that's amazing. Well, thank you for that. That's, that's wild. So when you touched on this a little bit, but on your original blog post,
24:51 Lucas Lange: announcing it, which I'll link to in the show notes, of course, you talked about what can one person do is the developer in residence. And you called out a bunch of specific things here about how you can basically be a multiplier effect for people who want to contribute, who are not core developers, you want to maybe like sort of give us the rundown on those things?
25:12 Lucas Lange: Sure. So like, the blog post, I'm still happy with it, because like, it kind of shows that it wasn't just winging it, like I actually thought it through, but like, you know, kind of it lists a bunch of things that are ideas, and then you actually start doing the job and some things become clear, right? So like, all of the things I wrote are true. But what I for example, didn't quite like word out in the blog post that I realized is important is that very many changes that I touch, are kind of 90% there, you know, where I cannot just merge with the
25:42 Lucas Lange: them as is, but really what I need changing is the doc string is just bad, or the comment is misleading, or whatever. So like, you know, a bunch of simple things that, you know, kind of, it feels just wrong to just review the change and say, hey, like, I request you do this small knit, you know, because I cannot merge it as is.
26:03 Lucas Lange: Yeah, you got to do the line break, because this code is 99.
26:07 Lucas Lange: Yeah, and 90 characters long, like you could just break that line and then commit it, right?
26:11 Lucas Lange: Yeah, so this is what I do, actually, very often right now, I just kind of take the change locally, you know, run the tests that, you know, kind of are important for this particular case, I do the change that I would ask for just myself, you know, like without actually looping in the original author, most people actually leave that tick on their GitHub pull requests, making my job easier, like, so like, yeah, thanks for that. And then, you know, kind of, yeah, maybe they forgot.
26:36 Lucas Lange: I just did a PR last night, and I allow maintainer to edit the PR. Yes.
26:40 Lucas Lange: Yes, this is something I'm using very often right now. Like, because like, if you forgot to, for example, put a news entry for this, and you've never done this before, like, yes, there's a bot for this that Mariada wrote. So like, you know, you just need to go and read how to do this, and you will be able to do this from now on. But you know, when will you do that? Maybe tomorrow, maybe in a week, maybe you're just gonna leave this pull request, you know, to go stale. So instead, I just go and do this for you.
27:09 Lucas Lange: This kind of level of multiplication really, I think is kind of, you know, closing the gap, like because very many changes, and sometimes it's just sad to look at, you know, like you have a change from 2017 that is clearly great, you know, like, clearly valuable. And then there was some knit that, you know, prevented it from being merged. And now it's 2021. And it no longer merges, because there's conflicts with other unrelated things.
27:33 Lucas Lange: It's so out of date. It's no longer just a knit. It's now like a big now.
27:37 Lucas Lange: Now it's hard to merge. And obviously, not just that, maybe that original person who created the change and worked hard on it now is discouraged or moved on to other projects. Because you know, like it wasn't merged for four years. So this is what we want to change, right? We want to make the, not just the first time contributor, but like any contributor, well, life or experience, like much better. Like at least providing feedback. Like,
28:01 Lucas Lange: Like not all feedback will be positive. Like, this is already a mature project. And sometimes very good and easy ideas actually aren't if you look close enough, you know, like, this is the frustrating part where even kind of clear cut advantages might be disadvantages for a different group of users, right? Or on a different platform that you're not a user of, but you know, we have to actually look at the big picture. But at least you're going to know from somebody like me that, hey, like,
28:30 Lucas Lange: This is good, but we cannot take it because of X, Y, Z.
28:35 Lucas Lange: You know, it's super frustrating or disappointing to put work into doing a PR, submitting the PR, and then it's not that it was rejected. It gets no response. And that's, I think, really frustrating. Like I spent a whole day because I was thinking this would make this thing. I almost works for me, make it perfect for me. And here's the thing. And the answer could be no, it's not the right direction, but no answer at all is just like, ah, I'm not sure I want to do this.
28:58 Lucas Lange: You know?
28:59 Lucas Lange: Yeah.
29:00 Lucas Lange: Related to that sort of, Rodrigo out in the live stream has a pretty good question. I think let me throw that out to you. And you know, what are some of the advice to potential future drive by contributors? How could they make your life easier?
29:10 Lucas Lange: Well, like in the future, we'll move to GitHub issues. So a bunch of this will become easier for the contributors themselves. But currently that we still have bugs, Python.org. There is a required step, pretty much for the
29:26 Lucas Lange: required step pretty much for anything that isn't a trivial typo, which is you need to have a bugs, Python.org account where we know that you signed the CLA. Right? So the contributor license agreement saying I release my, you know, code under Apache, for example. Right? So that we can actually use it and merge it and it's fine. So this is something that, you know, kind of is the important original step. And once you're already on bugs, Python.org. And your change is not trivial.
29:54 Lucas Lange: Please click that, you know, open new issue button and write what you're doing and why. Maybe it's already there. Maybe you already know that you're fixing a particular thing that was already reported by somebody else. But if not, like spend this five to 10 minutes describing what is happening and why you want the change applied. Very many changes simply do the thing that they want to do. Many of them don't even write in the pull request name, like what they're doing. It's simply the original GitHub update file.
30:22 Lucas Lange: Which really, you know, is a puzzle now for anybody else because we don't really know why this thing was touched in the first place. So essentially just describe like where you're coming from. Like what is this change doing? Like that is already, that's already great. That already kind of gives context to us.
30:40 Lucas Lange: Would you suggest that people create an issue and get a little bit of buy in from you all before actually doing the change and the PR? Like, would it make sense to say I'm considering this? I'm happy to do a PR. Here's the plan. Would you accept this if I did it?
30:58 Lucas Lange: Depends, right? Lucas Lange: Okay. Because like that is the worst centrist, bleak answer that anybody can give. Depends, right? When you're doing bug fixes, you should just go ahead and, you know, do your best and make the bug fix.
31:11 Lucas Lange: Yeah. Here's the failing test. Here's the fix. Yeah.
31:13 Lucas Lange: Yeah. But if you are saying, hey, this library should have this new function that I am using in my own project. So I just want to put it in a safe functools or whatever. So before actually going ahead and creating that pull request, like it's probably
31:17 Lucas Lange: might sense to discuss it with us because a growing standard library, well, isn't so clear cut a value as you think, right? Because it's a maintenance burden.
31:38 Lucas Lange: Yeah, absolutely.
31:39 Lucas Lange: And more importantly, you know, now it has to consider all the usage groups that the original author might not care about, but we have to, we necessarily have to. So yeah, for features, definitely file an issue, you know, describe your problem. You might actually, if that makes it easier for everybody to discuss, just submit a pull request saying, hey, this is the feature if you want to talk about it. So we actually talk about something concrete instead of an idea. But if you, for example, say that, hey, we need to rewrite multiprocessing.
32:08 Lucas Lange: So it does this other thing instead of creating a multi file gigantic pull request, like let's discuss first.
32:15 Lucas Lange: Talk Python to me is partially supported by our training courses. At Talk Python, we run a bunch of web apps and web APIs. These power the training courses as well as the mobile apps on iOS and Android. If I had to build these from scratch again today, there's no doubt which framework I would use. It's FastAPI. To me, FastAPI is the embodiment of modern Python and modern API.
32:37 Lucas Lange: You have beautiful usage of type annotations. You have model binding and validation with Pydantic and you have first class async and await support. If you're building or rebuilding a web app, you owe it to yourself to check out our course modern API's with FastAPI over at Talk Python Training. It'll take you from curious to production with FastAPI. To learn more and get started today, just
32:44 Lucas Lange: Just visit talkpython.fm/ FastAPI or email us at sales at talk Python dot FM.
32:51 Lucas Lange: Another question out there I think is good from Paul is your PR review velocity. Do you expect it to go up as
32:51 Lucas Lange: As you get better and maybe automate or go down as you hit the heart of
33:01 Lucas Lange: Hard to say.
33:01 Lucas Lange: It's like clearing out your inbox a little bit, right? Like some of them are using
33:03 Lucas Lange: Yeah, I think it's a little bit.
33:05 Lucas Lange: Yeah, I think it's a little bit.
33:07 Lucas Lange: Yeah, I think it's a little bit.
33:09 Lucas Lange: Like, oh, that's a whole day. Oh, no.
33:23 Lucas Lange: Essentially, it is not very easy to kind of, you know, foresee what's going to happen a given
33:28 Lucas Lange: week. But one thing for now has been constant. Like, you know, I need to get the number
33:34 Lucas Lange: of pull requests down like below the number that we have right now because like there's
33:38 Lucas Lange: there's going to be some that are on page like 35 of the, you know, open pull requests page.
33:44 Lucas Lange: So I will probably never get to them otherwise. So I need to bring the number down.
33:48 Lucas Lange: And so far, just by myself, I was unable to do it. Like just I cannot do it. Like I had one week
33:54 Lucas Lange: where I really said like, hey, just, you know, 40 hour work week be down. Like I need to see if I can
34:02 Lucas Lange: really bring this number down, you know, and I almost merged 100, you know, so that was not
34:09 Lucas Lange: something I can do every week. And I still didn't meet the, you know, the goal because I did leave
34:16 Lucas Lange: the account below 1400 when I went to sleep and I, you know, woke up the next day and it was already
34:22 Lucas Lange: over, you know?
34:23 Lucas Lange: Yeah, we saw the rate of incoming ones. That's a lot.
34:26 Lucas Lange: Yes. So I'm doing around 50 ish a week right now. And you know, kind of it sounds super high, but
34:31 Lucas Lange: you know, some of them are backboards to branches that we maintain. I list those because some of
34:38 Lucas Lange: those backboards aren't trivial, right? Like they will conflict because, you know, the files changed in
34:42 Lucas Lange: between or they require some push, you know, from a person because the bot didn't do what it's supposed to do. So, you know,
34:49 Lucas Lange: it's also work. But 50 isn't really, you know, kind of me kind of flexing. I can do so many
34:54 Lucas Lange: changes. It's really the rate of change that you can see. So there are enough new changes,
34:59 Lucas Lange: right? That I guess I can always forever just stay on page one and just deal with those. But that would
35:07 Lucas Lange: feel unfair, right? You know, that, you know, kind of that is some reversal of priorities
35:12 Lucas Lange: where the last that comes in.
35:14 Lucas Lange: Yeah. You almost need to go to the last page and work your way forward.
35:17 Lucas Lange: Exactly. So, so sometimes I would look at the older ones, you know, basically just asking a interesting
35:23 Lucas Lange: query to the search, you know, pull request search on GitHub and see what's there for, for example,
35:30 Lucas Lange: this file or, you know, what's already approved and that I can, you know, kind of maybe push over the line and so on. So there's going to be some balance there. I don't expect to go any faster than I currently am because I can't really automate much there. Like there might be some instances where if we analyze the pull requests better, we find that, oh, there's an entire genre of pull requests.
35:52 Lucas Lange: We can just bulk close, but I can't really, you know, okay, now I like put this on the report. Like it's like, oh, I closed 1500 pull requests. I'm so great. Now, like the ones that I put on the weekly report are all that I like with my own eyes look at and review. So I don't see how automation can really help me, you know, do that faster. Like we need to be careful, right? Like it's still a language used, you know, for some important stuff. And, you know, in
36:22 Lucas Lange: Yeah, it's still a language used in our industry and beyond. So, you know, kind of a higher rate of change sounds nice, but it also, you know, is risky, right? If you don't do it responsibly. So I think that the 50 ish number that I'm currently at, like, is enough that I don't feel like, you know, I could be doing more. It's around what I can reasonably with a clear mind, like review day in, day out. And I still have some time to actually code, which is also fun because now you're contributing something of your own. But yeah,
36:52 Lucas Lange: Like I don't think I can get to 100 every week, like regardless of the automation I can come up with.
36:57 Lucas Lange: Yeah. And maybe they get harder.
36:58 Lucas Lange: Oh yeah, they might.
36:59 Lucas Lange: Because you could go, all right, this one, I can quickly close this. I can quickly close this. But as you sort of cycle, iterate over that list, like you get stuck more with the hard ones.
37:08 Lucas Lange: Yeah, absolutely.
37:09 Lucas Lange: Yeah. So you mentioned the weekly report, you're doing a weekly report that's just out in public. So for example, I'll link in the show notes to your weekly report for July 26 to August 1st. Was this like your second or third week?
37:22 Lucas Lange: Something like that?
37:23 Lucas Lange: Yeah.
37:24 Lucas Lange: So if people want to keep up with what you're doing, it's right out there, isn't it?
37:27 Lucas Lange: It would be out there anyway, right? Because like, even if you don't look at the reports that I'm writing, like you can still go to my profile on GitHub and just see like what the stream says there. And if it doesn't say anything, like, you know, that's kind of worrying. It's like, hey, is this guy even working? What is he doing?
37:41 Lucas Lange: Check your Instagram, see if you're on the beach, just hanging out.
37:45 Lucas Lange: Exactly. And I was actually last, just last week. Yes. So the weekly reports are kind of, you know, thought of by the way.
37:52 Lucas Lange: I mean, personally, since like the PSF wants me to blog about what I'm doing, but not at this cadence. Right. But I personally just want to kind of tell you what I'm working on. Because ultimately what I'm doing is work on an open source project for the community. Like Lily hired by the Python social foundation. So there is no agenda that is personal, like, you know, to me or driven by some corporation. Like I'm literally maintaining this for you. So like, why not just let you in?
38:22 Lucas Lange: On what I've spent my time on most of those I expect are going to be pretty boring after a while. Because like a big part of it, like at the bottom is always just a list of PR so we can actually click through and see like, Oh, what did, what did I do there? But you know, I always try to like keep it interesting by, you know, kind of finding some highlights that, you know, I found particularly interesting a given week.
38:42 Lucas Lange: Yeah, I think this is really valuable. I don't help people a lot to sort of see what the role is doing. So originally this role was based on Django's fellowship program, right?
38:54 Lucas Lange: Oh, yes.
38:54 Lucas Lange: Yeah, that's really cool. So you're able to, Django had this idea of bringing on people to help deal with the lower, not lower level, the, the more maintenance oriented stuff, right? Like exactly what we've been talking about. And I know one of the things you talked about somewhere in one of your articles. I can't remember which.
39:10 Lucas Lange: Was basically, you're very excited about this role, but you're also a little nervous because you want to make sure that you're the first one doing it and you want to make sure that it is going strong for the next year and the year after and whoever comes along you want. This is a good thing. You want to keep going. Right. So that's a little bit.
39:28 Lucas Lange: Oh, yeah.
39:29 Lucas Lange: You're kind of breaking the ground there, right?
39:30 Lucas Lange: Yes. So this is important for many reasons, obviously. Right. Because like, you know, we can go ahead and talk about like how this can transform Python if there's enough people doing this full time and whatnot.
39:40 Lucas Lange: Yeah.
39:41 Lucas Lange: And this is all true. But you know, there are also kind of more like down to earth reasons why I would like more people to be able to experience work as I am right now, because it's just a wonderful way to work. And not only am I working on something that was my hobby for like a decade now. So I can just day in day out, just kind of, you know, I feel like I'm just kind of just doing the hobby right now. So it's amazing. But also, and this is something that, you know, like kudos to
40:09 Lucas Lange: Google, like the sponsorship level for this is Bay Area level of salary for a software developer. So like, it doesn't really matter that I'm here in Poland, you know, kind of where very many companies would apply some location specific salaries to a position. And now like this is Lily kind of the like, well, like I don't want to say premium grade, but like industry strong salary here.
40:10 Like the sponsorship level for this is Bay Area level of salary for a software developer.
40:17 So like, it doesn't really matter that I'm here in Poland, you know, kind of where very
40:23 many companies would apply some location specific salaries to a position.
40:28 And no, like this is really kind of the like, well, like I don't want to say premium grade,
40:33 but like industry strong salary here.
40:36 It's not like you had to go and say, I'm really going to take a hit, but I really
40:40 want to do this.
40:41 So let's just do it.
40:42 Right.
40:42 So it's a proper job.
40:43 Not at all.
40:43 Not at all.
40:44 Which is exactly why I think, you know, it's both important to the project, but also important
40:50 to all those people who are already contributing.
40:52 They're already providing value.
40:54 And now if they got paid, like, you know, actual industry strong rates for their work, like
41:01 this has the overall kind of opportunity, or this has this enough value that it can change
41:07 a person's life, right?
41:08 Like some of our contributors are not in the US or in countries that are like, you know,
41:14 I don't know, Eastern Europe or East Asia or wherever else.
41:17 And there, like this kind of amount of money, like might actually make or break, you know,
41:22 kind of somebody's, well, entire livelihood.
41:25 So it's amazing that this opportunity exists.
41:27 At the same time, like for now, like, you know, let's not get ahead of ourselves.
41:32 Like this is a contract for one person for 12 months, right?
41:37 It might not get renewed.
41:38 Like we might not get a sponsorship for next year.
41:42 So the PSF might actually have to be on the lookout for more sponsors later, or maybe for a new
41:48 developer, if they just don't feel like, you know, kind of the current one is doing the job
41:54 like well enough.
41:55 So like, you know, all those things might still be in motion.
41:57 So I myself don't really kind of, you know, already put this in the bank.
42:01 They're like, Hey, like I'll be doing this now for like, however long.
42:05 Like now I'm really spending this first year of really producing like the most I can,
42:11 a reason we can't, right?
42:12 Because it might just be a 12 month gig that I will be having like fond memories of, you know,
42:18 in a decade, or maybe it's a start of something much bigger.
42:22 So why not take the chance and just, you know, try your best?
42:24 Yeah, absolutely.
42:25 So let's dream just a little bit and then maybe I'll put a call out to it.
42:30 Would it make sense?
42:31 Would you want, could you do more with like a team of people if there were
42:35 five developers in residence?
42:36 So would the PR look like 20 open ones, the oldest one a month open, things like that?
42:42 Like, would that be good?
42:43 Would you want to see that?
42:44 Having five people available for work like this would entirely change how I'm approaching
42:51 this because currently, like, I don't really have a much in terms of coordination with others,
42:57 right?
42:57 Like I just look at whatever current work is happening and try to help out there.
43:02 But if you had five people, you could actually hit this problem head on.
43:05 Like, you know, we have 1400 open pull requests.
43:08 Like, it's not a question now, like, if we get them down to zero, but like, but when, right?
43:14 Now we actually can plan to do this, you know, like methodically.
43:18 And a lot of bigger style things that we always wanted to have in Python, we could now just
43:23 plan to implement ourselves.
43:24 Now, if I'm just the only person doing this, it feels irresponsible to just, you know, hide
43:30 somewhere, you know, in a basement in Poland and start churning out my favorite feature,
43:34 right?
43:35 Like, that's not what this world is about.
43:36 But if you have five people, you can reasonably expect that some of them might actually work
43:41 full time providing new features or finishing unfinished ones, which there are plenty of
43:46 for inclusion in a future version of Python.
43:49 It could be somebody says, I'm the one who just goes to all the bug PRs and just checks
43:54 those.
43:54 And there could be somebody working on performance and like, you could specialize and things like
43:58 that even.
43:59 Oh, you specialize, but I really kind of think that if all of them are developers in
44:03 residence, it would be great if they like kind of had like this on-call rotation for doing
44:08 things as I'm doing now.
44:09 So just responding to the external community, right?
44:13 Because like the important thing that I wrote in the original post and I still believe in is,
44:17 you know, like the drive-by contributor experience is extremely important, right?
44:21 So like we would always have to have somebody doing this, but at the same time, nobody really
44:26 wants to do only that.
44:27 Like everybody has to provide, well, wants to provide value of their own so that they
44:32 can, you know, touch it and say like, ah, I did this.
44:34 This is good.
44:34 Yeah.
44:35 So yeah, I already have a bit of this, you know, like not as clear cut, not sponsored by
44:41 the PSF directly, but Pablo, the release manager of Python 3.10 and 3.11 is both sponsored by
44:48 Bloomberg to work halftime on Python performance.
44:52 And also by him doing the release managing job for Python 3.10 and 3.11.
44:57 He coordinates with me very often right now, especially that now we are in the release
45:02 candidate stage of Python 3.10.0.
45:05 And the greatest thing about this is that he's in London, right?
45:07 So yeah, maybe, maybe far if I were to walk to him, but in terms of time zones, that's amazing.
45:13 Like he's just one hour away.
45:15 So, you know, we mostly have very synchronized work days.
45:19 So I would talk to him like essentially every day.
45:22 And that is also something that I missed doing remote work before, because, you know, kind
45:27 of if you are working for a company that is in the Bay Area and you're the only one in your
45:32 time zone, it kind of gets lonely, you know?
45:34 Having more people around that now I have like Pablo, I have Victor, other, Sergey, Storchaka.
45:41 And most of our communication is async, right?
45:44 So it's not like everybody's talking when I'm not around.
45:47 Like everything is happening on the mailing list anyway.
45:51 So it feels like I'm much more integrated into the team compared to my previous stints at,
45:59 you know, doing remote work.
46:00 So I enjoy this a lot.
46:01 So it sounds like it would make a big effect.
46:03 That's fantastic.
46:04 We look at that list of the sponsors, the visionary sponsors, and there's three companies doing
46:09 really good stuff.
46:09 But you gave a implicit sort of call out to this.
46:13 And I've said it plenty of times.
46:15 There are many companies out there who their entire core of their business is built upon Python
46:20 and they make billions of dollars.
46:22 Shouldn't they consider contributing something to build that foundation a little bit stronger,
46:28 right?
46:29 Like maybe make Python a little faster.
46:31 Their developers go a little, you know, more efficient or whatever.
46:34 Yes.
46:34 So like the good thing about this is that, you know, we always can use more money.
46:39 So obviously we need more sponsors.
46:40 Many of the companies are trying.
46:43 Simply the thing that they need is, you know, some sort of like plan or well, not like a legal
46:49 contract, but at least some sort of understanding what the money is going to go for.
46:54 What do they get out of it, right?
46:55 Because in their balance sheets, they have expenses.
46:59 And they have revenue.
47:01 They don't usually have charity.
47:03 Right.
47:04 It's tricky for them to make it fit.
47:07 I think it's kind of, you know, now with the developer in residence position, this kind of
47:11 changes the game because you're no longer just sponsoring the Python social foundation and kind
47:16 of, you know, yeah, you might have expectations, but maybe that will go for PyCon.
47:20 Maybe they'll go for sponsoring of events or minority groups or whatever else.
47:24 Like if your company really is interested in providing, you know, like support to the core
47:31 development, like now you can.
47:32 And I think like, well, hopefully like that is my hope.
47:36 Like we're going to see more sponsors of that kind of.
47:39 Yeah, absolutely.
47:39 People who are actually interested can go to Python.org slash sponsor slash application.
47:45 And it shows you what the tiers are, what they cost, what you get.
47:48 You get a lot of inside access and a lot of visibility into Python at the visionary level
47:52 that otherwise you wouldn't get.
47:54 So there's, there's something to be said for that.
47:56 People should check that out, right?
47:57 You got to meet with the PSF board.
47:59 A lot of cool stuff there.
48:00 Workshops, job fairs.
48:03 I think there's a lot of things on here that could go down as this is a legit value.
48:07 Get a meet with the Python steering council, the sprint recognition and so on.
48:12 So I just want to encourage companies out there.
48:14 Like we don't need tons of them.
48:16 If we had four others, right?
48:18 You said that would make a huge difference, right?
48:20 Absolutely.
48:20 And also kind of like, let's be clear, right?
48:23 Like, you know, kind of if a sponsor of a developer in the residence job, right?
48:28 I came in with like a laundry list of like, this is the things that I want you to do.
48:32 Like we'd probably have to kind of, you know, come to an understanding that this is not what
48:37 this is about.
48:38 But if people who happen to be employees of a company come in with changes that make sense
48:45 and actually provide value for us, and now we have people to do full-time code review
48:51 and inclusion of those changes, it's more likely that things that you care about are going to
48:56 be included, right?
48:57 So you can be ethical and impartial to, you know, kind of, well, sources of, you know, money flowing into your account, like, and also provide value to the
49:07 sponsor.
49:07 It's not a zero-sum game.
49:09 Like, you know, let that be clear and explicitly said, because I feel like this is also important
49:13 to know that if, for example, there is a company that really, really focuses on an operating system,
49:20 like, I don't know, maybe they're running everything on Windows or macOS, right?
49:24 Like, you know, and now they're like, hey, like, we really need somebody to make AsyncIO work
49:29 better on Windows, or we need to fix this fork problem on macOS once and for all or whatnot.
49:35 Like, you know, if they provide, you know, some changes and now there's people to do the review,
49:40 more likely than not, we're going to have better support for Windows and macOS.
49:43 Like, you know, everybody wins.
49:45 Yeah, absolutely.
49:46 Another benefit I'll throw out there, just thinking about this, is a lot of companies
49:51 have, like, continuing education programs and credits.
49:55 Like, hey, you have a bachelor's degree.
49:57 Do you want a master's degree?
49:58 If you're willing to go to school outside of work, we'll provide that for you.
50:02 And the reason is, now you have people who work for you that have master's degrees and
50:05 not bachelor degrees, right?
50:07 So this could be a similar thing, like, hey, we want to provide a position for people to come
50:13 work as the DIR or part of the DIR, and then maybe they come back and work for us afterwards.
50:18 But they would be so much more knowledgeable about Python, having spent a year in this role.
50:23 There's a lot of benefits like this.
50:24 You know, you won't believe this, but like, obviously, the project is a million lines of
50:28 code, right?
50:29 Like, half of it is in C, half of it is in Python.
50:31 So I don't know about most of it, right?
50:36 Like, I've seen much of it, but like, I probably don't have expertise in most of it, but nobody
50:42 cares when they submit pull requests.
50:44 So then I look at them.
50:45 So for many of them, it's my first actual stint at, you know, like touching a part of Python
50:51 that I might know as a user, you know, from the outside, right?
50:54 Yes.
50:55 But then looking at like, how does Dunder main actually work in Python?
51:00 It's this special module that, you know, like your execution starts with, like, how does
51:05 this actually work?
51:06 So you go and see, and you actually kind of dig and you understand like, ah, okay, like,
51:10 I understand this because you have to take into account, you know, starting your Python
51:15 interpreter, like, you know, with, I don't know, code from the standard input, or maybe
51:19 somebody is starting a ripple, or maybe you're from a file, or maybe it's a zip file or whatever.
51:23 So now I know more than I just knew like two weeks back about Dunder main.
51:27 So very true.
51:29 Like, you know, you bring somebody in who is motivated and maybe knows a bit about, you
51:33 know, what CPython already is built on.
51:36 But necessarily, you're going to get experience in parts that you would otherwise not touch,
51:41 right?
51:42 Because now you're reviewing the bulk of pull requests that are coming in, not the ones that
51:46 you would write yourself.
51:47 Yep.
51:47 Absolutely.
51:48 I remember one listener sent me a message and said, I was really surprised to hear you
51:52 say there was like, this whole section of the standard library you didn't know about.
51:56 That describes a lot of, there's a lot of stuff out there, right?
51:59 You might just barely touch it.
52:01 You might have no use for it.
52:02 There's a lot.
52:02 You would, this would force you to just give that depth.
52:05 It's big.
52:05 It's big.
52:06 Absolutely.
52:07 So Rodrigo asked previously about what drive-by contributors can do to help you.
52:12 What can, you know, this is speaking to a smaller audience, of course, but still I think it's
52:17 relevant.
52:18 What can the core developers and the steering council and the people on the inside do to
52:23 help you be more successful and efficient?
52:25 Most of them know me.
52:26 So the most important thing for them, and I really mean it, is like, just tell me what I
52:32 should be rather doing.
52:33 If you feel like there's something else I should be touching on, or if I did something
52:37 that you don't like for any reason, just write me, just tell me, right?
52:41 Like, because like, it's different from the external contributors.
52:43 Most of the core devs I know one way or another, so we can be direct with one another.
52:49 And I think like the make or break of this position is for me to provide value for both groups.
52:56 So if there's anything that a particular person needs or wants, or even feels like, Hey, you
53:02 know, you're focusing too much on this thing or, Oh, have you looked at this?
53:05 Like, this is not something you've touched yet, but this is extremely important.
53:08 Just let me know.
53:09 So communication is key for us right now.
53:11 And another thing that I kind of still don't quite know how to tackle is that I don't feel
53:19 comfortable just now, like assigning a bunch of things to volunteers.
53:23 You know what I mean?
53:24 It's like now there is a bunch of pull requests where they're fixing something that actually
53:29 broke because of a change that some core developer did five years back.
53:32 So of course they have the best context on this change, but I feel kind of icky just, you know,
53:39 going and doing this 10 times a day, you know, because it really feels like now you're being
53:45 this manager of Python telling people, Hey, go fix your shit.
53:48 Like, no, that is not what I mean.
53:50 It's like, as I said, the project is huge.
53:52 And, you know, very often it is really a bunch of people, like a low number of people who have
53:59 the best context on given part of Python.
54:02 So yeah, like if I do this too much again, like, you know, tell me if I'm not doing this
54:08 and instead of going ahead and doing changes, you know, that you don't like in your particular
54:13 favorite piece of Python also let me know, like, this is still something I'm pretty new
54:18 at.
54:18 Like, I'm just going to like issue my second invoice like next week.
54:23 I'm pretty excited about that, but you know, like it's still a new thing for me.
54:26 So I guess, you know, for the core devs.
54:29 Yeah.
54:29 Let's talk like whenever something is clearly well, improvable, if that's a word, like let
54:35 me know.
54:36 Yeah, absolutely.
54:37 How much input into this role did the steering council have and how much did Guido have?
54:42 Or was this a PSF plus Google sort of thing?
54:45 So I actually spoke with nobody from Google.
54:48 So directly, I don't know the people behind this position, like on their side.
54:55 I know a bunch of core devs who happen to work at Google and they're very supportive of the
54:58 position.
54:59 So that's the extent of it.
55:00 The steering council meets with me every second week.
55:03 So it's mostly kind of me talking, hey, this is what I spend my time on.
55:08 You know, they ask me like, how can we improve your output or whatever?
55:11 Like, you know, or just they will, would just tell me about things that, you know, they find
55:17 interesting or important that I might look at, but it doesn't feel like they're really kind
55:22 of going and telling me what I should be doing.
55:24 Like, you know, point blank.
55:25 They're just having like suggestions on and how this role should be moving.
55:30 So this is kind of, this is a short, well, 20, 30 minute meeting every two weeks.
55:35 So kind of high level.
55:36 I do have one just like it with Eva from the PSF and E.
55:41 So it's really, you know, kind of the Python server foundation internally also needs to communicate
55:47 because they have all the keys to say, being able to restart a bot, right?
55:52 Or, you know, kind of make changes on a given server or maybe change some workflow on GitHub
55:57 that affects everybody and so on and so on.
56:00 So we just also meet every second week to make sure everybody's on the same page.
56:05 And also there's some very low level stuff.
56:07 Like for example, figuring out like, hey, what calendar am I working on?
56:11 Like is Labor Day a day off for me?
56:14 Or is some other holiday that is here in Poland, but not in the US a day off for me?
56:20 Or don't I get any day off at all?
56:22 And I work on Christmas Day.
56:24 I don't know.
56:24 So all of those, all of those things, you know, have to be actually discussed with the PSF directly.
56:30 Yeah.
56:30 And Kordevs, like, you know, kind of, we do talk a lot.
56:34 And Guido in particular was very supportive of me starting this role.
56:38 So I'm very grateful for this because it's kind of like, you know, kind of just getting,
56:43 getting a little bit of, you know, like an email, just a bunch of sentences, just actually kind
56:48 of saying like, hey, I believe this is a great decision.
56:50 You're going to do great.
56:51 Like, okay.
56:52 I don't know.
56:53 Like, I still feel like I'm a beginner in a lot of this.
56:56 It's really reassuring and kind of lifts your spirit.
56:59 So, so yeah, like, I guess we are in constant contact using super old ways like email and
57:05 discourse to an extent.
57:07 And now like VCs.
57:08 So yeah, like we're doing Google meets and Zooms with others.
57:13 They actually have too many, well, communication methods right now.
57:17 So like me talking with Kordevs, I'm on IRC right now so that others can actually reach
57:21 me as well.
57:22 Others would talk to me through WhatsApp and whatnot.
57:25 Like I have like 10 chat, like message apps right now open just to be able to talk to
57:30 everybody I need to talk to.
57:32 So that needs fixing, but I don't know who is supposed to do that.
57:35 Yeah, I don't either.
57:36 It's a growing problem, not a shrinking one, but it sounds like you're doing a good job.
57:40 Even Rodrigo out there in the live stream says, listen to this hypes me up to go and contribute
57:45 to Python.
57:45 So hopefully that sentiment is multiplied across all the people who are contributing work that,
57:51 you know, it'll, it'll get more attention sooner.
57:54 So well done.
57:55 Absolutely.
57:56 I'm happy to hear that.
57:57 Yeah, absolutely.
57:57 All right.
57:58 Well, we're about out of time to talk about the new role.
58:01 So let me ask you the two final questions, which I've asked you before, but it's been a
58:05 while since you were on the show.
58:06 So time for an update.
58:07 If you're going to do some Python, you know, you always run across different external packages,
58:12 things on PyPI and whatnot.
58:13 Have you found one that you're just like, wow, this thing is amazing.
58:16 We should talk about it, get more awareness of it.
58:19 It's already growing, so I'm not going to tell anything that is like now like extremely,
58:23 you know, novel, but I'm extremely digging rich, right?
58:27 Like the kind of text formatting, like library for CLIs, like anything that we write, like
58:33 would use their progress bars and, you know, a bunch of other stuff that that's there for
58:37 column formatting and whatnot.
58:39 Like I find it very approachable and the results are like, yeah, this is a console.
58:44 This is a text console.
58:44 Just to be clear, right?
58:46 Like it just looks fantastic.
58:48 And the code for it is very nice.
58:50 Like it's, it's a very declarative.
58:52 So Rich, I like a lot.
58:54 And Will, the author of it is now working on a text UI library that is much more Pythonic
59:00 than the previous propositions that we had to say, like, you know, a curses or you were with.
59:06 So yeah, like I'm hyped for that as well.
59:08 It's called textual.
59:08 Yeah.
59:09 Textual looks really interesting.
59:11 Yeah, exactly.
59:11 So those would be my easy propositions for the day in terms of third party packages.
59:17 Cool.
59:17 The one that I actually thought of Rich earlier, when you talked about the better error messages,
59:21 there's a cool article called FastAPI and Rich Tracebacks in development that talks about
59:26 how to take Rich and then plug it in.
59:29 So whenever there's a stack trace, you get like super colorized error messages and all sorts
59:35 of cool stuff.
59:36 And yeah, pretty neat.
59:38 Pretty neat.
59:39 This changes a lot, actually, because, you know, I find that, for example, between using
59:43 GCC, right?
59:44 The C compiler and using Clang, like just the fact that it colors my, you know, errors, like,
59:51 you know, tiny thing.
59:53 But it makes Clang just feel nicer to me because it just values my time.
59:58 It just makes me, makes it easier for me to read the relevant parts of the message.
01:00:03 So this sort of thing, like might just feel like, ah, you know, this is not really that
01:00:07 important in my app.
01:00:08 But like, it might save you a lot of time later on when you're like actually debugging stack
01:00:13 traces that you're looking at like at 2am or whatnot.
01:00:15 So I think this is extremely important, like not just because it's aesthetically pleasing,
01:00:21 which is important in itself, but also functionally, right?
01:00:24 Like, you know, this is the reason we are using syntax highlighting, right?
01:00:27 Because it actually lets you see more information at the same time, right?
01:00:32 So absolutely, like Rich provides this in a very smart way, like to your application.
01:00:38 So not just your Python stack traces, but whatever you're displaying, like might be like this.
01:00:43 It will automatically format numbers.
01:00:46 It will automatically highlight, you know, dates and files and file paths and whatnot and whatnot.
01:00:51 So tremendous value added.
01:00:53 Yep.
01:00:53 Tables, all kinds of cool stuff.
01:00:55 Yeah, it's definitely getting a lot of love out there.
01:00:57 And then if you're going to write some Python code, what editor are you porting these days?
01:01:02 I am deeply invested in VS Code right now because it is in a very, very peculiar position where
01:01:08 it's actually very good for CPython development, like core development, because it's both a good
01:01:13 C editor with, you know, support for just jumping through definitions and whatnot.
01:01:17 And also like has a great Python plugin, right?
01:01:21 Like, you know, PyLens, right?
01:01:22 So it's both a type checker and, you know, this language server that does a lot of help,
01:01:26 like for you specifically.
01:01:28 So it's just a good package all around, like to just do a CPython core development.
01:01:33 Is it my perfect editor?
01:01:35 Well, almost like if the Vim plugin for it was official, officially maintained and a little
01:01:41 more sturdy, like I would be the happiest person there.
01:01:44 But well, clearly this is super low key feature.
01:01:48 Like it's not a very popular thing.
01:01:50 Must not be because otherwise, you know, like looking at what Microsoft is now doing with
01:01:54 GitHub and whatnot, like that would have been implemented if more people asked for it.
01:01:59 So I might be of a dying breed of Vim users.
01:02:01 I don't know.
01:02:02 Still, like gets the job done, like for with the current Vim plugin and system, like, you
01:02:07 know, with the window splits and whatnot.
01:02:10 I'm very happy with it.
01:02:11 And now seeing that my development environment can actually be run in a browser, like what
01:02:16 else could you ask for?
01:02:17 It's pretty amazing.
01:02:18 Yeah, exactly.
01:02:19 You're doing your podcast live stream recording from a browser and you're editing in a browser.
01:02:24 All right, Lucas.
01:02:27 Well, it's been great to have you here.
01:02:29 Final call to action.
01:02:30 You know, people want to learn more about the DIR.
01:02:32 Maybe want to help you out or consider sponsoring this in the future or more people.
01:02:37 What do you say?
01:02:38 First of all, if you are a Python user, like you are very, very welcome to bring issues
01:02:44 to us when they happen.
01:02:45 Right.
01:02:45 So whether this is on bugs, Python, the dorg, obviously a very good place so that your report
01:02:52 will historically, you know, maintain there and we can have a discussion that is open and
01:02:57 actually work towards a solution.
01:02:59 But also in informal ways.
01:03:01 You know, if you reach to us via RSC or ask stuff on the mailing list or discourse, like
01:03:07 we're very happy to hear your feedback.
01:03:09 So you don't have to write code like on day one.
01:03:12 Don't worry.
01:03:12 You might never write code for us to fix your problems.
01:03:15 Just report them.
01:03:16 It's great.
01:03:17 If you have stuff that works very well for you, you might also spend a minute, you know,
01:03:22 telling us because this is something that nobody gets enough, you know, in this industry.
01:03:26 We only get bug reports, you know, and yeah, like if you do want to contribute, there's
01:03:31 many ways to do this.
01:03:32 If you want to code, absolutely.
01:03:34 Just don't think it's super, super trivial to get large changes into a 30 year old programming
01:03:41 language.
01:03:41 I could make an entire talk just about that.
01:03:43 Right.
01:03:44 Every little change has huge implications for some small percentage of people, but there's
01:03:49 millions.
01:03:50 And so that's a lot.
01:03:51 Sometimes very surprising ones.
01:03:52 Yes.
01:03:53 But yes, absolutely.
01:03:54 We need more people doing the work and there's plenty of it.
01:03:57 So you might still have tremendous impact for the world.
01:04:01 You know, maybe your code is going to run on Mars.
01:04:03 You don't, you never know.
01:04:04 Yeah.
01:04:04 Even if you're just reviewing PRs and making the little tiny fixes or stuff like that, that
01:04:09 could be a big contribution.
01:04:10 Totally.
01:04:11 And finally, for the current sponsors, thank you.
01:04:14 You make this possible.
01:04:16 So like, really, thank you.
01:04:18 And for people and companies considering sponsorship for next year, if there's anything that you're
01:04:24 not seeing that you would like to see that would convince you that it's worth it.
01:04:28 Also let the PSF know, like we might adjust what we're doing so that you're more comfortable
01:04:33 with sponsoring because really like, you know, this is a very unique programming language
01:04:39 in the sense that it is community driven and community owned.
01:04:43 So yeah, please talk to us.
01:04:45 Yeah.
01:04:45 Awesome.
01:04:46 Well, thanks so much for being here.
01:04:47 Catch you next time.
01:04:48 Thank you.
01:04:49 Bye-bye.
01:05:15 Bye-bye.
01:05:19 Bye-bye.
01:05:22 Bye-bye.
01:05:24 Check it out for yourself at training.talkpython.fm.
01:05:27 Be sure to subscribe to the show, open your favorite podcast app, and search for Python.
01:05:31 We should be right at the top.
01:05:33 You can also find the iTunes feed at /itunes, the Google Play feed at /play,
01:05:38 and the direct RSS feed at /rss on talkpython.fm.
01:05:42 We're live streaming most of our recordings these days.
01:05:46 If you want to be part of the show and have your comments featured on the air,
01:05:49 be sure to subscribe to our YouTube channel at talkpython.fm/youtube.
01:05:54 This is your host, Michael Kennedy.
01:05:55 Thanks so much for listening.
01:05:56 I really appreciate it.
01:05:58 Now get out there and write some Python code.