Python is one of the world’s most popular computer programming languages. Created in 1991 by Dutch programmer Guido van Rossum, Python is open source but governed by its developers; anyone can fork it, but only core developers are able to approve major updates to the original code. Initially a “benevolent dictator for life,” Rossum formalized processes like Python Enhancement Proposals (PEPs) until, following a particularly contentious PEP in 2018, Rossum decided to resign. To bridge the governance gap, Python's core developers voted on a proposal to implement a steering council with five seats. Rossum joined the steering council for its first term, and Python has continued to operate smoothly through its new community governance.
Python invites its community of contributors to submit proposals, known as Python Enhancement Proposals (PEPs), for major new features and design updates to improve its codebase and other topics such as governance. Rossum had helped implement PEPs and been nicknamed the “benevolent dictator for life” (BDFL). However, after Rossum’s 2018 PEP 572 became unexpectedly divisive, he decided to step down. While this decision was not just due to recent conflicts – he’d been BDFL for nearly 30 years, and, as he wrote to one mailing list, was “not getting any younger” – it represented an opportunity for the community to bring a new form of governance to life.
After Rossum communicated his intent to resign, the core developer community considered its options for new governance. Fortunately, they were able to build on existing capacities developed under Rossum’s leadership, including the PEP process, the existence of a core team with various documented rules the community followed and enforced, the existence of the Python Software Foundation (PSF), and community familiarity with various voting methods including those for electing the PSF board of directors. However, there were no written bylaws; the BDFL was a one-man government, after all. At an in-person retreat, core developers came up with an approach for choosing a new governance model, and for choosing an electoral process for how to vote on that new model. They opted to have core developers submit governance proposals as PEPs, and used [the Condorect method](https://en.wikipedia.org/wiki/Condorcet_method#:~:text=A Condorcet method (English%3A %2F,there is such a candidate.) to put those PEPs in head-to-head competition with each other. In an election facilitated by the Python Software Foundation, the proposal for a steering council, PEP 8016, won.
After PEP 8016 succeeded, 69 out 96 eligible voters elected Python’s first steering council. They also decided to elect a new council following each Python feature release. Rossum won a seat on the steering council for its first term, which enabled a more gradual transition. Importantly, Python has continued to operate and perform effectively over this period. The Python community regularly releases new versions of Python, welcomes new members to the core team, and remains one of the most popular programming languages in the world. They also continue debating and accepting PEPs, with no conversations getting as heated as the ones around PEP 572 – perhaps due to the increased capacity of a five-person team to attend to conflict resolution. The Python community hopes to keep growing and diversifying, and to continue making a language that people love to use.