LJ Archive

At the Forge: Python and Its Community Enter a New Phase

On Python's BDFL Guido van Rossum, his dedication to the Python community, PEP 572 and hope for a healthy outcome for the language, open source and the computing world in general. By Reuven M. Lerner

Python is an amazing programming language, there's no doubt about it. From humble beginnings in 1991, it's now just about everywhere. Whether you're doing web development, system administration, test automation, devops or data science, odds are good that Python is playing a role in your work.

Even if you're not using Python directly, odds are good that it is being used behind the scenes. Using OpenStack? Python plays an integral role in its development and configuration. Using Dropbox on your computer? Then you've got a copy of Python running on your computer. Using Linux? When I purchased Red Hat Linux back in 1995, the configuration was a breeze—thanks to visual tools developed in Python.

And, of course, there are numerous schools and educational programs that are now teaching Python. MIT's intro computer science course switched several years ago from Scheme to Python, and thousands of universities all over the world made a similar switch in its wake. My 15-year-old daughter participates in a program for technology and entrepreneurship—and she's learning Python.

There currently is an almost insatiable demand for Python developers. Indeed, Stack Overflow reported last year that Python is not only the most popular language on its site, but it's also the fastest-growing language. I can attest to this popularity in my own job as a freelance Python trainer. Some of the largest computer companies in the world are now using Python on a regular basis, and their use of the language is growing, not shrinking.

Normally, a technology with this much impact would require a large and active marketing department. But Python is (of course) open-source software, and its success is the result of a large number of contributors—to the core language, to its documentation, to libraries and to the numerous blogs, tutorials, articles and videos available online. I often remind my students that people often think of "open source" as a synonym for "free of charge", but that they should instead think of it as a synonym for "powered by the community"—and there's no doubt that the Python community is strong.

Such a strong community doesn't come from nowhere. And there's no doubt that Guido van Rossum, who created Python and has led its development ever since, has been a supremely effective community organizer and leader.

Programmers often think about code more than people and efficiency more than empathy. We tend to be hot-headed, jumping headlong into debates over obscure technical points. Guido (as he is universally known among Python developers) struck a different tone in his management of Python. From the beginning, he thought about who would use the language and what mistakes they were apt to make—and how the language could best serve such people. He did debate other developers over features, bugs and the language's direction, but he generally did so through respect and reasoned argument, rather than with dismissive, expletive-filled tirades that are so common in the Open Source world.

In this way, Guido managed to build not only a great language, but also a culture of giving, sharing and helping. We shouldn't take this for granted. Although programming can be hard, managing other people and taking their varying perspectives into account is even harder.

Over time, this culture led to many people participating in the Python language and ecosystem. When I was at PyCon in Cleveland this year, it was hard not to be amazed by the large number of people, from all over the world, using Python for a wide variety of tasks. Guido himself didn't even speak at the conference. I hope that he was satisfied to walk around, taking in the awesome sight of thousands of people passionate about the language that he had created.

Perhaps even more impressive to me was the fact that hundreds of people remained for the open-source sprint days following PyCon. Almost all of those people were volunteering their time to improve some part of the Python language they used every day. This dedication, coupled with an interest in contributing and helping others, is a hallmark of open source in general, and of Python in particular.

Today, Python has not only a strong community, but a robust organizational structure as well. The Python Software Foundation manages funds that can help developers to contribute to the language. The core developers are impressively organized, coordinating releases large and small, and providing stability and clarity that easily rivals commercial software houses.

But while Python's bureaucracy and ecosystem have grown over time, one man has still stood at the center of it all: Guido van Rossum, who was dubbed the BDFL, or Benevolent Dictator For Life. Although this means that Guido has (deservedly) received a great deal of praise, it means he was the target of numerous slings and arrows as well.

Perhaps the biggest dispute in the Python world was the transition from version 2 to version 3. Actually, I shouldn't even say "was" here, since many of my clients are still making that change. It's easy to say that this incompatible upgrade was handled poorly. And you can be sure that the Python community has learned its lesson and will never make such a break again. However, the end result—Python 3—is definitely better than Python 2. Should Guido and the core developers have handled it differently? Perhaps, but it's easy to say that in retrospect. The number of blog posts calling Python 3 a colossal mistake must have hurt Guido. But part of being a manager is having the ability to accept, filter and even ignore criticism, and he did it with aplomb.

Decisions regarding changes to Python have long been made via PEPs (Python Enhancement Proposals)—documents in which new ideas are proposed, kicked around, modified and finally approved or rejected. As the BDFL, Guido's input and approval always were needed for a PEP to be considered "approved".

Through the years, I've learned to trust Guido's judgment. There were numerous cases when I would read a PEP, roll my eyes, and think, "Really? Isn't there a better way to do this?" But over time, I would generally say, "Hmm, maybe he was right." Guido was not only a talented developer and manager, but also someone with taste and vision, whose experience allowed him to sense better than many others in the community what was the right direction for the language.

And, then we got PEP 572, for "assignment expressions". Python distinguishes between statements (which perform an action) and expressions (which return values). An "if" statement must contain an expression, and an assignment is a statement, which means that you cannot say:


x = 5
while x = x - 1:
    print(f"x is {x}")

The above, as a statement, would be flagged as an error by Python before it was even executed.

PEP 572 introduced a new syntax, the "assignment expression", which would allow the above to work. That PEP recently was approved by Guido and will be a part of Python 5.8. It'll look like this:


x = 5
while x := x - 1:
    print(f"x is {x}")

It turns out that a huge number of Python developers, including some of the core developers, disliked this. In fact, they disliked this a lot. I must say, I'm still not enamored of it, but I'm applying my usual "defer-to-Guido" thinking here, believing that within a few years, I'll agree that assignment expressions are a good and useful thing to have in Python. After all, I've already changed my tune on str.format, enums and type annotations; perhaps over time, I'll agree with this one as well.

A large number of Python developers decided not to hold off on their judgment and attacked PEP 572 as completely out of line, or even "un-Pythonic", a strong phrase to be leveled at the guy who has dictated Python's development and direction for nearly three decades.

These accusations have taken their toll. July 12, 2018, Guido sent a message to the python-committers e-mail list, saying that he's taking a "permanent vacation from being BDFL". He further says, "You will all be on your own."

On the one hand, it's terribly sad that the discussion over PEP 572 become so heated, so uncharacteristically un-Pythonic in its nature, that Guido (of all people!) found himself overwhelmed and unhappy. His vision and input will be missed, although he does point out that he'll continue to be a core contributor. And you can be sure that he'll have a lot to say, and that we would be wise to listen to it.

But on the other hand, perhaps we should see this as something of an opportunity for the Python community to mature. Guido has been running a several-thousand-person, worldwide development effort for several decades, in which most of his developers are volunteers. That's no small feat, and he deserves a chance to reset, or even to retire. I mean, how long can you expect someone to do this kind of work?

Moreover, the Python community can and should evolve beyond the BDFL style of leadership. Guido himself is curious to see what's going to happen, as he writes: "So what are you all going to do? Create a democracy? Anarchy? A dictatorship? A federation?"

The fact is that while benevolent dictatorships are (by definition) good, they aren't sustainable. And thus, the Python community will now not have to grow, so much as evolve—becoming an institution that can outlive any one of its individual contributors, while continuing to have a massive impact on the world.

Guido is, in my mind, an inspiring developer, leader and manager. What he created has affected countless people around the world. I hope and expect that the future of the Python community will reflect the strength and wisdom of its founder, and that it'll continue to have the same impact as it enters this new phase. This transition period will likely be somewhat messy, but it'll also be healthy—and the end result will be good for Python, good for open source, good for developers, and good for everyone who uses computers.

About the Author

Reuven Lerner teaches Python, data science and Git to companies around the world. His free, weekly "better developers" email list reaches thousands of developers each week; subscribe here. Reuven lives with his wife and children in Modi'in, Israel.

Reuven M. Lerner
LJ Archive