Python Governance Electoral System

Tal’s vote only has two options: take the 3-2-1 method or discuss further. This is missing the default of “let’s keep things as they are” and the only concrete option proposed in the poll is not a notable voting process. As @brettcannon said, it looks like the people concerned about the voting process are outnumbered by the silent majority.

As such, I consider Tal’s poll to be a way for opponents to IRV to rally around a single counter-proposal (3-2-1).

I strongly suggest that if support for that single counter-proposal is not clear by end of October 30 AoE, we run the vote as currently expressed in PEP 8001.


While I am very curious about the 3-2-1 method myself, it is alarming that the best source of information on it is currently a Quora answer. It does not sound like this is a notable, proven method (yet). Singling it out as the sole concrete option in the poll is surprising to me, especially given the Arrow theorem brought up on python-committers by @Alex_Martelli. But if this is the counter-proposal you’re rallying around, that’s fine by me.

Tick tock

I think it is already risky to fiddle with PEP 8001 this close to the vote. But it would be unacceptable to make changes to the voting process within two weeks of the vote. That means we would have to push the vote to 2019.

Keep in mind this is also distracting from discussing the actual proposals.

Q: “But I want this poll to decide the voting method, period!”

A: Well, the poll as stated above is not compatible with this want. At the sprint, out of 25+ committers there, we’ve had a self-selected group of nine that decided on IRV. Thus, a late vote to overturn the selected voting mechanism should identify first and foremost whether there is enough consensus to do it. So at the very least the vote should have three options:

  1. Keep PEP 8001 as is;
  2. Replace IRV with 3-2-1;
  3. Postpone the vote to 2019 and discuss PEP 8001 further.

Stating it in such terms would make it more clear how big the opposition actually is. And that “keep bikeshedding” has a price.


As I said, I didn’t expect anything to change - I was “planting a seed”. I take large-scale voting simulations seriously, and 3-2-1 has done very well on those. The number of wholly transparent real-life elections whose details are accessible is tiny, so if you want “real life experience” you’re going even more on faith :wink: What the world has most experience with is “plurality”, which sucks just as much as voting simulations predict. On the rangevoting site, you can dig to find real-life examples showing that IRV actually does, at times, deliver results as bizarre as Ka-:Ping Yee’s voting simulations (or any number of others’ simulations) said it would. Etc.

The seed I’m planting is the idea that it’s possible to have a robust scheme whose rules are easy to grasp. I bet you understood every step of 3-2-1 on first (at worst, second) reading. That’s worth a whole lot, In my experience, people who aren’t “election nerds” generally can’t do an IRV calculation them self, not because it’s particularly difficult, but because they don’t actually understand what “the rules” are. They just think they do. Schulze? Forget it.

STAR is also easy to grasp, but you first have to digest the idea of “adding scores” instead of just “counting votes”.

But we do, every time a new crypto standard is released. There is no “real world experience” with them at first, but there’s a world of theory that’s been vetted by crypto experts. For voting systems, there are simulations, and a world of formal properties that can be analyzed in advance (Arrow’s theorem - depending on which version you bump into first - names only about 5 of them - there are many more that can be analyzed).

Only election nerds care about the latter, though. For whatever reason, I’m attracted to systems that people really do understand with minimal effort :wink:

It’s the only source I happened to link to. Here’s more

There are many “impossibility theorems” concerning voting systems. Arrow’s is one. No voting system ever mentioned here evades even one of them - that’s why they’re called “impossibility” theorems :wink: The link I just gave above spells out how 3-2-1 fares on 7 of the commonly analyzed formal properties.

But who cares? Election nerds. Given the impossibility of satisfying all intuitively desirable properties simultaneously, I’m more interested in how simple a method is to understand and how well it does in large-scale simulations.

I said at the start I didn’t expect anything to change. I’m not pushing that at all for this election. Just “planting a seed”.

1 Like

To be frank, I feel out of my league here. I’m new in this community, far from an expert on the topic, and find myself unsure how to proceed.

I created the poll here after seeing support from two members for the “3-2-1” suggestion. If there was a consensus here I meant to create a poll “IRV vs. 3-2-1” by sending to python-commiters in addition to posting on Discourse, but that’s not happening.

It doesn’t seem that there could be a method we agree upon to suggest in place of IRV, at least within the short given time frame. I guess this means IRV remains the chosen method by default, which makes me sad.

I can only hope the the vote results will be so clear-cut that the voting method ends up having been a non-issue in hindsight.


Tal, you did fine! I didn’t expect anything to change, but the poll was a good idea just in case there was a hidden :wink: groundswell of support. I might have started one myself, but had no idea it was possible to create a poll.

I said before (probably not here) that I’m fine with using IRV for this election. Problems start in earnest when political factions start manipulating the system. Since that’s not the case here, I’d even be fine with using straight plurality here (“pick one - most votes wins”). We’d probably get the same result regardless.

1 Like

So it seems clear that there’s some substantive discomfort with IRV. I’m uncomfortable, Tal is uncomfortable, the best thing that Tim has to say about IRV is that it’s not plurality, and the most passionate arguments in favor of IRV seem to be from people who don’t care and just want to get things resolved.

It sounds to me like we don’t have consensus here, and the timeline for the vote is going to slip. I’ve therefore moved PEP 8001 back to “Draft” status.

I’m not happy about doing this – I totally hear the arguments that we want to get this done ASAP. But the frustrating reality of dealing with groups of humans is that getting to agreement always takes an unreasonable amount of time and effort, and there are no magical shortcuts. When you have a BDFL you have the option to sometimes skip that, but IME these kinds of frustrating discussions are an inevitable component of every other form of governance, so we might as well start practicing now.

I’m particularly concerned by all this rhetoric about how the deadline is fixed and everyone has to get in line. I want to be done soon too! But trying to steamroller other core devs like this, and acting like some core devs get to resolve disagreements like this by pure fiat, is a really unhealthy precedent. I feel like some of us are so concerned about making sure it looks like we can work together, make decisions, and hold a legitimate vote, that they’re undermining our ability to actually work together, make decisions, or hold a legitimate vote.

Let’s try another poll here, just to gather some information. For each of the following options, imagine that PEP 8001 ended up using it. Would you feel comfortable filling out your ballot, and would you feel comfortable that the final result would be legitimate? If the answer to both questions is “yes”, please tick the corresponding box:

[EDIT: I screwed up the poll, but discourse doesn’t let me delete or edit it. So I’ve marked it read-only, and the real poll is DOWN HERE]

  • Pure Condorcet, with ties or “pathological cycles” thrown to the PSF board to resolve
  • Schulze, with ties thrown to the PSF board to resolve
  • Approval voting, with ties thrown to the PSF board to resolve
  • 1-2-3, with ties thrown to the PSF board to resolve
  • IRV, with ties thrown to the PSF board to resolve

0 voters


Note: I’m fine with all 5 choices, but the poll only allowed picking 4. So I dropped “Schulze”: if there’s a Condorcet winner, it’s exactly the same as “Pure Condorcet” (which isn’t actually a voting method - it’s a property a given method may or may not satisfy), All the complication in Schulze is to figure out happens when there’s not a Condorcet winner. And that’s a whole lot of complication.

Oh god damn it. I meant to allow any number of options, but screwed up the UI. Discourse says that I’m not allowed to edit the poll now, but that an admin might be able to?

Or I could delete and recreate it, I guess, if people would prefer?

Honestly, the “Pure Condorcet” and “Schulze” choices are the same thing: if “problem cases” are punted to the PSF Board, then the only part of Schulze that remains is seeing whether there is a Condorcet winner (which, if it exists, is necessarily unique). Which is presumably exactly the same as what “Pure Condorcet” does. Schulze without punting problem cases to the PSF Board would be a different choice.

Eh, currently the poll only has 4 votes, and discourse is telling me that 3 of those people are currently looking at the thread, so here’s a new version that allows up to 5 options. Please re-vote:

  • Pure Condorcet, with ties or “pathological cycles” thrown to the PSF board to resolve
  • Schulze, with ties thrown to the PSF board to resolve
  • Approval voting, with ties thrown to the PSF board to resolve
  • 1-2-3, with ties thrown to the PSF board to resolve
  • IRV, with ties thrown to the PSF board to resolve

0 voters

1 Like

Please read the poll options as:

  • “Pure condorcet”: If there’s a condorcet winner, pick that. If there isn’t – which means either a classic tie, or that we have a “Condorcet cycle” – then ask the PSF Board to resolve things. (Presumably by picking from the Smith set, if you want to get technical.)
  • “Schulze”: If there’s a Schulze winner, pick that. If there isn’t – which means a classic tie – then ask the PSF board to resolve things. (Presumably by picking one of the tied options.)
1 Like

I’ve been thinking about all of this a bit, and I think we’re sort of being “bitten” a bit by the fact that I don’t think there is a a “bad” proposal to vote on here. People may have their preferences, but ultimately I think most people are going to be generally okay with any of the options for governance, and in that case they likely don’t care too much about how we pick it, because regardless of the outcome they’re OK. IOW, we could probably be proposing Random Ballot and most people generally would be fine with it.

This is ultimately why I think you have the silent majority not really voicing an opinion one way or another, because at some level the choice is academic with only a small ability to actually influence the outcome based on what voting system we choose (and little way to know a priori what those situations are going to be, which is why people are largely speaking in abstract).

Unfortunately, we have to pick some system, and although Random Ballot feels positively Monty Pythonesque, we probably need something with less randomness :wink:

It seems we have the following high level options:

  • IRV
    • Pro: The PEP is already written.
    • Pro: Has real world use.
    • Con: Has severely weird pathological cases.
    • Con: Cannot use the Helios voting system the PSF uses.
  • Some Condorcet method
    • Pro: Will elect the choice that is most preferential to the majority of people.
    • Pro: Has real world use.
    • Con: Has potential for an extremely unlikely type of “tie” that is specific to it.
    • Con: Cannot use the Helios voting system the PSF uses.
  • Approval Voting
    • Pro: Will elect the choice that the most people are OK with.
    • Pro: Has real world use (the PSF itself uses it).
    • Pro: Can use the Helios system that the PSF uses.
    • Con: Does not allow people to express preferences other than approve / disapprove.
  • STAR
    • Pro: Will elect the choice that maximized the number of people who are OK with it (but may not pick the one the majority wants if there is a 2nd choice a super majority is OK with).
    • Pro: Allows people to express a full range of preferences, including “equal”.
    • Con: Little to no real world use.
    • Con: Cannot use the Helios voting system.
  • 3-2-1
    • Pro: Will elect the choice that maximizes most people being OK with it.
    • Pro: Allows people to express preferences, including “equal” though at a coarse granularity.
    • Pro: Most OSS developers will be familiar with the idea of +1, +0, -1 voting.
    • Con: Little to no real world use.
    • Con: Cannot use the Helios voting system.

There’s also range voting, but it’s basically the same as approval, just with more granularity for people to express themselves (although it cannot use Helios).

I’ll be honest, I find IRV to be almost as undesirable as plurality the biggest praises I can really give it is that it’s not plurality and the PEP is already written. The only reason I’m not really fighting harder against IRV is I suspect that the choice is probably academic and doesn’t really matter much which system we choose.

That being said, I still think, if given the choice, we should strive to pick a better system because there is very little downside to doing so. I’m personally happy with any of the others that have been mentioned besides Borda. The rest of them are largely equal to me, with a variety of trade offs but I think they’re all about roughly equal terms of results, so it’s just down to preference.


First, thanks for starting a poll that fixes the issues with the initial one(s).

Look at it from the perspective of those of us who volunteered to try and find a solution at the dev sprints. People who chose to participate in that discussion did, we did our best to find a solution (and found one in the room when we discussed this), and then we are being told by a few people that it wasn’t good enough. Either side of this can feel “steamrolled” by the other by feeling like they are not being fully heard and ignored, but unfortunately we don’t even have a clear definition of consensus in this regard to really resolve this when it’s subjective in the end. We’re simply in a crappy situation with having to resolve this and there isn’t much we can do about it unless we can get everyone to participate and magically agree.

IOW everyone is frustrated in some regard by this situation, but everyone is doing there best to find an amicable solution.


Aside from words in a PEP, what actual investment do we have in IRV so far? For example, have we invested time/money/effort in designing IRV ballots? Time/money/effort in acquiring/developing IRV tallying software? Any sunk costs to implement it? Or is it still just aspirational?

I don’t know. That’s why I’m asking :wink:. This is an effort to address Donald’s:

That is, unless we’d have to throw away work to switch, what are the downsides to switching?

Personally, if I were tasked to tally the votes, and it switched from (say) IRV to STAR, or vice versa, at the last second, I’d shrug “fine - no problem”. They’re both easy to tally with brief, simple, clear Python code. Heck, for a vote of this size, the easy-to-tally methods could be done by hand.

I haven’t seen those messages. What I have seen is a few people pointing out that (a) IRV is poorly regarded among people who study voting systems; but, (b) we could live with it this context anyway; but, © what is the actual cost of switching? I have to echo Nathaniel’s observation:

It’s not like you (Brett) appear to want IRV. It seems more that you’re opposed to change because … it would be a change. So my question is: a change to what? Words in the PEP, or is there actual investment in IRV infrastructure that would be lost?

If there is no infrastructure already in place, switching would leave us exactly where we already are: at ground zero. If that’s the case, the relentlessness of the opposition becomes hard to understand. The relentlessness of the opposition to IRV is easy to understand: IRV sucks :wink:, which has nothing to do with any of us.

Ya, I can live with it - but why is that necessary? The winner-so-far (“Pure Condorcet”) in the latest mostly-ignored poll is also fine by me. There’s actually little pointless bikeshedding in these messages: most people with some knowledge of these things agree that plurality, IRV, and Borda are poor choices, and that just about anything else would be significantly better. Donald and I seem to be the only vocal fans of range/score methods, but we’ve both said any of the Condorcet methods would be fine too. There isn’t a rally around any particular alternative because they’re all seen as better than IRV.

Nathaniel’s poll is a pure instance of approval voting, which is also better :wink:

I think this is a pretty good example of why there is generally a moratorium on making decisions at in person gatherings like the language summit or the core developer sprint.

You make the statement “those who chose to participate in that discussion”, which comes across like the people raising concerns had the option to participate, but simply chose not to until after it was “decided”. If I had been there, I would have raised the same concerns then, however it simply wasn’t possible for me to go (I even missed the PyPA sprint this weekend for similar reasons).

I don’t think that’s what you’re trying to say here, but that’s how the people arguing for IRV are generally coming across to me personally. None of them seem to even be particularly arguing for IRV for any reason other than it wasn’t plurality it was already decided at the core developer sprint to use it.

This is a good point. As far as I am aware so far the only sunk cost we’ve got for IRV is the PEP, and if that’s all it is, I can have a replacement PEP within say 24 hours that proposes one of the better options.

1 Like

Based on how this has gone, pick Schulze. Nobody will actually understand it, but they can be crushed with this handy list of celebrity endorsements :wink:

And here I was going to go with Random Ballot :wink:

1 Like

I’m really happy to see this discussion continuing so positively!

Thanks for the much better poll, @njs.

After a good night’s sleep, reading through the discussion and thinking some more, here are my thoughts:

  • A crucial criterion IMO for the chosen system is to be simple and clear. This means not only “how does one vote” but also “how is the winner selected”. IRV and Schulze both fail in this regard from my point of view.
  • Another crucial criterion is not to be esoteric. 3-2-1 and STAR both seem good and simple, but are too new and obscure IMO for this vote.
  • Approval voting is simple and common but the “yes”/“no” choice seems too restrictive for this vote. Personally, there are some options I expect to be in favor of, some I’d be okay with, and some I’d be against.
  • Most here seem to agree that IRV is not a very good option.
  • The cost of switching from IRV is indeed very low.
  • I wouldn’t be fine with a “Random Ballot”, and I suspect several others wouldn’t. I’d accept a governance system chosen by the community even if it wasn’t my preference, but not one chosen arbitrarily.

The Schulze system seems to check all of the boxes except simplicity, but the complexity is only needed to resolve ties and cycles. Donald’s suggestion of using “Some Condorcet method” seems to stem from this: Ranked voting and choosing the Condorcet winner seems like exactly what we want; let’s simply avoid the complexity of dealing with ties and cycles. Since a tie/cycle is very unlikely, this is very reasonable!

Therefore, I’m voting for Pure Condorcet, with ties or “pathological cycles” thrown to the PSF board to resolve, and not any other option.


The thing I like most about IRV is that I can mark a second choice without hurting my first choice. This is a pro for IRV.

A lot of the other systems like Approval, STAR, and “3-2-1” put me in the position of having to penalize my first choice if I want to say what my next preference is. So the system limits me from expressing my preference. This is a con for these systems.

I think the Pros and Cons should acknowledge this for each system.

Also, earlier Nathaniel said, “the most passionate arguments in favor of IRV seem to be from people who don’t care and just want to get things resolved.” But that’s not true for me. I do feel strongly about this and have a lot of real-world experience in these issues, and I thought I said that before, but unfortunately I don’t have the time or emotional energy for the debate. (I’ve been in debates like these many times before, and without fail they never resolve.) However, I feel like the point I made a couple times before seems to have been forgotten and not recorded in what I saw above, so I’m restating it again.