The Politics of Python Programming
When you used a digital product or you might not have thought about the programming language that was running. In the machine you interact with and through its hardware runs a software – a set of instructions, data or programs used to operate computers and execute specific tasks. Does the structure of this software matter? If you believe so and want to understand more you can approach each language with a critical eye. It is worth considering critical algorithm studies — broadly speaking, the application of humanistic and social scientific approaches to algorithms. Python programming is said to be open-source, yet what does this mean in practice and what politics come into play within one of the largest and most quickly growing programming languages in the world. We will get to this point later, but first how popular is Python as of September 2019.
What is programming?
Programming is the process of creating a set of instructions that tell a computer how to perform a task.
One of the most popular programming languages in the world
A repeatedly mentioned index for ranking programming languages by the community in programming is TIOBE. The TIOBE programming community index is a measure of popularity of programming languages, created and maintained by the TIOBE Company based in Eindhoven, the Netherlands. TIOBE stands for The Importance of Being Earnest, the title of a comedy play by Oscar Wilde that was first performed in 1895. The TIOBE index is of course not a complete overview as it tracks the 25 largest search engines queries related to searches for ‘… programming’ depending on the language. However it does give an indication of popularity and Python has certainly been growing.
It is certainly not like open-source programming languages such as Python is exempt from any type of governance. Yes, Python is completely free and open source however it comes with ties to different industries and people. Guido Van Rossum who invented the language was jokingly called benevolent dictator for life (BDFL). It is a title given to a small number of open-source leaders, typically project founders who retain the final say in disputes or arguments within the community. It is important to note this title is meant to be somewhat ironic, however this so-called dictatorship was maintained until 2018.
In fact there were seven proposals for governance with two policy documents issued by the Python community summarising this. PEP 8000 — Python Language Governance Proposal was one and PEP 8001 — Python Governance Voting Process was the other. As such both governance in a wider perspective and democracy within the structure of an international programming language was to be decided. In December 2018 a voting process for those eligible to vote was held.
The proposals ranged from various forms of community governance to appointing a single individual as the Technical Leader — in effect a new Benevolent Dictator but now with the acronym GUIDO standing for “Gracious Umpire Influencing Decisions Officer” and serving for three Python releases, approximately 4.5 years. In the end PEP 8016 — The Steering Council Model won proposing that a council of five individuals should be named.
A Question of Power
It was decided that the Steering Council would be made up of five individuals and will serve for a single feature release. For the next release it was decided that a new council would be elected. To avoid conflict of interest only two members of the council can work for a single employer. Early this year PEP 8100 — January 2019 steering council election was presented. It seems in the voting process 17 members were presented. Yet it was only 96 eligible voters and of those 69 cast ballots. Therefore we could say that it is only a narrow elite of a global Python community numbering in the millions who were able to participate in this electoral process. Many will not likely know or be interested that a change in leadership took place.
The steering committee was elected and the members are as follows:
- Barry Warsaw. Nominated by himself, he is a Senior Staff Engineer for LinkedIn (which is owned by Microsoft).
- Brett Cannon. Nominated by himself, he works at Microsoft on the Python extension for VS Code.
- Carol Willing. Nominated by herself, she is self-employed using Python and Jupyter for research projects and education.
- Guido van Rossum. Nominated by himself, he works for Dropbox.
- Nick Coghlan. Nominated by himself, he works as a software architect for a hardware company (Tritium) that makes electric vehicle DC fastchargers.
What type of powers do they wield? This is described in another PEP 13 — Python Language Governance which was developed from PEP 8016 which in turn was based on Django governance document written by Aymeric Augustin. In the section of PEP 13 simply called ‘Powers’ it is described that: “the council has broad authority to make decisions about the project. For example, they can:
- Accept or reject PEPs
- Enforce or update the project’s code of conduct
- Work with the PSF to manage any project assets
- Delegate parts of their authority to other subcommittees or processes”
They cannot however modify PEP 13 or affect the membership of the core team, except via mechanism specified in the PEP 13: (1) Council members may resign their position at any time; (2) whenever there is a vacancy during the regular council term, the council may vote to appoint a replacement to serve out the rest of the term; (3) If a council member drops out of touch and cannot be contacted for a month or longer, then the rest of the council may vote to replace them; (4) conflict of interest, if more than two council members work for the same employer, then one or more council members must resign; (5) in exceptional circumstances a majority can remove a council member 3:2 or 4:1; (6) a vote of no confidence for either a single member or the entire council.
“The council should look for ways to use these powers as little as possible. Instead of voting, it’s better to seek consensus. Instead of ruling on individual PEPs, it’s better to define a standard process for PEP decision making (for example, by accepting one of the other 801x series of PEPs). It’s better to establish a Code of Conduct committee than to rule on individual cases. And so on.”
To use its powers, the council votes. Every member of the council must vote or explicitly abstain. Members with conflicts of interest on a particular vote must abstain. Passing requires a strict majority of non-abstaining council members. Whenever possible, the council’s deliberations and votes shall be held in public. The council is elected after each feature release. There are no term limits.
Since Python as a programming language is used in a wide variety of applications and its structure contributes to shaping the decision-making in a wide variety of issues let us hope that this new council governs well. Seeing the seriousness and practice of governance in Python unfold may be surprising to some, me included. It certainly lends itself to the question of politics and governance in programming languages — perhaps a question for political scientists and computer scientists to work on in tandem going forward?
This is day 107 of #500daysofAI. My current focus for day 101–200 is mostly on Python programming. If you enjoy this article please give me a response as I do want to improve my writing or discover new research, companies and projects.