« Return to show page
Transcript for Episode #209:
Inside Python's new governance model
0:00 Michael Kennedy: We all got a bit of a shock to the system when Guido van Rossum decided to step down as the leader, and top decider of the Python language and CPython runtime. This happened due to many factors but was precipitated by the so-called Walrus-operator debate that's over at PEP 572. It's been about nine months since then and the Python community has responded and things are back on track. I'm excited to welcome Brett Cannon to this episode to give us an update on where we are and how we got here. He's a frequent guest and Python core contributor so he has an inside view of what happened. This is Talk Python To Me, Episode 209 recorded April 18th, 2019. Welcome to Talk Python To Me, a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities. This is your host, Michael Kennedy. Follow me on Twitter where I'm @mkennedy. Keep up with the show and listen to past episodes at talkpython.fm and follow the show on Twitter via @TalkPython. Brett, welcome back to Talk Python.
1:11 Brett Cannon: Thank you, Michael, glad to be back.
1:12 Michael Kennedy: It's good to have you back. I love all of your appearances here and all of the stuff that you're doing for the Python space. This is kind of a double one. You're a core developer and participating in this new government's model at like a higher level, so you sort of helped create it and then got put into position. That's going to be so much fun to talk about. I feel like, I don't know how you feel, just kind of kick this off. But I feel like the Python space is in a brighter, nicer place than it was eight months ago, six months ago, whatever that whole time was.
1:42 Brett Cannon: Yeah, I like to think so. I mean, when Guido dropped his big surprise bomb on everyone on July 12th, 2018, a day I will never forget, things were kind of hectic there for quite a while. And, well, I'm sure we'll get into it. Things kind of calmed down back in December and the things already settled down February. And I think we're starting to get back into our groove, and things are going. But I think everyone's more or less happy with where things are. We're feeling our way through 'cause it's all still very fresh, but yeah. I'm optimistic about the future.
2:09 Michael Kennedy: For sure. So am I. So before we get into all those topics though, maybe let's just sort of set the stage with you as a guest so folks know. Tell us what you do day-to-day maybe in your regular job in the opensource space. You've got a lot going on.
2:20 Brett Cannon: My job is actually divided into two sections. One is I am a Principal Software Engineering Manager now as of last month at Microsoft leading the dev team for the Python extension for VS code.
2:36 Michael Kennedy: Right on. Congratulations. That's great.
2:37 Brett Cannon: Yeah! Well, one of the reasons I did that was dividing my time allowed me to do that. And now I get to divide the other part of my time working on Python.
2:46 Michael Kennedy: Oh, right on.
2:46 Brett Cannon: Split my time between the two, and just get to do both.
2:51 Michael Kennedy: Oh, that's really cool. So they're giving you, like, 50% time or something in that realm to just make Python better?
2:57 Brett Cannon: Yeah. Basically, when I agreed to be manager, I also was able to then say, like, I'd like to divide my time between the two. And they said, yep. Sure. Great. You're now on this steering council thing. It makes sense, so go for it. So based on how I'm able to find the time, I get to spend it.
3:13 Michael Kennedy: You feel like Microsoft's in a different place than it was 10 years ago with regard to Opensource?
3:16 Brett Cannon: Yeah. Had you asked me 10 years ago would I even have been willing to consider working for Microsoft, the answer would have been a flat-out no. So very much a different place than it used to be. I know when I told my family I was going to accept a job offer from Microsoft, their jaws dropped to the floor. And then I had to explain, it's a different place. You don't know about the new CEO. It's a thing, and it's continued to be...
3:36 Michael Kennedy: That's...
3:36 Brett Cannon: a very good thing.
3:37 Michael Kennedy: It seemed like that.
3:37 Brett Cannon: Yeah, well, exactly. And you hear Satya actually talk internally where he says, like, when it makes sense to get back to OpenSource, get back to OpenSource. We're consuming it. We should give back where it makes sense, and it's great.
3:49 Michael Kennedy: That's fantastic. Yeah, when I saw him, researched him a little bit when he was promoted to the CEO job, I thought there's a chance that something like this will be happening. But you never know, right? You never know what's going to happen, but I feel like it, you know, it like the good sort of optimistic view that's come into reality.
4:04 Brett Cannon: Yeah. I continue to be very happy to be working there and have absolutely no qualms and I would hope people who know me well enough know that if I had moral issues, I would not be there. And I continue to be happy to be there, so.
4:16 Michael Kennedy: Right on, right on. Well, you know, it's kind of a world where you have a lot of choices as a experienced developer, so. Pretty much if you're an experienced developer, and you're somewhere, consciously or not, you're kind of choosing to be there, right?
4:29 Brett Cannon: Yeah, yeah. I'd like to think so at least.
4:31 Michael Kennedy: Yeah, cool. All right, so that's the day-to-day W2 side of the world. What about the OpenSource, you know, MIT GPL side of the world?
4:40 Brett Cannon: And, actually, it's the T4 side of my world 'cause I'm in Vancouver, Canada.
4:42 Michael Kennedy: Oh, okay.
4:43 Brett Cannon: So I get a different kind of form.
4:46 Michael Kennedy: Beautiful. I tried to weave 'em together.
4:48 Brett Cannon: Other than that, the OpenSource specific bit is I've been a cor contributor to Python going on 16 years. Actually, as of today of our recording exactly.
5:02 Michael Kennedy: Wow! What a cool anniversary. That's a long time.
5:04 Brett Cannon: Yeah, first commit was in exactly in 20, sorry, 2003 as of today.
5:11 Michael Kennedy: Wow. Yeah, that's awesome.
5:12 Brett Cannon: And on top of that, I am now one of the inaugural members of Python steering council. Which we all, obviously, will be getting into.
5:20 Michael Kennedy: Yeah, that's the main topic, which is really cool. Congratulations on being nominated. I know that your name got thrown around in a couple of ways, and there was definitely different competing styles of governance that were thrown out. And one of them was we pick a new BDFL before. Like, we're going to pick Brett Cannon. That'd be fun. Did that kind of scare you a little bit? Or is that okay, or? What do you see, like, when you heard your name came passed around like that?
5:44 Brett Cannon: Yeah, so we are getting more depth to do it later on when we discussed the possibilities we had for our governance models. But it was very humbling and flattering when people brought up, well, maybe we should just stick with a single dictator even if they're voted in or what-have-you and that my name, I feel like such a humble bragger like this. But my name was consistently tossed around as who, as one of the few people people were comfortable with potentially having that position. So it was very nice. I did have conversations with my wife that if this did happen, are you okay with this? Luckily my wife, Andrea, who's very understanding, was like, yes, as long as you get to continue to take your month off from OpenSource and you still dedicate at least one full day every weekend to not touching your email and OpenSource. She was fine with it, so. But, yeah. It was extremely flattering
6:29 Michael Kennedy: That's good.
6:29 Brett Cannon: That people thought that of me.
6:31 Michael Kennedy: Yeah, I would have been happy had that been the outcome. At least on a personal level, but your wife does a good job of protecting your energy and your time. And I think, you know, we all kind of need something like that as well, right? Like, it's easy to say, at least for me, personally, it's easy to say yes to 100 things. And then go like, wait, I have time for three of these.
6:50 Brett Cannon: Yeah, no. I'm extremely lucky that I was already heavily involved in Python when I met her, so she knew what she was getting into. And, actually, I don't know how much I told this story publicly. But when I first met Andrea, she did the usual and Googled me and then found out what I did and then, subsequently, she basically understood it. And then she later told a friend of hers, who was getting their degree in CS, who I was. And her friend said, oh, that's epic! And she's never forgotten that, that that played a part in my life. And so she's always been very understanding about making sure that I never feel like I can't participate. It's just been making sure it's at a healthy level.
7:26 Michael Kennedy: Yeah, absolutely, absolutely. And, you know, I guess maybe that's a good segue into, maybe, back into July. Not you individually, but, you know, OpenSource. It definitely has some sides that can be rough, right? Like, you work on these projects. And you don't have time or energy, necessarily, to keep adding features. Or that you don't want to go in the direction that someone else wants to go to. And then, all of a sudden, you know, you're on the receiving end of somebody's unpaid, unearned expectation, right?
7:53 Brett Cannon: Yeah, yeah. July of 2018 and the subsequent couple months before then where a very rough time to be a core dev and, specifically, to have your name be Guido van Rossum. It was not a pleasant time in the world. For those who don't know, basically, Guido ended up going with an idea that's encapsulated in PEP 572. Assignment expressions, Emily Morehouse landed that feature sport, actually, I think a month or two ago? And so, we hold the action in Python 3.8. So don't be upset if you don't know what it is. You'll know by the end of the year. But it was extremely controversial. For those of you that don't know, it's a new piece of syntax that, basically, lets you do assignments in context of where you can do expressions. So, for instance, an expression would be, like, the guard you put in an if statement, right? So you could do if a := function, expensive function call...
8:50 Michael Kennedy: Call of function, yeah.
8:51 Brett Cannon: Exactly. Now you have access to a, and you don't have to do that as a separate line. You normally would have done it, before, we would do it a = expensive function call if a then do something.
8:59 Michael Kennedy: Right. And it sounds so, like, okay. We don't need it to be that concise, right? It's not, like, APL or something insane. We could have that extra line, but the thing is it opens up new possibilities around, like, expressions. Generator expression, listed comprehensions. Things like that where you can't have more than one line, right? Like, I went to for something in a group. Test that thing, and then return some part of that, right? Those would actually be, like, double function calls without the assignment operator. And things like this.
9:30 Brett Cannon: Exactly. If there are certain things that you, basically, couldn't do without making your function calls item potent and such and generator expressions. I, personally, also think it's a key point that it improves the expressiveness and conciseness of some code. Like, before, if you did the a = solution and then did the guard on the if on the a, you didn't necessarily know if the author of that code meant for the scoping of that variable to be just that if block. But if you use an assignment expression, it's very much communicated that I do not expect anyone to necessarily touch this outside. Now, obviously, Python doesn't add scoping to that level but does show intent. And because Python's always very much about readability and productivity and making it easy to read code, the hope is is that in those cases this will help in that area.
10:21 Michael Kennedy: Yeah. So I don't think we need to dig too far into this feature, but I do want to make a quick comment because I think it's pretty interesting. Like, this whole feature and the debate around it was kind of what was the straw that broke the camel's back for Guido and, like, all the pressure and stuff. But so my first impression was interesting. Not terrible syntax. I'm not sure that we need this. You know, so I'm just like, well. It's just adding more syntax that I don't really know necessarily. Super, but, like, six months later, I'm like, yeah, that's a pretty nice feature. I kind of like having it there, and so, you know, I feel like I could've been, you know, theoretically a person like, ah, we don't need this! Get it out of here! And now I'm pretty happy with it. That's not how I was, but I, you know, shifted a little.
11:01 Brett Cannon: Yeah, and honestly, that happens a lot. I mean, a lot of people had very much the initial, and I don't want to say kneejerk, that seems almost rude. But the initial reaction that you did, Michael, where it's like, oh, okay. That's nice, but do I really need new syntax for this? Because I don't know how many people remember this phrase 'cause this was bigger back, like, a decade ago. But saying that Python fits your brain, right? People like Python because the core concepts to be fully productive in the language are small and encapsulated and flow through each other nicely enough that it doesn't take a lot of mental effort to fully understand how the general language works. Now, that doesn't mean you have to understand how meta classes work. And that's fine, but the general day-to-day stuff can all fit in your head. And anytime we ever add anything to language, especially syntactically, it causes everyone to suddenly go, is this going to finally be the thing that pushes a part of Python's semantics out of my head day-to-day? And I'm suddenly going to end up, we're going to suddenly swing towards C++. And for 80% of the projects, you use 1% of the language, and...
12:03 Michael Kennedy: Right. Right, right.
12:04 Brett Cannon: You'll never fully understand how it works, so a lot of people had that reaction. And it was really, really voracious. I think 'cause a lot of people realized it didn't, it opened up cases, as you said about generator expressions. And it did open expressions, but not enough people recognized, in their own cases, where they would have needed this to alleviate a problem. Then it caused a huge backlash. Like, I saw people state publicly, I will refuse to review pull requests that use this syntax. Now, granted This was also said early on, and the PEP did evolve a good amount over its lifetime. Like, when it first got written, it got sent the Python Ideas. And then it got cleaned up, and then it kept iterating there. And that got sent over. And before complete rewrites were finished, everything that was brought up on Python Ideas were put into that PEP. It got moved over to Python-dev, and then a whole 'nother set of arguments happens that, actually, had been covered on Python Ideas. And so it was very, it was a very long sustained amount of negativity towards Guido and just the pep in general and just a lot of, I'd like to say incognizance. But, honestly, a lot of rudeness. And just people really overreacting I think.
13:19 Michael Kennedy: Why do you think that is? I'm not questioning. I know that it's out there. If you do anything on the internet, you know that, no matter even how good intended it is, you're going to receive it. And I feel like this is even deeper into people's identities, right? If you are a Python developer and you go messing with what Python is, like, that can definitely bring out some emotions.
13:38 Brett Cannon: I think a lot of people view what programming language they use like the equivalent to artists having preferences over the paintbrush or the pencils that they use or what-have-you. Ask any artist what medium they work in, and they'll tell you. But then ask them exactly what tools they use to work in that medium, and they will have, like, a brand name of a pencil that they buy all the time. And they will only draw with because it just feels exactly the way they want, and I mean, artists are very opinionated about the tools they use. And software developers are no different. If you ask them what programming language they use and what, like, frameworks they use, the stuff that they live and breathe everyday at work, they will be very particular if you give them the option. And so the idea that someone is going to take their favorite thing and potentially change it in a way that they view as negative, and especially if they viewed it as changing it in a way that will open the floodgates. Because this is the other thing is that everyone always feels like this is going to be a magic tipping point for Python, that suddenly we do this one thing. And it's going to lead to a cascading effect, which, honestly, after 16 years, it's never happened. Because we had this exact same argument when we were adding True and False as keywords, right? Like, this is long-running, like, people did not like the idea of making keywords out of True and False way back in the day. And the world's not fallen over, so.
14:55 Michael Kennedy: I'm so glad they are.
14:55 Brett Cannon: Yeah, exactly. Everyone's happy with that! But, once again, it's one of those initial reactions is like, no we really don't need this. This is unnecessary. We can keep using 0 and 1. Python's existing without it for this long. Why do we have to go screw with something that's working great? To oh yeah, this is beneficial! It's a lot of, over the years, trusting Guido's design sense. And a lot of people just don't have that history of realizing this stuff's come and gone before. I mean, history's cyclical. And it just, we're just more connected. And the community's literally just bigger, and it seems like we're constantly hitting, like, exponential growth. I don't have numbers to back that up, but it sure seems like it sometimes, which just leads to that many more people suddenly coming in and just feeling the need to comment. And not only provide feedback, but provide negative feedback in a non-constructive fashion. That's exhausting. And especially when there's one Guido or one PEP author and the whole community. And if the community's grown exponentially, it's not scaling the number of people who are proposing something to the number of people who are coming and leaving comments. And so it gets... A little crushing, honestly.
16:03 Michael Kennedy: I feel like, yeah, my visual thing when I heard about all this and, you know, and all this, I felt, I was just like, okay, there's like this huge press of all this community pressure. And there's, like, a diamond at the end. Like a sharp diamond just focusing all, like, right onto him. And I'm, I don't, you know, fault him at all for just going, I just need to spread this out. The PSI is too high. Like, the pressure's too high. I can't take it all. It's going to make me unhappy, right?
16:26 Brett Cannon: Yeah, and I mean, the thing that people have to remember. It's not like Guido had staff, right? It's not like, oh yeah, Guido can hand this off to his communication manager to handle... The feedback or a PM who's going to take the hearth of the community and sort through and like, okay, that person's just really upset and angry. That's just vitriol. That's not really providing constructive feedback. Oh, that actually is constructive feedback. We're not staffed. We're not a company. We're a volunteer-run group of people, and so, yeah. It's very much, as you said, it's a lot of pressure pushing down to a single point. And that's a lot. And in the end he, basically, snapped. Or, not snapped. That sounds overdramatic, he basically broke.
17:06 Michael Kennedy: Yeah, he made a decision that that was enough. He'd had enough.
17:09 Brett Cannon: Yeah, exactly.
17:10 Michael Kennedy: For sure.
17:12 Brett Cannon: On July 12th, after all this, Guido sent an email, unannounced. No one knew it was coming. Not me, not a single other core dev I've ever spoken to. Saying he's retiring. He was going to retire from being the Benevolent Dictator for Life for Python and was going to take a permanent vacation 'cause he was just like, I never want to have to go through this ever again. And I don't blame him.
17:31 Michael Kennedy: Yeah, I don't either. There's an interesting interview with him on the MIT Artificial Intelligence podcast where it's, they actually talk a lot about the history and this kind of stuff. And you can, you know, like, sort of hear his story and the timeline he personally went through on that as well. This portion of Talk Python to Me is brought to you by Linode. Are you looking for hosting that's fast, simple, and incredibly affordable? Well, look past that bookstore and check out Linode at talkpython.fm/linode. That's L-I-N-O-D-E. Plans start at just five dollars a month for a dedicated server with a gig of RAM. They have 10 data centers across the globe. So no matter where you are or where your users are, there's a data center for you. Whether you want to run a Python web app, host a private Git server, or just a file server, you'll get native SSDs on all the machines, a newly upgraded 200 gigabit network, 24/7 friendly support even on holidays, and a seven-day moneyback guarantee. Need a little help with your infrastructure? They even offer professional services to help you with architecture, migrations, and more. If you want a dedicated server for free for the next four months, just visit talkpython.fm/linode. If this is the end, you know, how much of, do the Python 2 versus 3 debate do you think wore him down such that this was enough to make him go, fine, I'm done instead of go, well, that was a bad week or whatever.
18:53 Brett Cannon: No, I don't think the 2 to 3 transition in the community really did it. That was very long and very low level. Just continued over a decade. We've all dealt with it, we've all seen that Python 3 won in the end. And everyone's been happy with that and all that. It's just been long. I think it was really Guido has, over time, just been slowly scaling back his day-to-day involvement anyway because he realizes that someday he will have to retire for, just 'cause he's tired. Honestly, he could die, who knows? It's just something we always had to plan for anyway, so he was always scaling back his involvement. And this just finally, I think accelerated. I mean, had you asked me before this happened when I thought he was going to retire, I would have said yeah, based on how he looks and how he's feeling, not physically looked just how he looks in terms of his interactions and the way he's communicating and stuff, I would've said yeah, I give it two or three more years before he says like, okay, let's start to work on a transition.
19:52 Michael Kennedy: Yeah, yeah.
19:52 Brett Cannon: But I think this hyper-accelerated it and made it a very clean and somewhat abrupt break to just like, okay, we're just going to deal with this now.
20:03 Michael Kennedy: Maybe it was better because it's like, this is how you're going to deal with it. You're going to deal with it now, not, like, slowly ease into it, right?
20:09 Brett Cannon: Yeah, although, funnily enough, you say this is how we're going to deal with it was not really how it happened because if you go back and read Guido's email, it was like, you're all going to figure out how to deal with it. I'm just stepping back. Good luck.
20:20 Michael Kennedy: Yeah, yeah.
20:23 Brett Cannon: I call it the great Guido mic drop. Because he literally basically said like, I'm taking permanent vacation. And I'm not going to dictate how you handle this. I don't want to, and if you know Guido it makes sense that he would approach it this way. That he wouldn't want to force anything upon people but it did put everything in an interesting position on how to handle this very unique situation.
20:43 Michael Kennedy: Yeah, definitely unique. So maybe we can dig into that. Like, it was, I'm not going to be the leader or the decider of this community anymore. Figure it out, like you said. So I guess that really started to take structure around PEP 8000, right? And that's where the potential options were gathered up?
21:03 Brett Cannon: Well, that was, honestly...
21:03 Michael Kennedy: Or was that farther down?
21:05 Brett Cannon: It took a little longer than that because, first, we went through the five stages of grief, right? Like, there was literal denials like, is this a weird joke? He said vacation.
21:16 Michael Kennedy: What's the date?
21:19 Brett Cannon: Yeah. Well, yeah, exactly. He said vacation. He didn't say retirement. Does that mean he could come back? Could we maybe ask him to help make the decision? All this stuff. And, I mean, I emailed. I mean, we'd email him again, he'd be like, yeah, nope. I'm not kidding, and nope. I'm not making any decisions. I'll provide feedback where I think it's timely and appropriate. But otherwise, I'm staying out of it. He basically really took a step back and just, like, I'm not getting involved. I will provide suggestions if I think something would really make a difference but, and I mean, really, like, I don't know if he made five suggestions throughout the history of the whole process. So like, he really stepped back. So, yeah, so we went through all that. And then we started to talk as a group how are we going to handle this? How do we make this decision? How do we decide how we're going to decide even, right? It's a really odd situation to be dropped in where you have a pre-existing group of people who had a very clear government structure of, there's Guido. And that's it. Basically, we can come to our own agreements. But, basically, Guido always was, the last resort was, the final decider was the king of the seven kingdoms, or queen. It was the way it was, and so it was very weird to suddenly go like, yeah, you have no leadership now. There's absolutely no one in charge. No one has anymore rights than anyone else, technically, to make decisions, to say anything. It truly had to all come through a consensus, which is dicey, right? Because you have to also remember this is the same group of people who also had just gotten really riled up about PEP 572, who are very passionate about this project, who all have opinions. And we're talking about a project that, like, for me for instance, I've put 16 years of my life into this, right? So I'm...
23:03 Michael Kennedy: Right. And hundreds of...
23:04 Brett Cannon: deeply invested.
23:06 Michael Kennedy: thousands, yeah, and millions of people, this is their job.
23:08 Brett Cannon: Yeah!
23:10 Michael Kennedy: Or they've built companies on it or they built products on it. There's a lot at stake.
23:14 Brett Cannon: Look at you! Right? If I screw this up, suddenly, poor Michael doesn't have a great podcast to talk to and has his training that he does. And, like, oh my God. I suddenly put one of my favorite podcasters out of work because I screwed this up. It's...
23:26 Michael Kennedy: Yeah, no pressure, no pressure.
23:27 Brett Cannon: It was a heavy responsibility, but it was also a heavy one with no clear guidance on how to handle it because no one was in charge. It was really weird. It was pretty much almost the epitome of anarchy. It was just a bunch of people who happened to know each other having forgot how to run themselves.
23:46 Michael Kennedy: It's almost like there was a country, and the leader just stepped down or something, right? There's all these people that are still, they're committed to being there. They live there, whatever. Now, what are they going to do, right?
23:55 Brett Cannon: Yeah, exactly. It's like we were a little country. And suddenly, the government just said, yeah, we're dissolving ourselves. Good luck. Bye. Okay. How do you rebuild a government from scratch? I mean, Who gets to ever do that? Like, and a lot of people don't because it turns out it's kind of hard.
24:11 Michael Kennedy: Yeah. Yeah, it's definitely hard. I guess, maybe we can talk about some of the options. I thought, I know we spoke a little bit on Python Bytes long ago. Probably August or late July about this. You know, let's maybe just go through some of the proposals that people had.
24:25 Brett Cannon: Yeah, so basically, while we were actively discussing how we were going to handle voting, we started to, more or less solidified that we were going to handle it through the PEP process 'cause that's what we were all familiar with. Things would have to be written down and very clearly defined 'cause this was basically going to be our version of a charter or a Constitution or basically our set of rules and laws of how we run the project. So that quickly, at least, got settled. And, in the end, we ended up with six options. One was PEP 8011. And by the way, all these PEPs start from 8010 and stay within the 8010s range. So 8011 was a proposal to have a trio of Pythonistas. So, basically, that was taking Guido and splitting up into three ways. More or less...
25:11 Michael Kennedy: Were they going to have, like, a voting block style where they all were kind of co-equal? Or was it this person's going to handle this aspect and that person's going to handle that aspect?
25:22 Brett Cannon: It was very, basically, we were going to elect three people. And it was, they were going to act as if they were unified as a single dictator. So it was very much just...
25:29 Michael Kennedy: I see.
25:31 Brett Cannon: Single responsibility split into thirds and basically had to, at least two out of the three had to agree to make anything happen.
25:38 Michael Kennedy: Yeah, okay.
25:38 Brett Cannon: So, compare that to, actually, 8010, which I accidentally skipped.
25:41 Michael Kennedy: Yep.
25:41 Brett Cannon: Which was, basically, let's have an elected dictator. A single individual. That was what you commented about where my name got tossed about.
25:48 Michael Kennedy: Exactly. Guido stepped down. Who was going to take his place?
25:50 Brett Cannon: Yeah. That one was a little interesting from the perspective of, some people said, like, we really can't have a discussion about this, that PEP and that model without knowing who we are specifically talking about.
26:02 Michael Kennedy: Right.
26:02 Brett Cannon: So some people were like, I'm not even willing to discuss this unless we have a name attached to it because it's really going to be a vote for that person. And other people went, no, it shouldn't be. It should really be about whether or not we like this model. And then we will just all choose who we think should handle that. And if you happen to think no one, that's fine. But we don't have to have specificity attached to a person. It, honestly, very quickly though became very clear that people, in general, did not like that model. So it was there kind of to fill, and there was some initial interest in it. But it really didn't stay a top contender for very long in my opinion. The Trio one did, I will say. PEP 8012 was a community governance model. That one was, basically, following Rust's model. If I remember correctly.
26:48 Michael Kennedy: Yeah, exactly.
26:49 Brett Cannon: And that's very much, basically, people form working groups. And the working groups make decisions. And there are ways to form working, and the PEP specified how working groups would be formed and how they would be potentially dissolved. But, basically, everyone's equal footing. People could create work groups as necessary. People would get voted into adding to working groups, and then those working groups would work together to reach conclusions for things. That, I believe, came in actually second in all the voting in the end while the Trio selection was third. PEP 8013 external governance model, that one was somewhat interesting. But actually never really caught on with anyone. That one was basically saying what we should do is almost run Python as a company where we have some people from outside the project act as almost our VPs, and we just go up and report to our VPs about what's going on. Like, here's a PEP. I'm going to give you the quick presentation on it. They would ask questions, and then then they would say, yep, we're going to do it. Or they would say, no, you need to go fix these things.
27:56 Michael Kennedy: Kind of like a board of directors.
27:57 Brett Cannon: Yeah, exactly. It was very much a, yeah, you come forward with your proposal. They'll look at it during your monthly meeting. Sync up with them, and they'll either go, you got to change these things. Or, yep, okay, it's all good. And we'll take it, and go for it. But the interesting thing was it was specifically required the members of this board to be not Python core developers to try to bring in, basically, unbiased viewpoint from outside the project. And, honestly, I feel a lot of core developers just didn't like that idea. They thought too much history and too much understanding how the project works, and just potential disconnect from the project the community would be too much. And it just wouldn't lead to the right result.
28:38 Michael Kennedy: Yeah, the people making decisions, they don't have as much skin in the game, right? They don't have to live with it, they don't have to implement it. They just like it or don't like it.
28:45 Brett Cannon: Yeah, exactly, right? So it was one of these things that, honestly, I just, it was an idea that got proposed. But I don't think it ever really went anywhere, so the next one was 8014. That one was, basically, anarchy. And, actually, in the PEP, Jack Jansen wrote it, he said he would've just used the term anarchy 'cause it was technically accurate. But there's such negative connotations around the term that he didn't want to use that. The wording of the actual PEP, but it was, basically, just everyone's on equal footing. People can propose stuff. There would be a voting certification council kind of where, basically, there would be a group of people who, when people wanted a PEP decided, for instance, they would call for a vote. And people would vote, and that council would decide whether the vote passed or not. But they would decide, not only based on numeric numbers, but also on who voted and who voted how. And it was potentially going to be open to the whole community or just core devs. It was, basically, up to them to decide how they'd run the vote and make that final call of how that outcome really looked. So I think it was just, basically, too wishy-washy for a lot of people to go like, yeah, I want that.
29:58 Michael Kennedy: Yeah, some of these do sound kind of wishy-washy. It's like, well, that could be good. Or it could go really bad, and it depends who's here. And it's just, I don't know. Just it seems really vague, and vague and, like, law, governance kind of seems like a bad combination.
30:10 Brett Cannon: Yeah, and so. I mean, the idea of let's not necessarily put people in the same position that Guido was put into. But I think developers being developers, we like structure. And I think there just wasn't quite enough structure for that to catch.
30:23 Michael Kennedy: Sure, okay.
30:24 Brett Cannon: Next one was 8015. That one, organization of the Python committee, it was kind of a hybrid between let's do everything through working groups. And let's do everything through Trio but with a panel of five, but everything was, basically, going to be done through a, more or less, a vote. So it was another one of those, they had ideas. But I think everyone viewed it as enough of a hybrid that it never quite caught the eye of people who liked the Trio idea or who liked the working group idea. And, honestly, I think, I know when I was thinking about it, I was like, I was thinking this was really going to be a vote splitter between those two. And depending on what voting system we ended up choosing in the end, that was going to potentially hurt those other PEPs.
31:04 Michael Kennedy: Right.
31:04 Brett Cannon: So it was there, but it never, I don't think, once again, really caught on because it wasn't quite clearly as strongly positioned as, like, this is how we're going to do it. And this is a easy way to explain it versus it has a panel or a board or whatever term, but it also has working groups. And it's all being done through voting, so I think people typically, in all of this, kind of, much like politics, felt very strongly one way or the other. And this was, once again, too much of a hybrid for people.
31:33 Michael Kennedy: Right, this middle ground. Yeah, it's a little too nuanced or whatever.
31:36 Brett Cannon: Yeah. And then the last one, which was the one that ended up winning, was 8016. It's now actually known as PEP 13, and that's the steering council model. And, basically, what that did was it said, okay, we're going to choose a council of five people. And those five people are going to have, basically, absolute power. Except for changing what's in PEP 13. PEP 13 basically said they can make any decision. They make decisions on all the PEPs and all that stuff and basically decide how things happen, but they should always try to seek to do it through consensus. So it's funny. It basically says, short of what's written in PEP 13, the council has absolute power. But they should look to use it as little as possible.
32:20 Michael Kennedy: Right, I see. So they could, theoretically, take the steering council down and, like, change the model or something, right?
32:25 Brett Cannon: Well, no, because that's actually specified in PEP 13 that they can't do that. So that's one of the things... PEP 13 very much is not about necessarily specifying what powers the board has. It's very much specifying how the board gets, how the council, sorry, gets elected and how the potential voters for the council get brought in. So the PEP is very much structured around the council can do almost anything, except it can't dictate how the elections occur for the council. And they can't dictate how someone becomes a core developer and who's considered a core developer, and that's really what PEP 13's focused around. Because, otherwise...
32:58 Michael Kennedy: Sort of keeps the few pieces in place to keep it...
33:02 Brett Cannon: Yeah. And the interesting thing was is, the way it was kind of structured initially, and it still is is it was almost in the way of, I publicly said this when it was being discussed is, this PEP was almost worded where it is if it was kicking the can down the road, if you know this expression. Of, basically, we're going to elect a council that's going to choose how we're going to run the project because, once again, as it was worded, it was they have absolute power. But they're not supposed to really use it, so it was really like, all right, are we going to do kind of more of a, are they going to act more like a Trio? Or are they going to do more of a working group approach? And the PEP actually said they should look at the voting results of this overall thing and work with that to choose how it should work. Now, I personally didn't like that approach because it was like, that's not really what's going to happen here. What's going to happen is you're going to elect a council that has power, more or less like Guido except divided five ways. And you're just asking them to please consider doing other things. Potentially, they don't have to do any of it. As long as they don't interfere with how core devs are chosen and who qualifies as a core dev and how the elections happen, they can basically do whatever they want. And so, the other day, I was saying, you might as well just specify the Trio because the hopefulness of that, I just didn't think it was actually going to happen.
34:12 Michael Kennedy: Yeah, so what's the difference between the steering council and the Trio of Pythonistas? I mean, it feels like maybe the steering council just has more. But is there some other principle difference between those two models?
34:22 Brett Cannon: From the top of my head, this is some of this information, luckily, has just completely left because it's no longer relevant. Now it's all historical interest.
34:30 Michael Kennedy: That's right.
34:30 Brett Cannon: But for one, technically, I don't, the election cycles are different. Like, the Trio, I think was going to be elected for longer. And PEP 13 has, the council's elected per release cycle.
34:42 Michael Kennedy: Okay, and right now, that's every 18 months, right?
34:44 Brett Cannon: Correct, although the initial one's truncated because we have a release later this year. And we all got elected starting in February, so this first inaugural group is going to be kind of truncated. But it was also brought up that pretty much every group that has a system like this pretty much once you get on the council, chances are unless you royally screw up or you step down, you're just going to keep getting re-elected because people are always happy with the status quo working much like people not wanting to add new syntax to Python. If the status quo works, why mess with it thing? So I think everyone went into it kind of knowing that the first set of people who got elected were, more or less, going to continually be re-elected if they had a chance, yeah. Yeah, I think it was more the fact that the steering council PEP very specifically says, try to find consensus. Don't try to spring anything, don't try to run as a dictator. Don't suddenly make big, sweeping decisions. Try to talk to the group, and try to work through it. But in terms of the last result back stop, the council's there as necessary. So I think that's really the difference is the spirit, really, behind it.
35:44 Michael Kennedy: Okay. Yeah, interesting. Cool. That's the model that won, the steering council model.
35:49 Brett Cannon: Yes.
35:49 Michael Kennedy: And we've had the elections.
35:49 Brett Cannon: Yes.
35:51 Michael Kennedy: And we have Barry Warsaw. We have you on there, we have Carol Willing, Nick Coghlan. And it's really nice to see Guido is on there as well. That actually surprised me a little bit but in a good way.
36:03 Brett Cannon: Yeah, so actually, I would make Guido actually ask me if I thought it was a good idea personally. And I said yes because Guido said, he's always said he wanted to continue to contribute technical insights and his design sense, which I think we can all admit, based on how Python's turned out, is very good. And, actually, one of the reasons only people didn't like the new dictator model and that 8010 propose because a lot of people said that they didn't feel there was a single person, other than Guido, who had his design acumen, his technical insight and abilities, and his way to kind of project and manage the community as it were. So when Guido decided to do it, he said like, I'd like to still run and be a part of it. Not 'cause he necessarily, the day-to-day, like, management bits. But because he still wanted to be able to contribute his technical insights and his design acumen, and I think it, honestly, also provided some transition and some validity to the council, right? Because while Guido is not running it as a dictator anymore, he's still participating as a nice way to just smooth things over. And it's not just suddenly jarring like, all right, now the person who was involved is just completely gone! It's like, no, Guido's here. He's just sharing the load now across four other people.
37:19 Michael Kennedy: Yeah, exactly. He doesn't have to take all the work. And, especially, doesn't have to take the negative pressure.
37:23 Brett Cannon: Yeah, exactly.
37:23 Michael Kennedy: So anyway, just kidding. That sounds good. This portion of Talk Python to Me is sponsored by Backlog from NuLab. Developers know the importance of organization and efficiency when it comes to collaborating on a team, and Backlog is the perfect collaborative task management software for your team. With Backlog, you can create tasks, track bugs, make changes, give feedback, and have team conversations right next to your code. You track progress with features like Gnat and Burndown charts. You document your processes right alongside your wikis. You can innovate with the tools you use everyday like Slack, Jira, and Google Sheets. You can automatically register issues from email or web form submissions. Take your work on the go using their top-rated mobile apps available on Android and iOS. Try Backlog for your team for free for 30 days using our special URL at talkpython.fm/backlog. That's talkpython.fm/backlog. So how does it feel, as a core dev, you know, inside that group now that this change has been made? Like, does it feel significantly different? Does it feel like kind of the same? And I guess it's worth also pointing out that from July until, like, two months ago, whenever this election was finalized, there was no progress on PEPs or other decisions or, like, you had to first decide how to decide. And now you can start making decisions on stuff that's been backlogged, right?
38:48 Brett Cannon: Yeah, so, and not only on top of that, so yeah, you're right. Basically, anything that Guido would have needed to make a decision on, which was pretty much anything in a PEP or anything fairly controversial. Dev team felt split on but where the status quo was not an option was completely put on hold. PEPs came in, but no PEPs went past. Being open, nothing. We froze completely from July 12th all the way until February 3rd, I think? 3rd, 4th? I can't remember. I was in New Zealand, so my day of the year was completely skewed.
39:20 Michael Kennedy: It wasn't the same day.
39:20 Brett Cannon: It was not the same day that everyone else was dealing with when they got the results in, and they were voting, so yeah. And then, on top of that, what also added to this was, every so often, usually at the language summit, Guido would do what we called the PEP parade where he would go through all the open PEPs and sometimes just make decisions right then and there that just hadn't gotten through or we'd been putting off for whatever reason. Had open PEPs that we had not dealt with, and so at language summit sometimes, he would go like, okay. This goes to the list of open PEPs. Like, okay, let's keep working on that. Reject that, accept that. And literally would just go through the list. And we'd just get basic updates and shut some of, close some of them, accept some of them, and then just kind of kick some of them back up into happening. But we hadn't done that in the 2018 language summit, so not only did we have anything that came in. But we had everything that was still open prior. So, actually, when we started, I did a quick count. And there were 38 open PEPs when the steering council was formed for the first time, so.
40:20 Michael Kennedy: So you're basically...
40:20 Brett Cannon: We've had a backlog. But in terms of how it feels, I have a weekly meeting now with four other people who I consider friends. So that's kind of cool. It allowed me to ask Microsoft to let me split my time more evenly and more in Python's favor than I had got to before, which was great. And so the workload, honestly, hasn't actually really felt like it's increased too much. Although a lot of stuff's been, management stuff's been backing up over the last week. But that's here nor there. But yeah, otherwise, it basically just feels like a more concentrated conversation with Guido that I normally would have potentially had anyway with some other people. And I guess it's kind of hard to balance based on the amount of extra time we're now getting things to work thanks to what Microsoft's given me versus before and the added responsibility because there's technically added responsibility. But it also doesn't feel bad because, like, I trust Barry and Carol and Nick and, obviously, Guido. And so having us all just, basically, decide as a group or something versus just asking Guido and all going, okay, sure. Technically, it does it feel social that way.
41:21 Michael Kennedy: Yeah, it's probably not so different. I mean, if Barry, you, and Carol, Nick all went to Guido and said, hey, I know you're considering this. We all don't like it. He would probably take that strongly under consideration, right?
41:31 Brett Cannon: Yeah, exactly. So if there was an all-out, like, before hand in the pre-July 12th days, had the whole community just like, don't do, this is not a good idea. Please don't do this. He really would have taken it under consideration, and now there's just five of us.
41:46 Michael Kennedy: Right. So that's the benevolent part. He wasn't like a violent dictator or something. He was a...
41:52 Brett Cannon: Exactly! I mean, to be perfectly honest, the hardest part of dealing with this right now is we are all, both the council and every other core developer, we're just still just trying to figure out how all this functions. Like, very topical, like literally, before I came on to do this recording with you, Michael, is I opened up a proposal to set voting timelines in PEP 13 for new core devs and for changes to the PEP itself. And I thought it was innocuous. It was specifying we're going to leave votes open for one week for new core devs. We're going to leave votes open for two weeks for any changes to PEP 13. That was it. The council didn't think it was that simple, and then right now, we're having an active conversation. Like, well, okay, when we're proposing changes to this PEP, and I did it as one because, in my mind, it's just specifying timeline. So it's single change versus, oh, this is one proposal for one timeline and one proposal for another timeline. But it's led to, like, hey, you didn't talk to us about this. Why are you doing two at once? Just all this stuff that we just never really had to think about before 'cause before, it would've just been Guido just did it and it was over. But now that we're trying to do this more consensus based, and but we also don't know where the line of do we really need to bother Python development team with everything? We don't know quite, we're still feeling out, like, where is the line? Where do we bring in the whole team versus let's just get it done, and let's not bother everyone. And everyone's still feeling this whole situation out. So that's probably the biggest difference is just we, before this, just innately kind of just knew how things ran and how things worked and when we should and shouldn't do things. And now it's kind of more of an open, okay, I'm not quite sure how to handle this equation. I'm going to try it, and we'll see what happens. And some people are happy, and some aren't. Luckily, everyone's being very nice about all this. But we're...
43:37 Michael Kennedy: It's like when you move in with someone, right? There's these things that come up. You have no idea. Like, I didn't know you left the dishes out all night. I always do them. I can't believe I wake up. You're like, dude, wait a minute. That was a thing?
43:48 Brett Cannon: Yep.
43:49 Michael Kennedy: I didn't even know this was a thing. I just always...
43:50 Brett Cannon: Uh-huh. And then you quickly learn about which ones you can live with and which ones you really have to work with the other person to change because it just drives you bonkers. So, yeah, so it's an ongoing, it's an ongoing conversation, really, between the council and the core devs about how we want to make the situation work and how best to handle things 'cause we, honestly, a lot of this is brand new. And it still is.
44:14 Michael Kennedy: Yeah, sure. You're optimistic about it in the end, though?
44:19 Brett Cannon: Yeah, I mean, if you look at it, we've gone through, I think, the vast majority of open PEPs have now either been closed because they were rejected or we deferred them 'cause they were just saying they're incomplete. Or we've been finding BDFL delegates. We kept the term for finding people who we were going to delegate the decision of a PEP to, or the steering council has decided that if the steering council ever makes a decision that one of us will be the point person. But we'll decide as a group. Unless it's very specifically, we're specifically choosing an individual for a reason. Like Guido on some typing PEPs, it's just going to be Guido. He's not going to need to consult the rest of us 'cause Guido's the expert and has a very specific...
45:00 Michael Kennedy: That's his main focus...
45:00 Brett Cannon: his focus and has a vision, and we trust him on that. So he doesn't need to consult with the rest of us on how to handle typing PEPs. But, like, two PEPs just of the day, I assign to myself as the delegate. But it specifically says Brett Cannon in parentheses on behalf of the steering council. But, yeah! I mean, otherwise, it seems to be going well. As I said, I think it's really just at this point, feeling out how, what the balance is in terms of what the steering council should do on its own to be self-driving versus getting feedback and direction from the core team versus when we should just make decisions versus consult and just where are all the lines? Where's the balance? What's everyone happy with? And but otherwise, yeah, I think it's good. It's stable. It puts in place a mechanism to make sure there is always, basically, five people in charge, which helps give some form of stability that I think was really critical. That we never really, we kind of all thought about in the back of our head. About, Guido was always joking about his retirement. But never really took too seriously 'cause we figured it would be a slow controlled transition versus a more abrupt, in the next six months, transition. Otherwise, yeah, I think it actually puts us on better footing 'cause now there's a explicit mechanism on how to always make sure there's always five people around to be in charge of the language and to make sure that it's function right.
46:21 Michael Kennedy: Yeah, with five, there's probably always going to be some continuity, right? Like, you won't have the council overthrown. It'd be unlikely that that happened.
46:29 Brett Cannon: I would be a little shocked. We released the voting numbers, and there were, once again, it feels like such a humble brag. But Guido and I both got voted fairly high fairly quickly, but everyone across the board got pretty good numbers. So I don't think, I feel like the spectrum of vote counts, it doesn't look like all of us, like barely squeaked in compared to anyone else. So, like, if just one person had flipped their votes, it would have been a completely different outcome. So I think that we, there will definitely be civility in transitions of certain people 'cause they make it through. And, once again, I suspect all five of us have a decent chance of being re-elected if we chose to just because, once again, if people decide the status quo works out as we work out the, feel out these kinks and how people want to handle things, I think as long as we don't step on anyone's toes and make anyone feel really marginalized, and, like, the core team doesn't have their voice being heard. Hopefully they're just going to be happy as they are and just keep doing what you're doing, and won't be an issue.
47:28 Michael Kennedy: Yeah, so if, like, for 3.9 you guys come out and say we've decided to make Python a statically typed language. And we'll have interfaces and all that. Like that may cause some, ruffle feathers.
47:38 Brett Cannon: Yeah, and so, actually, there is a way to recall the entire individuals or the council in PEP 13. So there is a mechanism to, basically, pull the lever and eject us. I don't see that happening 'case, Lord knows none of us want that for Python either. So yeah, no, I think it's going to work out well. It's just a matter of, as I said, just figure things out. Ask me again in a year, and then I can probably give you a bit more definitive answer. But I'm very optimistic and it's not even cautious. I'm just flat out optimistic.
48:06 Michael Kennedy: Yeah, that's great. I am as well. I mean, there was a lot uncertainty in August and September. But now it feels like, well, the people that were generally running it, the core devs who were doing the heavy lifting, are kind of still doing that, right? And people who are well-known in the community are kind of making the decisions.
48:24 Brett Cannon: Yeah, I mean, the day-to-day never even stopped, right? Even on July 12th, people were still committing. I think the day-to-day changes and PTs and issue closing and all that stuff, that never ever stopped. So that day-to-day definitely was never threatened and really an issue, so.
48:40 Michael Kennedy: Yeah, yeah. Cool. So one thing I did want to ask you about is Python's been growing like crazy, and it's been bringing people from different areas. And its growth in sort of corporate development world is certainly seems like it's growing, and there's a lot of folks who are coming in. And Peter Wang, who was one of the potential people to be in the election, one of the candidates, I guess you would call him for the steering council, he was on the show 198. And he had some really interesting thoughts that having a lot of these corporate developers are used to working with, say, Oracle or Microsoft or someone who they're paying. And then their role is to work with the tools and then maybe ask for features or give feedback because they have this commercial relationship. A lot of them may be bringing, like, that mentality to interacting with the core devs in the Python community. And these, he put out the idea that maybe that's going to change. It's going to put different kinds of pressure and maybe a mismatch of expectations on these interactions. What do you think?
49:40 Brett Cannon: I, concerning...
49:41 Michael Kennedy: Do you think it's okay?
49:42 Brett Cannon: I'm not concerned just because I haven't seen it yet.
49:45 Michael Kennedy: Okay. That's good to hear.
49:46 Brett Cannon: I've not seen any new corporate onslaught of suddenly corporations coming in saying, I want this, I want that. I mean, the closest thing I can think of that's even on that vein is the XWorks has been working on adding Python support onto the real-time operating system. But they came in and just said like, hey, we want to add Python support to the Xworks. We have some patches we need to make Python work. What can we do to try to make it an official supported thing? And we pointed them to the PEP, I can't remember the number of, where it takes to be a officially supported platform and that, honestly, probably what's best is if you have patches that just make things function better. We'll take those. But if they're more specific, we'll probably just ask you to maintain your own patch set. But that was it. They very much came in and were very inclusionary and not making them as, like, we're this company. And we want this, and you should make this happen like some users can be.
50:39 Michael Kennedy: Yeah, his thought was more not in that realm. Like, I can certainly see a good relationship there. It was more like there is a person who was sort of a nine-to-five developer. They're not super passionate. They were doing job hub, but then they got moved on to this other project. And, oh, it happened to have been done in Python. Maybe it's Python 2. It's kind of old. It has these problems, and they didn't really choose Python. But they have to make it work 'cause they were told they have to make it work, and now you support the package that's in the way of their thing working. And so you receive, you know, sort of that disconnect there.
51:09 Brett Cannon: Yeah, so that would be more at the community level I would argue, though. Not at the core dev slash council level, so...
51:16 Michael Kennedy: Yeah, yeah, of course. It definitely would, yeah.
51:17 Brett Cannon: Yeah, so I personally haven't bumped up against that. But the other thing I would say is Python's been successful at the corporate level for quite some time, I would argue, right? It's not like Instagram showed up yesterday, and Instagram is probably one of the largest single Python applications in turns of volume of users out there. So I don't think it's necessarily any different than any other growth we've seen in the community. I mean, from my perspective on the Python extension for VS code, for instance, I do see somewhat uptick in terms of people learning. And I definitely see that as increasing over the last year and a half since I've been leading that team. I haven't seen it shift and sort of, like, all these corporate people coming without this. I can't use this, blah blah blah.
52:04 Michael Kennedy: Oh yeah. That's good.
54:17 Michael Kennedy: Right. It's more there to support the legal mumbo jumbo and the trademarks and all that kind of stuff, right? It doesn't actually support you as this is the company that drives the tech.
54:27 Brett Cannon: Yeah, it's not like the Mozilla foundation in that regard. The PSF was, yeah, very much created to handle the legal holdings and issues for Python. And then it kind of grew into this big driver of the community, but it's purposefully always been kept at arm's length from the development team because they didn't want, no politics ever came into the actual development language. But they're there. I mean, they will totally provide support as necessary for services and such if we need them. But I don't know how corporations feel about that. I don't know if they like that idea of a non-profit being the backstop for whatever. Now, I will say that some of the newer things we're doing other than talking about PEPs, one of them is we have started to talk with the PSF about potentially getting, like, a project manager for very poignant things like how do we handle the Python Two sunset, right? It's coming up! I, it's going to be a party. My wife's determined to get me really drunk on January 1st, 2020. There's a lot of stuff to happen between now and then. Right? Like, what do we do about docs.python.org, for instance? Right now, there's docs.python.org/2/stuff. And then /3/stuff. And if you google stuff on Google, it's still oftentimes the first link is the Python 2 docs. Then it's the Python 3 docs for our module for instance.
55:41 Michael Kennedy: Yeah, I mean, we do 3.1, 3.2.
55:43 Brett Cannon: Yeah, well the 2 docs will probably be going away, right? Because it's not supported anymore.
55:49 Michael Kennedy: Yeah, exactly. It's a permanent redirect over to the version 3. Yeah, exactly.
55:52 Brett Cannon: What other stuff do we have to suddenly deal with? Like, I'm sure there's a ton of stuff on python.org that mentions two that, honestly, doesn't need a mention it come 2020 because we're not supporting it anymore. It's no longer the download...
56:03 Michael Kennedy: The download page...
56:05 Brett Cannon: Yeah! I mean, luckily, that's pointing straight to 3 now. But for a long time, it was both. But it's stuff like that.
56:10 Michael Kennedy: But when you go to get, like, all versions. It's got, like, all that.
56:13 Brett Cannon: How are we going to handle ourselves? So we were talking to the PSF about getting some PM for that. We were also talking to them about handling, to getting a PM, potentially, about moving our issues to Github. There's an open PEP about that, and we're discussing the feasibility of that. And part of that would probably require having a PM to handle that kind of major project, so we're talking to them like, okay, well, if we're going to consider this, we need to make sure we have the PM to help make that happen. So we're talking about the PSF for now about what that would look like to get a PM for us to help handle that specific thing. And so we're starting to have more of a conversation along those lines, but it's still in early days. But back to the whole corporate onslaught and stuff, I don't know how many corporations realize that the PSF exists. And they're there to help us as necessary because I've talked to corporations who have said, like, they've claimed they would throw money at us if they knew it would only go towards development 'cause they don't care about the community, honestly. For capitalistic reasons, they just care about the language.
57:09 Michael Kennedy: All right. We need this feature to be improved...
57:12 Brett Cannon: Not even feature!
57:12 Michael Kennedy: This area. We need people working on just, yeah. Right, okay. Just working on the runtime... The interpreter.
57:18 Brett Cannon: Exactly. How do we make sure the Python doesn't suddenly collapse under its own weight next month because I got to at least make it through the quarter to make my numbers. Where can I send money because I'm just, I work for a bank or something. And I'm not set up to staff people to just contribute to Python full-time. It's just I don't even know how I promote such a person, so where do I throw money at this problem? And we just haven't structured things that way, and that conversation, I think is also about, probably, going to start happening in the near future.
57:47 Michael Kennedy: It would be a good problem to have, right? If you actually could set this up and folks could contribute, but it's tricky I know.
57:53 Brett Cannon: Yeah, so I think the PM thing is probably going to be the first step. And then depending if that works out and how that goes, we'll probably see how wide of a net we want to start talking. Like, personally, I would love to get, like, something like the Django Fellowship for Python Dev and have a core dev who is available be staffed for, like, six months or a year or something to do nothing but just work on closing PRs, closing issues, the community communication stuff. Basically, what Django has with the Django Fellowship program, I'd love to see that.
58:23 Michael Kennedy: Yeah. 'Cause that'd be cool. I feel like that kind of deep work where you can just be 100% focused on it for a long time would probably make a huge difference. Yeah. Cool. Well, that's all good news. I have a ton of other things I want to ask you, but I've already used up more than my time. So let me just ask you some real quick things. You're going to be at PyCon. There's going to be a language summit. People can see you there?
58:41 Brett Cannon: Yes! There will be our annual language summit. I will be attending. I think I'd be in deep trouble as a council member if I didn't show up. So, basically, as long as I make my connection in Milwaukee. My flight out. I will be there.
58:53 Michael Kennedy: You could walk from Milwaukee. No, not really. But you'd be close. You could rent a car. I think you're going to make it.
58:59 Brett Cannon: I guess that's true. I never really thought about it that way. I have 45 minutes to make my connection. I'm not really worried. It's just when I open up Trip and it says connection at risk it's like, oh God. It's more than half an hour. I think it's fine. I made it last year. It's just I don't love having that red banner in my face every time. It makes me a little worried, but I think now...
59:16 Michael Kennedy: You should be fine.
59:16 Brett Cannon: Exactly.
59:18 Michael Kennedy: Yeah, perfect. All right, cool. Well, I'm definitely going to be there too. It's going to be a lot of fun. Really quickly, what is the upcoming feature either in 3.8 or beyond that's, like, you're most excited about?
59:29 Brett Cannon: God!
59:29 Michael Kennedy: Language, standard library, whatever.
59:32 Brett Cannon: I don't know if I really have one. I've been having to read all the PEPs. I haven't to stop and really think about any of them quite yet. I've been too busy trying to find people to make the decision for me whether or not we want it.
59:42 Michael Kennedy: While you're thinking, I'm going to throw one out there. I'm really, I was really impressed with the new support for shared memory in multi-processing. That looks really cool coming in 3.8.
59:51 Brett Cannon: Yeah, all the work Devin put in is going to be great for a lot of people, I think to try to help with that. So that's going to be awesome. The other problem is this place I've lived in, the development, I forget what's even gone live or what hasn't gone live. So the version numbers blur for me horribly, so it's hard to even remember. I mean, honestly, I am curious to get to use assignment expressions and see how that works out in my code.
1:00:14 Michael Kennedy: Yeah, same. That'll be out pretty soon, yeah.
1:00:16 Brett Cannon: One thing that did land that, once again, very controversial topic. But I actually think it was a good thing is we accepted positional only arguments.
1:00:21 Michael Kennedy: Yeah. You've had keyword only arguments for a while, so now it's like the anti-keyword only arguments, it's the position only.
1:00:27 Brett Cannon: Yeah. And, basically, the way I think about it. You can go from positional only to positional or keyword to keyword only. And, actually, the syntax actually works with that mnemonic, in case you haven't seen it, basically what happens is you have your parameters. And then if you put a forward slash...
1:00:44 Michael Kennedy: Forward slash I think, yeah.
1:00:45 Brett Cannon: That demarcates the end of positional only arguments so everything past that will be keywords or positional, and then ass soon as you have the asterisk by itself that denotes keyword only. I think that's going to be really nice because it's going to deal with some annoying code where you actually do not care about that keyword name. And you really don't want to take it off. Like, the main thing, it like, takes ** keyword arcs and you want to be able to take absolutely anything. Any argument, like, even self would actually muck with that and get in the way because anything past the self as a keyword argument, would get caught by that. And then also at some compatibility with C code, and I'm personally always happy to have more flexibility in how I design my APIs. So I'll go with positional only arguments. The thing I'm most excited about.
1:01:30 Michael Kennedy: All right. Right on. I like it as well. All right, final two questions before we get out of here. I have a hunch in what you're going to answer for the first one, but I'm just going to put it out there. Favorite editor?
1:01:38 Brett Cannon: VS Code. More than a hunch. I think I'd be, I'd have a very strong conversation with my manager or my PMs if I said anything else anyway, but.
1:01:48 Michael Kennedy: Yeah, but you're working on that team because you like it. Yeah.
1:01:49 Brett Cannon: I was actually happy when I got asked to work on the team, and I was already a user and a fan, so. It's a choice. It's a lifestyle choice.
1:01:56 Michael Kennedy: Yeah. And if you look at the Stack Overflow 2019 developer survey results, which just came out. Like, you guys are crushing it, so.
1:02:03 Brett Cannon: Yeah, exactly. If you like Python and you like VS Code and based on Stack Overflow, you should like both, you should definitely be using VS Code with our Python extension. The number one most downloaded and most installed extension on the VS Code marketplace actually.
1:02:17 Michael Kennedy: That's crazy.
1:02:18 Brett Cannon: Oh, we beat everything. And it's not even close, so we're doing something right.
1:02:24 Michael Kennedy: Yeah. I would say so. Awesome. All right, and then notable PyPI package.
1:02:28 Brett Cannon: I think even though Brian Okken I know sometimes gets upset with this package 'cause it doesn't support his source preferred layout, I'm going to say Flit 'cause they still think not enough people realize how much simpler packaging could be if they just weren't using setup tools.
1:02:42 Michael Kennedy: Okay, Flit. Right on. That's awesome.
1:02:44 Brett Cannon: Yeah. So for those who don't know, I worked on PEP 518, which is pyproject.toml, which is a way to standardize on how to specify how to build your packages. And, obviously, everyone knows setuptools at this point it's the way to do it.
1:02:57 Michael Kennedy: I should look at it actually like...
1:02:58 Brett Cannon: Yeah, it's very straightforward. And it works the way you would expect, right? Like you don't have to specify your version anymore. You just specify the dunder version in your package, and it'll just use that. You don't have to open the file in your setup.py to read a ReadMe file. You just specify the path to your ReadMe file. Just really... Obviously ways do things. And we all kind of, like, forget that that's, oh yeah. We should be allowed to do that. And it's one file. It's all in your pyproject.toml. There's no more setup.py, there's no more setup.cfg, there's no whole package-info, manifest.in, none of that. It all just works...
1:03:34 Michael Kennedy: Yeah, that's cool.
1:03:35 Brett Cannon: It gets packaged, and Thomas Clyburn's done a great job with it.
1:03:40 Michael Kennedy: Cool. Yeah, yeah, it sounds awesome. I'm definitely going to check that out. So Flit people can do packaging. Cool. All right, final call to action. You know, people maybe want to get feedback or support the council or whatever. What do you got?
1:03:52 Brett Cannon: Not much other than just be nice. I mean, there's nothing really specific other than just be supportive and be understanding. We're all on Twitter, we're all on social media. We're everywhere. We do see the negative comments, and they don't really help. If you have feedback and it's constructive, that's great. But just being flat-out cranky just doesn't really help, so my call to action is I have a whole keynote from PyCon US 2018 on this. Basically, be nice if you can. And if you can't, just be cranky not in public where the rest of us might see it. And that's the big one.
1:04:25 Michael Kennedy: That's good advice. Yeah, will all, like, all the people on the council be at PyCon? People come meet you?
1:04:31 Brett Cannon: Yeah. I will be at PyCon. I believe all five of us will be at PyCon. We are actually going to be giving a panel keynote I believe Sunday morning if I remember the date correctly. I will, PyCons and keynotes the keystone sponsor again this year. So I will probably be floating around the Microsoft booth. So if people want to try to catch me. Either catch me in the halls, I'm six foot six inches or 198 centimeters. It's kind of hard not to see me.
1:04:57 Michael Kennedy: You can be seen in a crowd for sure.
1:04:58 Brett Cannon: I can be seen in a crowd, so if you see me walking down the hall, feel free to say hi. Otherwise, just look for me at the Microsoft booth. And just catch me there.
1:05:04 Michael Kennedy: All right, cool. Well, Brett, thank you for coming on and giving this update. It's really interesting, and I think it'll be good to have it all spelled out for history.
1:05:13 Brett Cannon: Yeah. Yeah, it's nice to finally have it settled. I mean, going from July 12th to the beginning of February, it was kind of like, all right, where's this going to go? There were a couple moments where it was a bit stressful. There were kind of like messages between some people behind the scenes about trying to get the votes set up and like, are we going to do it? Are we going to do it today? Do we need to push back? There was a lot of back and forth discussions, and it was a lot of passions. People did pretty well with keeping it civil and in check, which was great. But it's so nice to have it finally absolved, and we're all just moving forward.
1:05:42 Michael Kennedy: Yeah, absolutely. All right, well, thanks for being on the show. Catch up with you later.
1:05:45 Brett Cannon: All right, see you later.
1:05:46 Michael Kennedy: Yeah, bye. This has been another episode of Talk Python to Me. Our guest in this episode is Brett Cannon, has been brought to Linode and Backlog. Linode is your go-to hosting for whatever you're building with Python. Get four months free at talkpython.fm/linode. That's L-I-N-O-D-E. With Backlog, you can create tasks, track bugs, make changes, give feedback, and have team conversations right next to your code. Try Backlog for your team for free for 30 days using the special URL talkpython.fm/backlog. Want to level up your Python? If you're just getting started, try my Python Jumpstart by Building 10 Apps a course. Or if you're looking for something more advanced, check out our new Async course that digs into all the different types of async programming you can do in Python. And, of course, if you're interested in more than one of these, be sure to check out our everything bundle. It's like a subscription that never expires. Be sure to subscribe to the show. Open your favorite podcatcher and search for Python. We should be right at the top. You can also find the iTunes feed at /itunes, the Google Play feed at /play and the direct RSS feed at /rss on talkpython.fm. This is your host, Michael Kennedy. Thanks so much for listening. I really appreciate it. Now get out there and write some Python code.