Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 87, recorded July 17th, 2018.
I'm Michael Kennedy.
And I'm Brian Ochten.
And Brian, we've got a really special episode for some big news here.
Yes, and we've got some great guests helping us with this.
We do. We have Carol Willing and Brett Cannon both joining us to get somewhat of an inside perspective
on this big, somewhat sad announcement.
And we're going to dig into that.
Hello, Carol. Welcome to the show.
Hi, how are you doing?
Great. Thanks for being here. Hi, Brett.
Hello, everyone. Thanks for having me.
Yeah, absolutely. It's great you're here.
So before we get into this, I want to just quickly thank Datadog for sponsoring the show
and tell you guys quickly about them before we dig into the stuff because there's not a real break.
So let me just say thank you to Datadog.
If you have infrastructure that you want monitored, if you have multi-tier or multi-server applications,
you can plug in Datadog and get distributed tracing, logging, error handling, everything all in one place.
14-day free trial and sign up at pythonbytes.fm.datadog.
You'll get a cool Datadog t-shirt.
So thank you for them for sponsoring this episode.
Brian, you want to tell us what the big news is?
I think I'm just about as clueless as everybody else. I'm just in shock. Last week, we heard an
announcement that Guido was stepping down as the BDFL.
Yeah, that is a big deal. So there's been a little bit of debate about exactly what he meant when he
said this. Was it he's just taking a break? Is he actually stepping down? So let me just read the
salient parts of the announcement. So this was an email sent to the Python mailing list,
Python dev mailing list. And the title was Transfer of Power. And here's Guido's words,
bits and pieces taken from his email. Now that PEP 572 is done, I don't ever want to have to fight so
hard for a PEP and find that so many people despise my decisions. I'd like to remove myself entirely from
the decision process. I'll still be here for a while as an ordinary core dev, and I'll still be available
to mentor people, possibly more available. But I'm basically giving myself a permanent vacation
from being BDFL. And you all will be on your own. I'm not going to appoint a successor.
The decision he says, basically summarizing that the day to day stuff is going to be fine. But the
decisions that matter that may be affected are how peps are decided and how new core devs are
inducted. And then finally, sort of on the parting thought said, I'll still be here. But I'm trying to
let you all figure something out for yourselves. I'm tired and need a very long break. So that was the
announcement. And that's the big news. And that's what we're going to talk about today. And first,
I just want to say thank you to Guido for doing so much for so long, creating one of the most popular
programming languages in history.
I've publicly said this, like, I'm personally forever indebted to Guido and the team, because
they basically taught me how to program for real. Like, I have an official education in all this,
but I have always stated that how to actually develop in the real world is entirely down to
Guido and the team.
Yeah, that's awesome.
And I think, you know, Guido has done so much, not just for the language, but also for the community
as well. And I know, I appreciate from the earliest days when he was designing Python,
how he made it accessible for learners, and for people to actually use the language. And,
you know, when I'm teaching people, whether it's with Jupyter, or high school students, like I'm teaching
this week, it's just a pleasure to do it in Python. And personally, I have a lot to thank
him for, but even more so for the greater group of people as well.
Yeah, I don't know if he specifically set out to set the tone, as he did, or if it was, it's just
Guido being Guido. But I think he definitely deserves a lot of credit for setting the tone
that this community has ended up with, as being inclusive and welcoming. And just the basically
what makes this community as amazing as it is.
Yeah, it's not just technical. I think one of the special things about Python, unlike many
languages is they're sort of professional programming languages that can build high and stuff.
And there's learning languages that are super basic, but you got to stop to go build real
apps with something else later. And this is one of the few languages that you can start simple
and finish big with. And so that is really, I think, part of its magic. But also, you know,
you go to PyCon and these other conferences, and you look around and the people around you
look like more like general society and less like a bunch of white guys. You know what I mean?
And to me, that is a really special thing. It really is. It's not as far as it should be,
but it is on the path of where it's on a good path. It's unlike other communities that I've been
involved in. So I think that's also really important.
Well, and I think Kim as a person, I think he has, his personality has so much to do with it.
You mentioned PyCon. And one of the things that Guido did at PyCon was, I had asked him if he would
meet a young man called Joshua Lowe, who does EduBlocks, which is this really cool user interface
that lets you go from scratch to Python code. And we were talking about how Joshua had made it over
dinner. And then the next day, Guido probably spent an hour just hacking with him and made this young
man's PyCon experience more amazing than it was just the day before.
That's really awesome. Yeah. And Brian, you got to have lunch with him at the last PyCon, right?
That was really fun. They did a drawing of people that donated to the Python Software Foundation.
They drew a handful of names and I think there were like six or seven of us have lunch with him.
And one of the things that was really interesting at that lunch was we were in around the table and
talked about what everybody does and what their contribution or not to Python was. And it talked
about some of the things I was doing. I mentioned I have a full-time job, but I also work on trying
to teach testing and pytest and other development processes to people. And he looked at me and said,
so you have got a full-time day job. How do you have enough energy to deal with all the negative
feedback you get from contributing to Python? And I haven't really got that negative feedback. And
that's what I was a, I guess that was a bizarre, I thought of it as a bizarre question, but now in
context, it makes a lot of sense. He was at the center of the pressure points, right? That's tough. So let's,
let's maybe talk about what some of the root causes for this. Like he specifically calls out
Pep 572 in his letter that he sent out, but I feel like there must be more to that. Like,
like Pep 572 was the straw, not everything, but Carol and Brett, you guys are more on the inside.
You probably have more exposure to this. What do you think?
Honestly, it was the last straw about, I don't know what Carol thinks, but I personally figured
Guido was probably going to retire in the next, I don't know, two, maybe three years just because
he's joked so long about retirement. And I think he was just getting ready to just not do it. And he's
been working on making the projects self-sustaining for quite some time. But admittedly, from my perspective,
Pep 572 got really nasty. It was so much negativity that I think he just got fed up and said like,
look, I've been doing this for 28 years. I've been putting up with general negativity as well.
And this groundswell was just too much to bear and just like, forget it. I don't want to put up with
this anymore. I'm gonna, as he said, he's going to retire. He's still the BDFL. That for life bit is
true. But he's basically said, my last dictatorial declaration is I am not going to make any more
dictatorial declarations ever again. Have fun. Yeah.
Yeah. But no, it got extremely negative. Like when Guido announced the acceptance of the Pep,
the very first tweet at him was too bad. It's a waste of time. And that was just a very common
occurrence of just nothing but negativity. There wasn't constructive feedback or anything. And it
dragged on forever. There were some missteps in terms of how it was communicated in terms of a technical
aspect of how it was communicated through the list, like reposting the Pep. But people just really just
piled it on and it was just unnecessary. It was just not constructive. And that's as Brian pointed
out. That's why he asked that question. How do you handle the negativity? Because there can be a lot
of negativity anytime you touch this language. People love it for a reason. And if there's any hints of
you changing something that they don't like, some people really overreact. And if you saw my keynote
Python US, it was entirely on this topic because it can get so overwhelming sometimes when people just
jump on you and expect on a part of you so widely as Python, there's not a small number of people who
feel the need to share their opinion. And unfortunately, share it in a unconstructive way.
And I think it just finally made him just go, yeah, you know what, I don't need to ever put up with
this ever again. Forget it. And just said, I'm retiring.
One thought that I had when we were getting ready for this show was, you know, it's kind of related to
what Brian said as well. Like, you know, has a full time hectic job at Dropbox, right? He's already
fully committed to working on stuff. And then he's trying to bear the, you know, significant portion
of the weight of people not wanting changes or demanding changes to Python in various ways. And,
you know, do you, Carol, think it would have been different if the PSF had made a space
to sort of employ, you know, to be in that role and not make it, you know, there's the stress of the
experience and there's the stress of these are my final two hours of the day and I'm already exhausted.
Now I'm getting this. You know what I mean?
I can't speak for Guido, but I mean, I don't know that that would have solved it. I mean,
I think he has been doing what he wants to be doing. And I think if he had said, hey, I want to do this,
people would be, you know, very happy to accommodate him. I think largely what Brett had said, you know,
we were talking in the office here at Jupyter the other day and we were saying, we can't believe how long
he has shepherded the language and dealt with, you know, people's comments and fostered, you know,
the direction of the language. And in many ways, any maintainer will feel over time, some burnout when
there's negativity around a project. And I think it's unfortunate that people choose to make things
personal when they don't need to be personal, that they view things with black and white as opposed to
wanting to compromise over something. And I remember when I was facing some burnout and he was one of the
people that said to me, well, do the things that you really enjoy electronics and teaching and is really
helpful advice. So I think maybe he's taking some of his own advice.
Yeah. It has been a really long time that he's been working on this. I've never worked on a single
project for 30 years, right? I've not been programming for 30 years, honestly, but it just
seems like, you know, it's pretty natural for him to step down. One thing I really wish, and I, Brian,
I think we spoke about this last time. I wish he would have just sort of gone into a more,
just, I'm kind of stepping back for a while and hung in there until after 2020 and Python 3 becomes
the one and only Python. And sort of that could have been like a celebratory stepping down rather
than a, I'm frustrated and I'm giving you guys the reins. I would have liked to see him retire in some
sort of celebration, mission accomplished type of experience, you know?
It would have been nice, but the problem is, is there's still the chance of another,
I don't think uprising is quite the right word, but an explosion in negativity between now and then.
And while I would like to assume the community has switched over to three and every number I've seen
has said that, I also don't know if the people who are holding onto Python 2 are going to react
reasonably come January 1st, 2020 as well. So I could also see him going like, you know what,
I don't want to risk having to put myself through that after what he's just gone through.
Yeah, that's possible.
I totally get the perspective of, it would have been an amazing party January 1st or at PyCon in 2020
going like, yeah, we've moved on to Python 3. Guido's getting the well-deserved determining wants
and it would have been an amazing party. But instead, we're just going to have just the amazing party
for Python 3. And I'm personally fine with that.
We can invite Guido. I'm sure he'll be there.
I don't think that that, I mean, he's still the president of the PSF. So he obviously is still
going to be involved. And, you know, it's up to us as the community, much like the SciPy community
did last week. They did a really nice thank you, Guido. Like they got everybody from the conference
together and gave them a very thoughtful thank you, which I've never seen them do for anything
before. So it was really cool. And I think he has touched so many people in so many different ways
that that celebration will come. I think looking at it, I don't know that there's ever an easy way
to change how you make decisions and governance when you have many personalities involved.
And it's unfortunate how it came out. But I think there had to be something that would give us
a catalyst in the developer community to really take some of these issues on that are not necessarily
new issues to us. He's been asking us to do it for quite a while. And we just haven't either had the
bandwidth or the sort of kick in the pants to actually go and do it.
So we're all kind of like the 29 year old kids still living at home and Guido's like, get out,
go live on your own, take care of yourself.
A little bit. Yeah.
All right. So you spoke about governance and decision making and stuff. Like, what do you think
is going to replace Guido being the final decider?
It's actually still being actively discussed. As the email Guido sent said, he's basically
leaving it up to us. He did not dictate how we were going to govern ourselves afterwards.
So he has left it up to us. He actually didn't even dictate how we would even choose how we would
choose to govern ourselves. So there's not even a specific choice yet of how we would potentially
vote for this. Like some people have said PSF fellows, some have said core devs. So there's,
it's a completely open-ended question. Honestly, the current thinking seems to be around and Carol can
obviously correct me if my feeling doesn't jive with hers at all, either potentially another BDFL
or a somehow council of elders or some such. It seems to be the key thing is, is trying to figure out
how we want to steward the design of the language. We've been managing ourselves daily for quite some
time. Guido's not directly involved with releases, so that's not even an issue. It's really comes down
to how do we have someone make the final decision on peps? Who says yay or nay? Who makes the technical
decisions? Who chooses the paint color for the bike shed? That kind of thing. That's the really key
thing we have to still make a decision on. Yeah. And I think Brett kind of put it, you know, I think the
emails that I've at least seen on Python committers have been very respectful and, you know, really trying to,
seek out what is going to happen from here. And I think Guido's email mentioned four things, day-to-day
decisions on the issue tracker and GitHub, how peps are decided, which to me is sort of like the direction
of the language and who stewards that, how new core devs are inducted, and the code of conduct.
And if I look at all four of those, the day-to-day decisions, as Brett had said, you know, releases and
things like that, we're in a good spot. And we should probably just be doing what we have been doing.
How new core devs are inducted. I think that will fall out of whatever decision-making we have for the
language. I know that we've made some progress over the past couple of years, and I continue
to see that we will make progress. And the code of conduct, I think we're all recognizing that
being professional and civil to each other and talking about issues as opposed to whether somebody's
intelligence calls, it's called into question or whatever, is not the right way to do it. It's
better to be professional. And, you know, how peps are decided, it seems as if, much like Brett had
mentioned, that we're sort of converging on maybe three individuals as like a triumvirate or one,
and no more than five, is sort of how I've read it.
Okay. That makes a lot of sense. It seems to me, whatever the decision is, it should be odd, not even.
Actually, that came up already. And Tim Peters, for those of you who've been in language for a long
time, might recognize the name, who's gotten active again, partially thanks to PEP 572. So,
at least there's one very nice perk from my perspective from what happened with PEP 572,
pointed out that the odd number in voting typically is very important when you have an either A or B
decision, and you have to choose one or the other. But if you have a status quo or a change,
so more of a yes-no decision, having the tie go to the status quo is not quite so critical.
So, we could theoretically go with a four and really not have too much of an impactful problem
in that regard.
Yeah. I guess it would lead to stronger debates. You've got to bring someone over to your side if
it's a split decision. And if they fail to decide, then it just stays the way it is. Right? Nothing
new is adopted, I guess.
Yeah, exactly. So, there is a possibility of actually going with four, for instance.
Interesting.
I don't think anyone suggested two. It seems to be pretty much one, three,
four, five seems to be the running numbers right now.
Right.
Yeah. Interesting. Okay. Yeah, that makes a lot of sense. So, I guess the final thing that we should spend
some time on is, is this a problem for the community? Is this going to hurt Python's fantastic momentum?
Is this going to hurt the growth or evolution or sustaining Python? Or do you think it's just a little bit of change on how decisions are made and not such a big deal?
Do you want me to take that first, Brett?
Yeah. Yeah, go ahead.
You go first, Carol.
So, I think the language will continue to thrive and will continue to grow. Will some things be different? Yes. But Guido's made it very clear. He's still going to be accessible on mailing lists. He's still the president of the PSF. The PSF is largely, with the community support, doing many of the outreach things and things to grow the community.
And then the core development side of things, I think what you've seen is sort of a shift in some ways away from strictly the language to also, you know, Python has a very rich ecosystem of libraries.
So, things like Jupyter and SciPy and NumPy wouldn't have come about if Python, the core language, hadn't been so wonderful to work with. And so, yes, there was going to be work to do to figure out how to continue the design of the language. But I have every belief and commitment that that will happen.
I agree. I think the way I don't think this is going to change the momentum for the language. I don't think, honestly, anyone should really be worried at all. There might be a slowdown in terms of new features for Python 3.8, which I know some people actually like the idea of.
Basically, I view it no more as a temporary pause in language defining changes. And honestly, we've had a language moratorium before back for Python 3.3, I believe, which I should know since I helped write the PEP for that.
So, if anything, you can view it as basically just a moratorium on language changes for a little while until we decide how we want to govern those kinds of changes. And then it'll just more or less go back to where it was.
Now, the pace might be slower than it was if, for instance, we go with a counsel versus another benevolent dictator who could potentially come to decisions faster and just do other things.
I guess potentially more nimbly in my personal view. But I really don't see this really affecting the language long term or even medium term or basically short term defending on your definition of short.
Yeah, for some definition of short, yeah.
I suspect we'll have this all worked out in the next few months. I'd be really surprised if we don't have a solid plan of what our options are by the end of the year and if not already decided by then.
Now, I've got hopefully a quick question. I guess I don't know how, when there's discussions on peps, who can participate in those discussions? Is it just core developers?
I have to caveat this with this was the way it used to be. We'll see if this continues.
But to answer that question, Brian, basically, the way we suggest people do peps is they come with an idea to Python ideas, the mailing list, and they propose it. And usually pretty quickly, people either go, that's been proposed before.
No, that's not doesn't seem very Pythonic. Or there's that seems like a possibly good idea. And Guido did occasion come in and say, yes, there's a possibility for this or shuts would shut an idea down quickly. So people didn't waste their time.
And then usually they have a discussion, work out some rough details. And then usually the proposer goes away and comes back with a rough PEP saying, all right, here's a more formal proposal. And then more discussion on Python ideas to help that author refine it.
And then what they would do is they would then bring that to Python dev and then with more or less a finalized pep. And then any final salient details would be worked out. And then either Guido would name what we called a BDFL delegate, who would be someone he delegated the final decision to in terms of technical details, and also whether the PEP would be accepted.
Or he would keep the BDFL vote himself and he would eventually make the call.
One change that has been floated, though, is to take a PEP from Python ideas to Python dev, you might start needing more of a co-sponsor from a core developer to help make sure that the idea seems solid enough to bring forward and also to make sure the PEP is in a good position.
Because one of the problems with PEP 572 was, while the idea was there, the PEP wasn't fully, fully fleshed out to the level that we typically have peps from Python ideas on dev as.
And so there was a lot of repetitious discussion of things that should have been recorded initially in the PEP to have tamped down on the repeated discussion.
Because the discussion on Python ideas actually was a bit more reasonable than it was on Python dev and less reactionary, funny enough.
So that's generally the process is idea to Python ideas, then a rough pep, and then refine it.
And then once it's fairly refined, goes to Python dev, final discussion, and then either Guido or a named BDFL delegate made a decision.
And the PEP either got accepted or rejected.
And that's basically the way it was.
Is there a point in that process where the rest of the community can, I guess, add to the opinion?
So yes, Python ideas is a completely open mailing list.
Python dev is also a completely open mailing list.
So none of these discussions are happening behind closed doors at all.
The only mailing list, honestly, that is in any way closed in any of this process is Python committers.
And that has more technical details that only affect Python core developers themselves and not peps.
So none of these discussions happen in such a fashion that outsiders, outsiders is a bad term.
People who happen not to be core developers are always able to bring forward their opinion.
The part of the trick, though, is not having people suddenly pop in and leave their opinion without checking what other people have said or come in and not understanding how to be professional about leaving their opinion.
So there's always a balancing act of trying to ask too widely of people who don't quite understand the norms of how to communicate well, honestly.
But none of the conversation is closed off such that people can't participate.
So for instance, Brian, if we had a testing oriented one, you're totally happy to come in and participate, whether it's at the nebulous stage and Python ideas or drafting up that PEP or on Python dev where it's very much more finalized, like very honing into the technical details of how this would work.
And really thinking through the ramifications and really focus, focus discussion before our final decisions made.
But as I said, this is how it was.
I don't know how we're going to tweak it.
Yeah, that makes a lot of sense.
Yeah, and it should more or less be the same going forward.
It just might, we might start being a bit stricter about when peps move from Python ideas to Python dev to try to make sure the discussion doesn't get rehashed.
And as Carol pointed out, this is kind of brought forward some code of conduct issues that will probably, I know I'm personally working towards refining and have been since PyCon to help try to push even harder to keep the discussion civil.
Right. And I think in addition to just the civility of the discussions, one of the things that I want to look at is, can we use some of the great stuff that we have in natural language processing and pull out like the most meaningful content when it comes to comments?
And, you know, part of the issue with 572, there were so many comments that you have to kind of read them all if you wanted like the full spectrum.
And not all of us have time to do that.
And so, you know, a way to condense or shorten the period of comments or something.
And that's as much a social issue and in some ways a conduct issue as it is a technical issue.
Yeah, that'd be something like in my own community, for instance, in like physical communities, everybody is welcome to attend the open city council meetings, but hardly anybody does.
However, when there's a change that affects everybody, that's usually posted somewhere.
And then there's like a period of open for community comment or something.
I'm not saying we need to do that with Python, but I agree with this somewhat, maybe a curated or refereed or some cliff notes version of the discussion up till now before somebody can jump in.
Yeah.
And that's definitely something that's been talked about.
All that puts work on the Python community itself also to do that.
That's work as well.
Yeah.
And actually, historically, the PEP was supposed to capture all of these details, like the rejected idea and open discussion, open idea section of every PEP was meant to act as a running summary of the discussion to help prevent that.
But for instance, in the case of PEP 572, it was a bit overwhelming on the volume, and it can be hard to do that.
So as Carol mentioned, there's discussion going on now about how we can potentially help alleviate that load on the PEP author while making sure that that kind of thing is taken care of.
Yeah, it sounds like there's some community stuff to do as well.
But I have faith that you guys will figure something out in terms of the voting and the decision making.
And I guess I want to sort of echo Carol's thought when I ask about the momentum.
So much of Python's momentum is with the ecosystem and the extra libraries and PyPI and all of these things.
And honestly, if the language didn't change one bit for five years, I still think there would be massive momentum in the community.
So I don't see a real danger here.
Not at all.
And honestly, I think the momentum's due to the community.
And Guido has helped shepherd it forward and bring it to where it is.
But I think at this point, the language and the community built around it is honestly bigger than Guido at this point.
So while we'll all miss Guido immensely and his contribution is very important, I don't think the community should worry because the community itself is going to be what carries this forward.
Yeah.
And I think a lot of the core developers, as well as community members, are going to ask themselves, hopefully before they post messages and things like, what would Guido have said?
What would Guido think?
You know, put yourself, write your email messages like you're the BDFL and have to convince people.
I think there are some people that are very articulate and have great ideas and add a lot to improving it.
You know, I think the PEP didn't get improved from beginning to end.
But it's taxing when you have to slog through the negativity.
And I think what Brett is saying, like, hey, let's up our game so that the people who are doing the bulk of the work aren't getting negativity thrown at them when there should be collaboration.
And, hey, this is for the greater good of the language.
It's you don't have to use it or trust.
I think trust is a big part of it.
Trust that the people who are making the decisions are being good stewards for the language.
And I think that the discussion that I've seen so far, I think most people are doing that and will continue to do that.
Yeah, I think that was already mostly there.
It's just it is sad that this put the final straw on Guido.
But thanks to him for everything that he has done.
I think this may be a good place to leave it.
Brett, Carol, you guys want to have some final parting thoughts on this whole idea?
Anything else you want to add before we call it a show?
Not really.
I think we've pretty much, as we said, no need to panic.
Keep on coding.
I think we're going to move past this with no real issue.
Obviously, thanks to Guido, as we've all said.
And hopefully, while it's sad that Guido is retiring, hopefully we can learn some lessons from why it came about when it did and be better for it coming out the other end.
Yeah, absolutely.
Carol?
I agree with what Brett said.
And I also think the surprise may still come.
Guido is not going away.
He may be more focusing on things that rock his world that he sort of put on hold while he shepherded the design and decision making of the language.
And I think there's still some Guido surprises yet to come.
And I look forward to that.
And I just thank him for being an amazing person as well as a great language developer.
Yeah, I totally agree with that.
He actually has not disappeared.
He actually just replied to some emails yesterday and today about PEP 44, which is type hints.
So he's still actively engaged.
So he definitely has not disappeared off the mat.
Yeah.
Nice.
Well, if I could throw some ideas out there.
Python WebAssembly browser.
I'm just going to leave that there if he wants to, you know, try something new.
Brian, anything else?
Yeah, I just want to just the obvious heads up of if you've got a negative reaction about something or some feeling of entitlement, you sleep on it.
You know, don't hit the keyboard right away.
Try to talk to people online as if you were talking to them in person.
And again, if you haven't watched the Brett's talk from 2018, Picon, go watch it because it was an eye opener for me.
How similar was that to your PyCascades one, Brett?
Pretty much the same.
It was my PyCascades talk became my PyCon US keynote talk.
Yeah.
So definitely people should watch that.
I think it sets the right tone for things.
I'll put that in the show notes.
Awesome.
All right.
Thank you all for being here.
It's really, I think it's important to spend some time talking about this and just sort of getting that inside information out for everyone in the community.
And I think we're going to be fine.
So let's carry on, huh?
That sounds good.
All right.
Bye, everyone.
Bye.
Thank you for listening to Python Bytes.
Follow the show on Twitter via at Python Bytes.
That's Python Bytes as in B-Y-T-E-S.
And get the full show notes at pythonbytes.fm.
If you have a news item you want featured, just visit pythonbytes.fm and send it our way.
We're always on the lookout for sharing something cool.
On behalf of myself and Brian Okken, this is Michael Kennedy.
Thank you for listening and sharing this podcast with your friends and colleagues.