|
|
Subscribe / Log in / New account

Python elects a steering council

This article brought to you by LWN subscribers

Subscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the next set of articles possible.

By Jake Edge
February 4, 2019

After a two-week voting period, which followed a two-week nomination window, Python now has its governance back in place—with a familiar name in the mix. As specified in PEP 13 ("Python Language Governance"), five nominees were elected to the steering council, which will govern the language moving forward. It may come as a surprise to some that Guido van Rossum, whose resignation as benevolent dictator for life (BDFL) led to the need for a new governance model and, ultimately, to the vote for a council, was one of the 17 candidates. It is perhaps much less surprising that he was elected to share the duties he once wielded solo.

The other members of the steering council are Barry Warsaw, Brett Cannon, Carol Willing, and Nick Coghlan. Other candidates and their nomination statements are available as part of PEP 8100 ("January 2019 steering council election"). Warsaw, Cannon, and Coghlan are likely recognizable names to those who follow Python development (as is, of course, Van Rossum). Willing is perhaps less-known in the Python world, even though she is a core developer, has been a member of the Python Software Foundation (PSF) board of directors, and is a core developer and steering council member for the Jupyter project.

The number of candidates for the Python steering council was rather large, especially when compared with either the eligible voter pool (96) or the number who actually cast ballots (69). Voting was restricted to active core developers, though nominees could come from outside of that set. Some concerns were expressed about allowing external nominees, but the PEP did explicitly allow core developers to nominate "outsiders". Three of the nominees were not on the list of eligible voters: David Mertz, Peter Wang, and Travis Oliphant. However, Oliphant is a former core developer as can be seen in his nomination thread. The rest of the candidates are a mix of both older and newer core developers with interests ranging throughout the Python ecosystem.

Ultimately, voters decided not to elect any of the outsiders. Part of the reason for that might have been the voting method itself, which allowed each core developer to vote for zero to five of the candidates. That is rather different than true "approval voting" where voters can choose any number of the candidates. As a thread in the Committers Discourse discussion group showed, though, that was something of an oversight. The Django election process document that was used as a starting point for the PEP that was eventually adopted (PEP 8016, "The Steering Council Model") used that scheme and no one brought up the "vote for zero to five" mechanism until after the PEP became "law". As Nathaniel J. Smith, who was a co-author of the PEP, put it:

Anyway, I'm not particularly defending the at-most-N variant, just explaining how we ended up with it. It was in the Django text we started with, it didn't jump out at us as something that needed changing, it didn't jump out at anyone who read the proposal as something that needed changing, and here we are. It's too bad no-one noticed this back during the review period when it was easy to change, so I guess we're stuck with it for this election, but if people want to revise it for the next one then I won't stand in your way :-).

It might make sense to collect up several small "amendments" like this to handle all together, a few months from now once things have settled down. I know Łukasz [Langa] would like to tweak the council term to decouple it from the release cycle, and probably we'll run into a few other nits as we start using the new system for real.

One of the concerns that came up in the thread was that a restricted number of votes could lead to a landslide victory for the best-known candidates. In the Discourse thread, Tim Peters linked to a description of "bloc voting"—what is being used for the council election—which described the problem this way:

The bloc voting system has a number of features which can make it unrepresentative of the voters' intentions. It regularly produces complete landslide majorities for the group of candidates with the highest level of support, though this does tend to lead to greater agreement among those elected.

Coghlan thought that pure approval voting might lead to the "old guard" getting elected, though Peters's intuition led him to the opposite conclusion. So far, the full number of votes for each candidate have not been released (though it is being worked on), but voters can see those totals. In a post to the python-committers mailing list, Peters used that information to show that the landslide did seem to happen:

[...] As predicted by a brief article I linked to on Discourse, limiting the number of approvals to 5 favored a landslide victory of the best-known candidates. Except for Nick, the weakest "winner" got 50% more approvals than the strongest "loser". So "landslide" for 4.

In pure Approval voting (which we've used for PSF Board elections), there is no limit, and then you get a clear picture of approval levels. The "losers" here should realize their relatively low approval levels _may_ be an artifact of the voting process. Like in "first past the post" plurality elections, with a limit there's pressure for voters to betray their actual favorite(s) if they _think_ they can't win, to avoid "wasting their vote". Without a limit, there's never a reason (regardless of whether a voter is 100% honest or 100% tactical) not to approve of your true favorites.

While it is possible that the outcome did not exactly reflect the "will of the voters", it seems likely that it will serve the project just fine for the first incarnation of the council. Tweaks to the voting method and possibly other issues with the governance model may come about over the next year or so. The current council will serve until the release of Python 3.8, which is currently scheduled for October. After that, the electorate will get another chance to choose council members.

In the meantime, though, the PEP-decision process is something that the council will need to work on. As it currently stands, there is no real mechanism to approve PEPs, which is obviously sub-optimal. Ultimately, the power rests with the steering council, but that may or may not be the path forward. The various governance proposals, as well as the discussion around them, seemed to indicate that delegating PEP decisions to the proper person might be the preferred path forward. That is not anything completely new, of course, as Van Rossum would sometimes pass his PEP-pronouncement power to a BDFL delegate.

It has been just over six months since Van Rossum stepped down. Over that time, the core developers have figured out how to choose a governance system, proposed a half-dozen systems, and voted to pick one of those. In the past month, they have nominated 17 candidates and chosen five of them to serve on the steering council. At this point, we should start to see what changes come about and perhaps get resolution on some dangling PEPs. It is not common to see a community completely change its governance in this way, so it will be interesting to watch it all play out.

To a large extent, the voters chose to stick with the status quo. Obviously, Van Rossum represents continuity with the previous regime, but the others elected were also high-profile decision makers for the language. That would seem to indicate fairly small changes ahead. What exists today, both in the language itself and in its governance, are not likely to see any radical changes, at least in the short term—which is probably for the best for a mature, nearly thirty-year-old language.


Index entries for this article
PythonGovernance


(Log in to post comments)

Python elects a steering council

Posted Feb 8, 2019 8:11 UTC (Fri) by smitty_one_each (subscriber, #28989) [Link]

I, for one, feel the anarcho-syndicalist commune flogged those dead coconut halves quite thoroughly.


Copyright © 2019, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds