Amendment to PEP 13 to allow approval voting

As mentioned in PEP 13 and the number of votes, I’d like to change PEP 13 to switch the council election to use (multiwinner) approval voting, which is the same thing as the PSF uses for the Board election. The difference is just that you can vote for as many of the candidates as you want, rather than limiting your votes to the number of seats up for election. You can still only vote for a specific candidate once.

The actual change to PEP 13 is very minimal: PEP 13 doesn’t go into great detail about voting mechanisms, and I’m not inclined to change that. In the earlier thread on this topic Guido suggested giving the PR a few days to gather feedback before starting a vote, which I’ll do (despite the change only being two words). I’ll add an official vote to this thread in a few days, and it’ll last the required 2 weeks – which means this should be resolved before the November 1st deadline for the next elections.

[EDIT] the poll is now open: Amendment to PEP 13 to allow approval voting


I didn’t follow discussions about the voting method while we designed the new governance (which became the PEP 13) and then elected the first council, but I recall comments in this article:

Copy of the section about voting:

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.


We can see how that went :smiley:

Joking aside, I think any voting system would have led to some portion of “the old guard” being elected, because that’s simply where the consensus is. Perhaps the consensus is lazy or ill-advised, but I don’t think changing the voting system would really be the solution against that.

Still, +1 from me for pure approval voting.

That’s what fancier “proportional representation” (PR) voting schemes aim at countering: denying majority consensus after the majority wins “enough” seats.

At a silly extreme, picture pure approval with a twist: candidate with the most approvals wins a seat. Now throw out every ballot that approved the winner. Repeat until all open seats are filled.

So Guido (perhaps) wins the first round, but then nobody who approved him has any say in the rest. It doesn’t take many rounds of this before people who only approve of “old guard” (or only of Dutch ancestry, or …) are no longer counted.

A practical scheme needs to be fancier, not throwing ballots out entirely, but weighting them so that a ballot counts less the more its approvals have already won.

Say we had the A and B parties, and we were rigidly divided between them. There are 501 As and 499 Bs. 10 seats are open and 10 As run and 10 Bs. Each of the 10 As gets 501 approvals and each of the 10 Bs gets 499.

Under pure approval, all 10 seats go to As. Any form of PR aims to elect about 5 of each given the same ballots.

Key is that the PR scheme doesn’t know anything about why there are factions, or what they may be based on, it acts to counter them based on the visible effects: faction members tend to vote the same way. The more powerful and rigid a faction, the more effective PR is at denying it victories beyond its proportion of the voters.

I don’t think we need it, at least not yet. It would be fun, though, to pick one such scheme and see how the next pure approval election would have turned out under it. If the results are essentially the same either way, PR isn’t finding any factions that “need” to be countered.

Yes, I know about this. But I fail to see how that applies here. We don’t have “A” and “B” parties (fortunately), just a bunch of individuals candidating with slightly different platforms (but still mostly similar, unfortunately).

Also, there are other issues with PR schemes that are generally omitted by their proponents. But my main opposition here is that Python core development doesn’t have parties and shouldn’t have.

1 Like

I believe I already explained that PR aims at countering factions regardless of cause. It needn’t have anything to do with parties, platforms, or even with conscious intent.

For example: group biases in favor of males, in favor of Caucasians, in favor of young or old people, in favor of Americans, … PR has no preconceptions about the nature of factions, just about their visible effects.

But why argue? Already said I don’t think we need it. But already suggested too that we look at what a form of PR would do with the next election’s ballots. Surely you don’t object to that?

1 Like

I understood you, and I meant “parties” in the general sense.

It does encourage the institutionalization of said factions under the form of organized groups. In other words, subtle differences which may remain secondary and fluid, suddenly become defining differences between opposed factions, and debates tend to revolve around them - before and after the election.

One key element - but not the only one - is that it’s concretely impossible to exist as an independent candidate in a PR election. You have to define yourself along the dominant axis of division, and choose your faction.

I’m objecting that you can do it without running an actual PR-based election, with candidates campaigning on that basis, and with actual stakes. If you’re suggesting that you can study “what a form of PR would do” by basing that study on the voting results obtained using a non-PR scheme, then it’s methodologically flawed.

1 Like

No, more as an empirical test of your earlier bare assertion:

Which suggested to me you took “parties” literally, but later said you took it in a general sense.

In which case I don’t necessarily agree we don’t have parties. If scoring the next election under a form of PR gave materially different results, that would suggest we do have parties in the general sense, strongly enough so that PR found a need to counter a party dominating the results.

I don’t expect that, but neither can I rule it out.

As you say, if we do have parties in this sense, I agree that switching to a PR scheme may actually make things worse.

I think where we differ is that you take “faction” to mean some unorganized subset of a population. To me “faction” implies that it is an organized group, not only a sociological or statistical artifact.

In ordinary discourse I use your meaning too, but in the context of PR math any kind of systematic bias is countered. Call it a grundelfinger if you like - I’ll stick to “faction” :wink:.

For example, perhaps voters don’t much care about an election, and 80% just approve of the choices listed at the top the ballot. The other 20% pick from the bottom. They’re just lazy. While pure approval would pick all the winners from the top of the ballot, PR will strive to pick 20% of the winners from the bottom. Exactly the same as if there were Top and Bottom parties stridently advocating for such weird voting. “The math” doesn’t know anything except visible outcomes.

Is that worth detecting if it occurs? Yes! Because in fact higher ballot position is an advantage in real life. That’s why modern voting software randomizes ballot order per voter.

Just to make sure I understand the points y’all are trying to make: none of the discussions about PR are strictly speaking relevant to this proposal, and it doesn’t sound like either of you are actually objecting to the proposed change, am I right?


Right! I’m strongly in favor of moving to pure approval (your proposed change).

I’m also in favor of thinking about PR - pure approval wasn’t designed for multi-winner elections, and for reasons explained can easily result in “tyranny of the majority” if the voters are strongly polarized along any axis (whether by organized party or unconscious bias).

I doubt that applies to us at this time, and am also not sure that PR would be an adequate response if it did. Still, while people may be annoyed to hear it :wink:, it’s good to realize that pure approval for multi-winner elections has bad failure modes too.

It’s nevertheless better than approval voting with a limited number of approvals per voter.


Seeing as there’s been no objections or suggestions for the wording of the proposed change, time to add a poll. This poll will be up for 2 weeks, as required by PEP 13. Please vote.

  • YES, amend PEP 13 with PR 1197
  • NO, leave PEP 13 unchanged

0 voters

Given the intervening discussion about Proportional Representation, it would be good to add a link from the top post directly to the poll (along with the notification that the poll is now open).


Friendly reminder that this poll closes in four days. If you haven’t already, please consider voting.


The poll is now closed, and it was 32/1 in favour. PEP 13 doesn’t say what should happen now, but I’ll wait for pronouncement from the steering council (@ncoghlan @guido @willingc @barry @brettcannon) and approval of the PR.


I’ve approved the PR and requested that the other 4 SC members also review it. I think once we get a majority of SC approving it we can merge it. How’s that for make-process-up-on-the-spot? :slight_smile:

Actually, I think @thomas can just merge it according to since there’s no mention of needing SC approval (which is very likely on purpose to prevent the SC from blocking changes about the SC itself).

Well, if it makes Barry feel better, he can imagine I waited until a majority of council members approved it :stuck_out_tongue_winking_eye: (I merged the change.)


@thomas Phew! I can sleep peacefully now!