EWDurbin (Ee Durbin)1 Python governance vote (December 2018)
As described inPEP 8001, the governance election has been completed.
The result is thatPEP 8016: The Steering Council Model (Smith, Stufft) has been selected as the winner.
Result
- PEP 8016: The Steering Council Model (Smith, Stufft)
- (Condorcet winner: wins contests with all other choices)
- PEP 8012: The Community Governance Model (Langa)
- loses to PEP 8016: The Steering Council Model (Smith, Stufft) by 40–22
- PEP 8011: Python Governance Model Lead by Trio of Pythonistas (Wijaya, Warsaw)
- loses to PEP 8016: The Steering Council Model (Smith, Stufft) by 37–20
- loses to PEP 8012: The Community Governance Model (Langa) by 34–28
- PEP 8015: Organization of the Python community (Stinner)
- loses to PEP 8016: The Steering Council Model (Smith, Stufft)by 41–18
- loses to PEP 8011: Python Governance Model Lead by Trio of Pythonistas (Wijaya, Warsaw) by 33–24
- PEP 8014: The Commons Governance Model (Jansen)
- loses to PEP 8016: The Steering Council Model (Smith, Stufft) by 50–9
- loses to PEP 8015: Organization of the Python community (Stinner) by 38–18
- PEP 8010: The Technical Leader Governance Model (Warsaw)
- loses to PEP 8016: The Steering Council Model (Smith, Stufft) by 44–15
- loses to PEP 8014: The Commons Governance Model (Jansen) by 30–28
- PEP 8013: The External Council Governance Model (Dower)
- loses to PEP 8016: The Steering Council Model (Smith, Stufft) by 55–6
- loses to PEP 8010: The Technical Leader Governance Model (Warsaw) by 38–17
- Further discussion
- loses to PEP 8016: The Steering Council Model (Smith, Stufft) by 57–4
- loses to PEP 8013: The External Council Governance Model (Dower) by 32–29
Result details
| PEP 8016 | PEP 8012 | PEP 8011 | PEP 8015 | PEP 8014 | PEP 8010 | PEP 8013 | Discussion |
|---|
| PEP 8016 | - | 40 | 37 | 41 | 50 | 44 | 55 | 57 |
| PEP 8012 | 22 | - | 34 | 33 | 40 | 40 | 48 | 48 |
| PEP 8011 | 20 | 28 | - | 33 | 42 | 42 | 52 | 51 |
| PEP 8015 | 18 | 22 | 24 | - | 38 | 36 | 47 | 48 |
| PEP 8014 | 9 | 18 | 16 | 18 | - | 30 | 40 | 38 |
| PEP 8010 | 15 | 20 | 14 | 22 | 28 | - | 38 | 43 |
| PEP 8013 | 6 | 9 | 9 | 12 | 14 | 17 | - | 32 |
| Discussion | 4 | 14 | 10 | 13 | 23 | 18 | 29 | - |
Ballot report
Choices
- PEP 8010: The Technical Leader Governance Model (Warsaw) (changelog)
- PEP 8011: Python Governance Model Lead by Trio of Pythonistas (Wijaya, Warsaw) (changelog
- PEP 8012: The Community Governance Model (Langa) (changelog)
- PEP 8013: The External Council Governance Model (Dower) (changelog)
- PEP 8014: The Commons Governance Model (Jansen) (changelog)
- PEP 8015: Organization of the Python community (Stinner) (changelog)
- PEP 8016: The Steering Council Model (Smith, Stufft) (changelog)
- Further discussion
Ballots in randomized order
| 0. | 1. | 2. | 3. | 4. | 5. | 6. | 7. |
|---|
| 8 | 5 | 1 | 7 | 4 | 3 | 2 | 6 |
| 8 | 3 | 2 | 4 | 6 | 5 | 1 | 7 |
| 6 | 1 | 4 | 7 | 5 | 3 | 3 | 8 |
| 3 | 2 | 7 | 5 | 4 | 6 | 1 | 8 |
| 2 | 1 | 4 | 6 | 8 | 5 | 3 | 7 |
| 7 | 2 | 3 | 6 | 4 | 7 | 1 | 5 |
| 8 | 8 | 1 | 3 | 2 | 8 | 3 | 4 |
| 6 | 1 | 2 | 8 | 4 | 3 | 5 | 7 |
| 6 | 1 | 8 | 8 | 8 | 3 | 6 | 7 |
| 6 | 1 | 2 | 7 | 4 | 3 | 5 | 8 |
| 1 | 2 | 6 | 5 | 7 | 4 | 3 | 8 |
| 1 | 5 | 7 | 6 | 3 | 8 | 2 | 4 |
| 2 | 1 | 5 | 8 | 8 | 8 | 6 | 7 |
| 4 | 4 | 3 | 2 | 4 | 4 | 4 | 1 |
| 2 | 1 | 6 | 8 | 5 | 7 | 4 | 3 |
| 4 | 3 | 8 | 7 | 6 | 1 | 2 | 5 |
| 8 | 3 | 4 | 8 | 8 | 4 | 1 | 7 |
| 2 | 1 | 8 | 6 | 4 | 7 | 3 | 5 |
| 3 | 7 | 1 | 8 | 5 | 4 | 2 | 6 |
| 6 | 4 | 3 | 7 | 2 | 5 | 1 | 8 |
| 8 | 4 | 3 | 6 | 7 | 1 | 2 | 5 |
| 8 | 4 | 1 | 8 | 8 | 3 | 2 | 5 |
| 2 | 5 | 1 | 6 | 7 | 4 | 3 | 8 |
| 6 | 5 | 1 | 8 | 4 | 3 | 2 | 7 |
| 8 | 3 | 2 | 7 | 4 | 5 | 1 | 6 |
| 1 | 4 | 2 | 7 | 8 | 3 | 5 | 6 |
| 7 | 1 | 6 | 7 | 1 | 6 | 1 | 8 |
| 4 | 5 | 3 | 6 | 6 | 2 | 1 | 8 |
| 1 | 2 | 7 | 8 | 6 | 4 | 3 | 5 |
| 7 | 6 | 3 | 5 | 4 | 2 | 1 | 8 |
| 7 | 2 | 4 | 6 | 3 | 5 | 1 | 8 |
| 8 | 1 | 4 | 6 | 5 | 3 | 2 | 7 |
| 4 | 2 | 4 | 4 | 3 | 2 | 1 | 8 |
| 5 | 4 | 3 | 7 | 6 | 1 | 2 | 8 |
| 5 | 2 | 1 | 7 | 3 | 4 | 2 | 8 |
| 6 | 1 | 4 | 7 | 5 | 2 | 3 | 8 |
| 1 | 5 | 3 | 2 | 4 | 8 | 6 | 7 |
| 5 | 2 | 4 | 8 | 7 | 6 | 1 | 3 |
| 7 | 3 | 2 | 4 | 1 | 6 | 5 | 8 |
| 5 | 5 | 4 | 7 | 4 | 4 | 3 | 8 |
| 1 | 2 | 7 | 8 | 5 | 3 | 6 | 4 |
| 8 | 4 | 2 | 8 | 1 | 2 | 3 | 8 |
| 5 | 4 | 3 | 7 | 6 | 1 | 2 | 8 |
| 3 | 2 | 8 | 8 | 8 | 4 | 1 | 7 |
| 8 | 4 | 1 | 7 | 6 | 2 | 3 | 5 |
| 7 | 1 | 5 | 8 | 3 | 6 | 2 | 4 |
| 5 | 4 | 3 | 6 | 7 | 2 | 1 | 8 |
| 3 | 2 | 4 | 7 | 6 | 5 | 1 | 8 |
| 3 | 6 | 5 | 8 | 7 | 2 | 1 | 4 |
| 1 | 5 | 4 | 8 | 7 | 2 | 3 | 6 |
| 6 | 5 | 1 | 7 | 4 | 2 | 3 | 8 |
| 8 | 6 | 1 | 4 | 7 | 2 | 3 | 5 |
| 1 | 2 | 8 | 4 | 7 | 6 | 5 | 3 |
| 6 | 6 | 5 | 3 | 4 | 1 | 2 | 8 |
| 1 | 1 | 6 | 7 | 6 | 6 | 1 | 8 |
| 8 | 8 | 1 | 8 | 8 | 8 | 2 | 3 |
| 8 | 5 | 2 | 6 | 6 | 2 | 1 | 4 |
| 8 | 7 | 2 | 4 | 6 | 3 | 1 | 5 |
| 3 | 4 | 2 | 5 | 1 | 6 | 7 | 8 |
| 1 | 8 | 1 | 1 | 8 | 8 | 8 | 8 |
| 3 | 1 | 8 | 8 | 5 | 8 | 2 | 4 |
| 8 | 7 | 1 | 5 | 2 | 3 | 4 | 6 |
Rank 1: PEP 8016: The Steering Council Model (Smith, Stufft) (6)
- vs. 1 : (20 - 37)
- vs. 2 : (22 - 40)
- vs. 5 : (18 - 41)
- vs. 0 : (15 - 44)
- vs. 4 : (9 - 50)
- vs. 3 : (6 - 55)
- vs. 7 : (4 - 57)
Rank 2: PEP 8012: The Community Governance Model (Langa) (2):
- vs. 1 : (28 - 34)
- vs. 5 : (22 - 33)
- vs. 0 : (20 - 40)
- vs. 4 : (18 - 40)
- vs. 7 : (14 - 48)
- vs. 3 : (9 - 48)
Rank 3: PEP 8011: Python Governance Model Lead by Trio of Pythonistas (Wijaya, Warsaw) (1):
- vs. 5 : (24 - 33)
- vs. 4 : (16 - 42)
- vs. 0 : (14 - 42)
- vs. 7 : (10 - 51)
- vs. 3 : (9 - 52)
Rank 4: PEP 8015: Organization of the Python community (Stinner) (5):
- vs. 0 : (22 - 36)
- vs. 4 : (18 - 38)
- vs. 3 : (12 - 47)
- vs. 7 : (13 - 48)
Rank 5: PEP 8014: The Commons Governance Model (Jansen) (4):
- vs. 0 : (28 - 30)
- vs. 7 : (23 - 38)
- vs. 3 : (14 - 40)
Rank 6: PEP 8010: The Technical Leader Governance Model (Warsaw) (0):
- vs. 3 : (17 - 38)
- vs. 7 : (18 - 43)
Rank 7: PEP 8013: The External Council Governance Model (Dower) (3):
Rank 8: Further discussion (7):
8 Likes
EWDurbin (Ee Durbin)3 1 Like
pitrou (Antoine Pitrou)4 It’s not obvious to me how the results are auditable. For example, how do I find my vote certificate amongst the anonymized ballots?
ncoghlan (Alyssa Coghlan)5 I just scanned the list until I saw at least one ballot that matched the way I voted.
1 Like
pitrou (Antoine Pitrou)6 But you don’t know whether it’s yours. It could be mine
ambv (Łukasz Langa)7 Thanks to everybody involved! I updated the governance PEPs to reference the vote and this post:https://github.com/python/peps/commit/5bd92c746b7a338afc841e5a996ebe383f3d5e32
3 Likes
jackjansen (Jack Jansen)8 How can some rows in theballots listing have multiple entries with the same value? Or was it possible to vote for alternatives being equal, and did I overlook that?
And I can’t work out how many people voted for the polygamy poll after they finished the Python governance one.

4 Likes
tim.one (Tim Peters)9 Some notes on the tech aspects of the vote: most remarkable is how unremarkable it was
Not only was there a flat-out Condorcet (“beats all”) winner, but if we throw that winner out, there’s also a flat-out Condorcet winner among the 7 remaining - and so on, all the way down to “further discussion”. For that reason,all of the Condorcet methods supported by CIVS compute the same total ordering. No ties, and no preference cycles, anywhere. The raw Condorcet criterion on its own was enough to resolve the full ordering. We were lucky in that way.
About a third of the ballots exploited the possibility to express ties. I was surprised that wasn’t larger, but it’s possible some didn’t realize theycould; e.g.,

jackjansen:
How can some rows in theballots listing have multiple entries with the same value? Or was it possible to vote for alternatives being equal, and did I overlook that?
Yup! In fact, if ;you didn’t change anything in the initial ballot presented to you, and clicked “Submit”, you would have “voted” that you had no preferences at all - the same as if you hadn’t voted.
Here’s a breakdown of the number of ballots expressing a given number of distinct ranks:
| #ranks | #ballots |
|---|
| 2 | 1 |
| 4 | 4 |
| 5 | 6 |
| 6 | 5 |
| 7 | 5 |
| 8 | 41 |
Only one ballot gave only two ranks, effectively pretending this was an Approval election:
18118888
Moral of the story: if we do this again, use score voting instead. It’s much easier to understand, is immune to preference cycles, and would almost certainly have yielded the same total ordering
.
5 Likes
eric.snow (Eric Snow)10 Yeah, you could give multiple options the same rank and some ranks could be unused. In retrospect that could have been more clear.
-eric
2 Likes
barry (Barry Warsaw)12 The UI wasn’t fantastic, but I’ve used CIVS often enough (Debian voting IIRC) that I could still express my choices eventually. Some of the drag and drop was problematic with one line being longer than the others. The other thing I would have changed is for the links to the PEPs in the selections to pop up a new tab or window rather than taking me off the voting page. But all in all, I’m quite satisfied with how the vote was conducted (and also with the results).
Kudos to everyone involved, both in the actual machinery of the vote, in the fantastic and very useful discussions prior to the vote, to all who participated in writing and refining the PEPs, and to everyone who cares enough about Python to take this seriously and exercise their voice.
4 Likes