Steering Council Election Methods (Approval Voting)

I don’t really care for the characterisation that I “put Approval voting in place”, or the suggestion that I did it because it would benefit incumbents more. I had no reason to think so, especially since I was, as an incumbent, not re-elected for my PSF Board seat only a few months before :P.

Approval voting wasn’t my idea. I offered it up to a vote after it was pointed out that the limited-vote voting system PEP 13 originally offered likely reduced the chances of less well known candidates. In the poll for it, Victor even posted a link to a recap that cites Tim Peters on this. 97% of the 33 people who voted in the poll collectively put it in place.

I don’t remember anyone arguing that Approval voting would benefit incumbents more than the old “first past the post bloc voting”, just that yet other voting systems are possibly a better fit for something like the Steering Council.


I think you miscounted somewhere, Raymond. I’m the only SC candidate for a second term and I’ve only been on the board for about five and a half years, spread out over nineteen and a half years.


I’m kind of bored that at every single Steering Council election, a new discussion about the voting method pops up. Let me quote Antoine:


I’m not :wink:. The election method used can have profound effects on the outcome. It’s at least as important as deciding on who can vote.

Yes, any sane election method will elect some portion of those who get the most votes. It’s what happens to the rest of the positions that’s at issue. As I’ve illustrated several times already with concrete examples, pure approval voting in a multi-winner election can easily result in all positions being filled by the slimmest of majorities, leaving the slimmest of just-barely minorities with no winners at all. Pure approval voting was not designed for multi-winner elections; it was designed to pick a (one) winner.

According to me, since removing the limit on the number of approvals a ballot can make, we’re doing the best that can be done with pure approval voting.

For minorities to get a chance of winning some positions too, there are two approaches:

  1. Use a scheme that gives ballots less weight the more that ballot’s approvals have already won positions. I have(*) 4 specific ways to do that I would like to try, but - alas - it doesn’t appear possible to get unencrypted, anonymized ballots back from our voting software (the Helios service). Without real-world PSF ballots to use as input, there’s just no way to guess the real-world PSF election outcomes such methods would yield. Knowing the total number of approvals each candidate gets is useless for this - it’s how they’re distributed across ballots that matters.

  2. As has already been suggested elsewhere, and more than once, impose minimum requirements on how many winners must be picked from various identifiable groups

#2 is a rat’s nest and a potential political firestorm. For example, there are quite possibly more “identifiable groups” who can make a case for being “under-represented” than there are SC positions to fill.

(*) By “I have” I mean I have code ready to run. I did not invent the methods - they were taken from an academic paper. In the necessarily invented “lopsided” examples I’ve tried them on, they all deliver outcomes that I think almost everyone would consider to be “more fair” than the pure-approval multi-winner outcomes.

1 Like

Here’s another. Of course it’s exaggerated to make the point clear.

We have 10 SC candidates. Without meaning to assume gender, to my American ears 8 of their names “sound male” and 2 “sound female”.

Suppose we have 100 voters. 51 approve of all and only the 8 “men”. 49 approve of all and only the 2 “women”.

Under the current scheme, all 5 winners are “men”. In fact, since the top 8 approval totals (51) are all men, we would need to have a 9-seat SC before a single woman could get on.

Under any of the 4 alternatives I mentioned, 3 winners would be “men”, and 2 “women”. “The math” has no idea of gender, it’s just noticing that 49% of the voters went one way while 51% a different way, and tries to allocate winners close to that ratio too. A 40%/60% winner split is the closest as is possible to get.

Which outcome do you think is more representative of the voters as a whole?

Thought so - me too :wink:. This kind of issue is unique to multi-winner elections; it doesn’t arise in the single-winner ones pure approval voting was designed for.

And a simple illustration of that pluralities (not just majorities) can capture out-of-whack influence.

4 candidates: A, B, C, D
10 voters
2 winners

4 voters approve of A and B
3 voters approve of only C
3 voters approve of only D

It’s not possible for everyone to get at least some of what they want. Pick any two winners, and at least 3 voters will feel unrepresented.

The current scheme picks A and B. So 4 voters get everything they wanted, and 6 get nothing they wanted. 4 isn’t even a majority, just a slim plurality.

Any of the 4 alternatives I mentioned pick one of {A, B} and one of {C, D} (they can’t resolve ties on their own - there’s nothing in the data to favor A over B, or B over A, or likewise wrt C and D). Then 7 voters get at least some of what they want, and 3 get none. That’s as best as can be done under that measure.

Yet a 6th method (“Satisfaction Approval Voting”, invented in 2010) picks C and D.

The big attraction of the 6th is that it’s a crisply defined scheme that’s computationally efficient. Two of the others are similarly crisply defined, but can be computationally intractable (NP-hard, essentially requiring analyzing each of the comb(number_of_candidates, number_of_winners) possible winning sets). For “Python size” elections, though, that’s unlikely to matter (e.g., comb(10, 5) = 252 for the current SC election, trivial for a computer to score).


Apologies. The phrase “put in place” wasn’t meant to be taken personally. Also, it was a mistake to mention your name.

So, let me try to use factual and neutral language to describe some concerns about steering council elections. And to focus on issues rather people, individual names are omitted.

Before an election, one of the candidates proposed a change in the voting methodology. The proposal was accepted and that candidate won the election.

Before an election, another candidate removed voters from the voter list. Some of those voters protested and were reinstated. That candidate won the election.

Before an election, another candidate nominated many new members who were added to the voters list. That candidate won the election.

Recently a long-term member quit under duress. That person is no longer on the voters list.

Each of these has its own story and justification, but I do feel concerned. Perhaps, I’m sensitive to it because I live in country where there has been considerable friction regarding changes to election methodologies and decisions about who can vote.

This seems somewhat disingenuous considering that each election had five winners, not just one.

I have no idea what point you are trying to convey here, unless the "quit under duress" != "mend your ways or be ejected". I hope we agree that if one is kicked off the team, one does not get to vote.

I definitely sympathize. I was very grateful for our governor who classified voting as an essential activity so everyone could take part. I am definitely in favor of Tim’s research into voting methods that would result in a more representative Steering Council mix (which might be what we are already getting by accident, but it would be better to have it because of good algorithms).


1 Like

Winning or losing is a binary outcome.

I think at this point what is needed is a formal proposal (a PEP, probably) of another voting system for SC elections (and possibly other elections, if we ever have any).


I won’t be writing a PEP at this time: I don’t know that there’s “a problem” to be addressed, and in the absence of realistic ballots to try things against it’s not possible to guess whether a different voting scheme would make any difference at all.

If it did, whether that’s a good or bad difference hasn’t even begun to be discussed. The good thing about “proportional” multi-winner schemes is that they tend to elect groups more similar in makeup to the electorate. But that’s also a bad thing about them. As a silly extreme, if 20% of Python voters are closet Nazis, do we really want a seat on the 5-person SC filled by a Nazi?

Which is an extreme way of saying that it’s not unreasonable on the face of it to want an elected group to be “better” than a random sample of the electorate. “Minority” is a numerical distinction, not a moral one, and proportional systems aim to give minority views of all kinds proportional representation.

I’m also uncertain of whether or not the current SC voting system has a problem and if an objectively better alternative exists, but I personally +1’d Antoine’s post because I don’t think the current discussion is going to lead to any real changes without a PEP. For anyone in favor of significant changes being made, putting together a concrete proposal with specifications about a potential new voting system seems to be the only way this can move forward at this point, instead of just being a conversational topic that just comes up every SC election.


I have no problem with “just” a conversation. If anyone did write a PEP at this point, I’d be strongly -1 no matter what it said, because we have no relevant data against which to judge it.

If people were willing to play along, here’s a feasible way to get some more-or-less relevant data:

Set up a dummy election on the Condorcet Internet Voting Service (which we used to pick the governance model). It allows downloading the raw ballots at the end. “Raw” means no voter identifying data, and the ballots are presented in a randomized order (no relation to time of submission).

I’d ask people to mimic, as best they can reconstruct, how they voted in the current SC election, but with a Condorcet twist:

  • Rank the 10 candidates from most (1) to least (10) favored. It’s fine to give any number of candidates the same rank, if you have no preference among them.

  • But there’s an additional fictional candidate, named “APPROVAL CUTOFF”. Rank every candidate you approved of above that fiction, and every candidate you didn’t approve of below it.

Given the last twist, it’s possible to simulate any way of running a multi-winner approval election.

And CIVS itself supports two Rube Goldberg-ish ways of doing Condorcet flavors of proportional representation scoring, so we could see how those worked out too.

This isn’t wholly realistic, but that can’t be helped: some number of voters will be “tactical”, trying to game the specific system in use. Their ballots will change accordingly. For an extreme example, in the aforementioned “Satisfaction Approval Voting”, ballots are weighted in a very simple-minded way: a ballot that approves of K candidates gets weight 1/K. So an approval of a candidate on such a ballot doesn’t add 1 to that candidate’s score, but only 1/K. That’s a dead obvious & strong tactical incentive to minimize the number of approvals you make.

The paper that introduced it spins that as “a feature”. They’re mostly concerned with multi-party legislatures, and argue that this obvious tactical ploy would give similar minor parties incentive to merge before the election. I’m not sure we can merge SC candidates, though it might fun to try :wink:.

And here’s a prototype of that idea. It’s a “public” poll and I will not be analyzing the results. This is so people can test drive it and point out things that are unclear.

If there’s enough interest in doing this for real, I’ll pursue seeing whether Ernest is able to set up a private poll and use the list of email addresses he compiled for the SC election to limit who’s allowed to vote.

Click here to vote


Seems clear enough to me. I didn’t bother clicking on “Submit” on the assumption that it’s just a prototype.

Please “Submit”. I can’t tell whether things were clear to a voter until I see the ballot they cast. A third of the ballots I’ve seen so far didn’t follow the instructions, which is far too high a spoilage rate to make this of much use. Alas, trying to bash a Condorcet UI into supporting Approval too is inherently confusing - and people were confused by the UI even when used for a Condorcet election (the governance model).


Fudge. Of the ballots collected so far, 2 are spoiled: they gave APPROVAL CUTOFF the same rank as at least one candidate. The UI is not WYSIWYG: while it appears to you there’s a total linear order, what you see on your screen is not captured in the ballot. Only the numerical ranks are, and there’s no way for me to guess in which order you saw candidates with equal numerical ranks. Note that CIVS shows you candidates in a randomized order to begin with, so I can’t either make an educated guess based on the initial order you saw on your screen.

Since it’s futile to expect everyone to understand instructions (and especially not computer geeks :wink:), I suggest changing the introductory text as follows, resolving ties to “approved”:

There’s a fictional candidate, “APPROVAL CUTOFF”. Please rank that one strictly below all the candidates you would approve of in an Approval election, and strictly above all the candidates you would not approve of. NOTE: the order you see on the screen is not captured in the ballot: only the numerical ranks are. When more than one candidate has the same numerical rank, it’s impossible to tell from the ballot in which order you saw them. So the “strictly” above is needed to resolve ambiguities. If “APPROVAL CUTOFF” does have the same numerical rank as a candidate, that candidate will be considered approved.


Point of interest, doing a quick stab with the 9 ballots recorded when I last looked.

In one of the ambiguous cases, APPROVAL CUTOFF was at rank 11 (dead last) along with 4 candidates. Under “tie means approved”, that would mean the voter approved of everyone. Since that seems unlikely (especially since in this case the voter gave ranks no larger than 6 to other candidates), I took “tie means not approved” for this case.

Then pure approval had clear 1st and 2nd place results, a 2-way tie for 3rd/4th, and a 4-way tie for 5th.

All of the 4 alternatives I mentioned picked the same, unique winning set. This matched one of the ways of breaking pure approval’s 4-way tie for the 5th seat.

With the current 13 ballots, pure approval picks the top 4 without incident, but then hits a 5-way tie for the 5th seat. The 4 alternatives I mentioned again all return a unique winning set of 5, and - incidentally - Satisfaction Approval Voting (SAV) also returns that set.

I’ll briefly explain what those alternative are. Contrast, e.g., with the brain-bustingly “huh?” description of CIVS’s proportional Condorcet schemes.

The approval schemes I’ll name PAV-NUMBER and SPAV-NUMBER.

PAV is Proportional Approval Voting and SPAV Sequential Proportional Approval Voting. They’re all deeply related.

SPAV is probably easier to understand at first:

    while a seat remains to be filled:
        pick a highest-scoring unpicked candidate 

The score of a candidate is the sum of that candidate’s current approvals, but from weighted ballots. When a ballot has w approvals that have already won, the ballot’s weight falls to 1/(1+h*w) where h is a global constant. So all ballots start at weight 1 (w=0 at first), and the first winner picked is the same as the top scorer under pure approval voting. The weights of the ballots that approved the first winner fall to 1/(1+h), and the other ballots remain at weight 1. The more winners a voter gets, the less influence that voter’s ballot has on remaining choices. That’s all there is to it.

h=0 is the same as pure approval voting (ballot weights remain 1 forever).

SPAV-1 picks h=1 (“Jefferson”) and SPAV-2 h=2 (“Webster”). Weights fall faster under Webster:

Jefferson: 1, 1/2, 1/3, 1/4, …
Webster: 1, 1/3, 1/5, 1/7, …

A problem with sequential schemes is that the way ties are broken along the way can have major effects on the outcome. For example, if one voter approves of A & B, and another of C & D, none have been picked yet, and A & C tie for highest score, what to do? If A is picked, B’s chances fall (because the ballot’s weight falls), while if C is picked, D’s chances fall.

So PAV-1 and PAV-2 are not sequential, but are computationally much more demanding. Instead each possible set of winners is given a score, and a set with maximal score is picked. The score of a set of winners is the sum over all ballots of the sum of the ballot’s weights “as if” each candidate the ballot approved from the winning set had been picked one at a time.

For example, if a ballot approved 3 winners, it would contribute 1 + 1/(1+h) + 1/(1+2*h) to the set’s score.

SPAV-n can viewed as a computationally efficient “greedy” approximation to PAV-n.

An interesting thing about the current 13 ballots: PAV-h and SPAV-h pick the same set for any h greater than 0 (note h is a non-negative real number here, not necessarily an integer). So “the math” detects a faction clear enough that the slightest concession to proportionality resolves pure-approval’s 5-way tie in favor of a unique winner.

1 Like

I’m going to end the experiment - thanks for playing! New votes stopped coming in.

We ended up with 16 ballots, which is a significant number of the relatively few voters we have.

Short course:

  • I won’t be pursuing this, at least not at this time.

  • The alternatives produced winning sets consistent with ways of breaking ties in pure approval. So, on this data, they’re neither obviously harmful nor obviously detecting major “factions” to counteract. To my eyes, when resolving ties the alternatives tended to favor newcomers over incumbents (“because” incumbents already won top spots, so ballots that voted mostly for incumbents lost weight, in favor of newcomer-favoring ballots that hadn’t yet won much).

  • The ballot spoilage rate is too high. If we were to do this for real, we’d need an Approval ballot, not try to bash a Condorcet ballot into fitting the purpose. I don’t know of a free service that allows collecting randomized anonymous Approval ballots (Helios - our current service - does not; and CIVS doesn’t offer Approval ballots).

  • SPAV-1 and SPAV-2 also produced ties along the way, and, as mentioned before, different ways of resolving those ties lead to different final outcomes. Annoying.

  • PAV-1 and PAV-2 (indeed, PAV-h for any h > 0) picked a unique winning set. While theoretically much slower then SPAV-h, comb(10, 5) is too small for a computer to care.

  • If someone takes this up later, I favor PAV-2 (and, if too slow, SPAV-2). The higher the h in S?PAV-h, the less likely to tie. In most literature h=1 is favored. But they’re mostly focused on political parties, and the higher h the easier it is for minority factions to get seats, and “too many” political parties is thought to gum up the works in legislative bodies. But for a relatively small Board or Steering Council, in the absence of political parties, the more diversity of representative opinion the better, according to me.

Some details:

5 ballots were “spoiled”, in the sense that APPROVAL CUTOFF had the same numerical rank as at least one candidate. In one case, every choice was ranked 11 - looks like someone logged in and hit SUBMIT without changing anything. In two cases, APPROVAL CUTOFF and at least one candidate were left ranked 11. In those cases, I assumed the tied candidates were not approved. In the other two cases, APPROVAL CUTOFF shared a rank, above 11, with at least one candidate. In those cases I assumed the tied candidates were approved (and simply happened to appear above APPROVAL CUTOFF on the screen).

Turns out I can’t see what CIVS’s proportional Condorcet scheme would do with this. It has two schemes, only one of which is relevant (the other is for cases where users only care about one of their top choices getting picked, like when choosing a menu of entrees for a group dinner - the user is only going to eat one of those). Turns out CIVS needs an entirely different kind of ballot for its relevant proportional Condorcet scheme, a ballot that needs much more info than just relative preference. Can’t reasonably make that up.

For what we have, pure approval (SPAV-0) picks 4 and then hits a 5-way tie for the 5th seat.

SPAV-1 picks the same top 3 in the same order, then hits a 3-way tie for 4th place. The 3 ways of breaking that tie lead to 2 different sets of winners in the end. Both are consistent with ways of breaking SPAV-0’s ties.

SPAV-2 again agrees with the top 3, then hits a 2-way tie for 4th place. The two ways of breaking that lead to the same 2 sets of final winners as in SPAV-1.

PAV-1 and PAV-2 (as well as PAV-1000000 and PAV-1/1000000) pick a single winning set, one of the final sets SPAV-2 can produce.

In all cases, the top 4 pure-approval winners were picked. The difference in who got the 5th seat.

So not much difference, IIUC.

1 Like