Should we consider Ranked Choice voting for SC elections?

Speaking for myself:

Summary

I propose changing our Steering Council election process from simple approval voting to a ranked choice system to better capture voter preferences and provide more meaningful feedback to candidates. I want your input to know if this is worth pursuing.

Background

Our PEP-13 voting method has remained unchanged since late 2019. While functional, the simple approval voting system has limitations we should address.

Current Limitations

  1. No Preference Expression: Voters can’t express preferences among approved candidates.

  2. Encourages Strategic Voting: The current system incentivizes limiting approvals, potentially distorting true preferences. Here’s why:

    • In simple approval voting, each approved candidate gets equal weight.
    • To give stronger support to preferred candidates, voters may withhold approval from candidates they actually find acceptable but less preferable.
    • This creates a dilemma: approve more candidates and dilute the impact of your vote, or approve fewer to strengthen support for top choices but potentially harm acceptable alternatives.
    • As a result, voters might not express their true preferences, instead engaging in strategic approval to maximize their vote’s impact.
  3. Limited Feedback: Candidates receive only binary “approval” feedback, which can be discouraging and doesn’t reflect actual voter sentiment.

Proposed Solution: Ranked Choice Voting

Ranked choice voting would allow voters to rank candidates in order of preference, offering:

  1. Better Preference Capture: Voters express their full range of preferences.
  2. Less Strategic Voting: Reduced need to “game” the system by selective approval.
  3. Nuanced Feedback: Candidates receive more detailed information about their support.

Implementation Considerations

  • Voters would rank only as many candidates as they wish.
  • The PSF already handles the implementation and administration of the current SC voting process. They would likely extend this role to manage the ranked choice voting system, given sufficient notice.
  • I would not assume such a change is possible for this years election.

Historical Context

While we used ranked choice voting to select our governance model (PEP 8001), as far as my limited searching could find, we haven’t discussed it for Steering Council elections. Please link to more context if that isn’t true.

Next Steps

  1. Gather community feedback on this proposal. (that’s you!)
  2. If there’s sufficient interest, conduct a straw poll here.
  3. If supported, draft a formal proposal to vote to adjust PEP-13’s voting method.

Questions for y’all

  1. Is this change worth pursuing?
  2. What benefits or drawbacks do you see in switching to ranked choice voting?
  3. Should we consider other voting methods? If so, why?

I encourage everyone to share their thoughts. I wouldn’t want to move forward with this without obviously clear support.


My take: I don’t believe it is knowable if this would change the outcome of our elections or not, but if nothing else it should be a better experience for voters and candidates alike.

While the topic has come up in passing at times, I have not discussed this proposal with the rest of the steering council. The SC doesn’t decide this anyways - thus taking it directly to all of you.

16 Likes

For the PSF Board elections (many candidates these days, most of whom I don’t know personally), I genuinely appreciate the simplicity of Approval voting (I’m merely being asked to answer the question “Do I think this individual would serve the PSF well as a Director?” several times rather than trying to assess the candidates relative to each other). The scope of the PSF Board’s role is so broad that different candidates are likely to offer advantages in different areas that can’t readily be reduced to a linear preference order. If I had to rank them, I’d be tempted not to vote at all.

For the SC, deciding on a preference order amongst my approvals seems much more feasible, since the scope of the role is narrower. Being asked to supply that ranking explicitly wouldn’t harm my willingness to vote.

So I guess I’d be a +0? I know I sometimes skip voting “Approve” on SC candidates that I think would be fine in absolute terms, but would rank below my approved candidates in a preferential list, so I do see potential benefits in terms of election outcome clarity.

With optional preferential voting, those less preferred candidates would still get a ranking, with only folks that I genuinely didn’t feel were good SC candidates not getting ranked at all. (I don’t think compulsory preferential voting would be a good fit for that reason: without the option of letting our votes exhaust, we wouldn’t have a way to express “I don’t think these candidates are a good fit for the role”)

1 Like

Standard RCV isn’t a viable choice for the Steering Council elections. It’s a single-winner electoral system–but the Steering Council elections need to produce five winners. We’d need a multi-winner variant of RCV, perhaps Single Transferrable Vote, aka STV.

Anyway, I’m a firm -1 on this. I think RCV is basically awful. Voting in an RCV election is awkward, its tabulation is overly complicated, and it’s actually terrible for outsider candidates (read: third-party candidates). I suppose it’s a small improvement over “plurality” voting (aka “first-past-the-post” voting). But that’s faint praise indeed. And I’d be very surprised if STV was a big improvement over RCV.

I’m an amateur electoral system enthusiast. I’ve done a bunch of reading on the subject, and watched a bunch of videos too, and I’ve formed my own opinions… though I wouldn’t call myself any sort of expert. The most illuminating thing I’ve seen on this subject is this 6-minute video from Mark Frohnmayer. (Warrning: Mark is wearing a shirt with a swear word on it, sigh.) In the video, Mark uses animated visualizations to demonstrate how bad most voting methods are. There’s a Python connection here: the visualizations are Yee diagrams, an invention of Python’s own Kai-Ping Yee. Yee diagrams are an excellent visualization for analyzing electoral systems; animating them makes them even more revelatory. The video makes it clear: of the four systems examined, RCV is easily the worst, collapsing into risible incoherence with only four candidates. Again, I can’t imagine STV is any better.

If I understand correctly, we currently use a form of multiwinner approval voting called Block approval voting to elect the SC. And approval voting is really pretty good! Given the choice between “stick with our existing system” and “switch to some form of RCV” I’d definitely prefer the former.

If we do want to switch to an even better electoral system, I suggest STAR Voting, specifically its official multi-winner variant Bloc STAR. STAR Voting is a big improvement over RCV–its ballot is simpler and easier to get right, and tabulation is straightforward. Sure, STAR Voting has its share of theoretical flaws, as do all electoral systems. But in practice it seems to produce the best results, in terms of producing results that make the most voters happy. I think of STAR Voting as the “practicality beats purity” electoral system.

The cutest argument for STAR Voting is this 7-minute video, in which stuffed animals experiment with different voting methods. If you’re interested in more rigorous arguments, I suggest this page of articles at the STAR Voting website. It includes several articles on RCV vs STAR; I liked this one best.

As it happens, I wrote my own election tabulation library (in Python, of course!) specifically so I could play with STAR Voting:

My starvote library supports STAR Voting, Bloc STAR, and several proportional representation voting systems. I wrote it for fun and to learn more about electoral systems. I’m pretty sure it works fine, though AFAIK it’s only seen a teeny-tiny amount of actual use.

p.s. If I understand correctly, the pedantically-correct term for RCV is Instant Runoff Voting, or IRV. At least, that’s what Wikipedia and Electowiki both call it. But I know what you mean when you say RCV.

p.p.s. Mark Fohnmayer is the father of STAR Voting. So, sure, it’s unsurprising his video concludes STAR Voting is best. I still find his facts compelling.

15 Likes

No strong opinion from me. As long as the voting method is reasonably democratic then I’m happy. I’ll note that known-to-be-democratic countries such as France and the US (I’m a French citizen) make with much worse election methods than we currently have here :slight_smile:

1 Like

If you want a ranked voting system, Condorcet method - Wikipedia is probably a better approach than Instant-runoff voting - Wikipedia (aka as RCV or IRV or Hare).

It shows similar (good) properties to our current Approval voting - Wikipedia (see Ka-Ping Yee’s resources posted by @larry), while allowing voters to not only approve candidates, but also provide their own ranking, if they choose to do so.

We’re using this for the board elections of the EuroPython Society via the anonymous Condorcet Internet Voting Service.

The only problem we faced was ties on the last ranked position. The Schulze method we used for completion produced such a result in our last election (this is rather rare to happen).

Since you can’t have more candidates elected than there are positions available on the board, you then have to come up with some sort of resolution. This method should be predefined to not cause issues.

The above system outputs the results under multiple completion systems, so a possible solution is to define a predefined ordered list of completion methods to then turn to in case of a tie.

FWIW, I don’t have strong opinions either way. Both (non-ranked) approval voting and (ranked) Condorcet voting are fine, IMO. I don’t know anything about star voting, so can’t comment. RCV can result in rather serious issues (see e.g. the Wikipedia article or the Ka-Ping Yee resources), though, so I wouldn’t be in favor of that particular method.

6 Likes

I don’t know much about voting systems, but I know someone who does. Unfortunately he’s currently banned. Maybe we can wait until his 3-month ban expires and ask him for advice?

47 Likes

Could we perhaps get advice about governance from the The PSF or the wider Python community? Our group is not the only community that has held elections.

For example, I find it informative to learn about how the EuroPython Society handle their election, from Marc Andre’s post above. Perhaps other community leaders can share their experience and advice as well if we ask them?

5 Likes

My guess is you’d also find STAR Voting to be fine. STAR is an acronym, Score Then Automatic Runoff. It runs in exactly two rounds: a round of Score voting, followed by a round of what I think of as “preference voting”. And Approval voting is equivalent to Score voting if you restrict the choices to 0 and 1. So STAR Voting is like a more nuanced, expressive version of the Approval voting you already like.

2 Likes

As someone who spent… a significant amount of energy posting about electoral systems the last time this came up… I honestly suspect the answer is that it basically doesn’t matter which system we choose.

The community of core devs is so small and tight knit that I suspect you could just random.choice between candidates and get approximately the same overall outcome. The places where I think that’s unlikely to be true are the extreme edges (someone who is unambiguously more or less desired than anyone else), and I suspect that any multi winner strategy is going to handle outsize preferences like that alright.

11 Likes

4 posts were split to a new topic: Should we expand the voter pool for the SC?

Yes that is what I meant. I’d assumed w/o research that you’d just run IRV loop multiple times with the previous winner removed to pick multiple candidates out of it. Thanks for all the links (and stuffed animals)!

Regardless, I think your higher level point is right: I’m looking for something that helps capture preference better than our current system.

I don’t want to feel the annual need to keep suggesting that people intentionally trim their ballot to not reflect everyone they’d be happy with in order to put more weight on their top choices. If there’s no way out of that at our small scale then :person_shrugging: the default is to just stick with what we’ve got.

I’ll read up (or watch puppet shows?) on STAR.

I believe Concordet was a topic I saw mentioned in the past threads with Tim running experiments on that several years ago that weren’t producing wildly different results? We’re in no rush on this - it wouldn’t be resolved this year.

1 Like

For context, here’s the 2018 (pre-PEP-13) thread with pages of discussion on multi-winner voting systems: Python Governance Electoral System - #40 by dstufft

2 Likes

Condorcet was discussed a lot at the end of 2018, while the Python Language Governance (future PEP 13) was being discussed. Here are a few links, but there are more if you search for “Condorcet”.

PEP 8001: Python Governance Voting Process proposed to rank SC candidates. My PEP 8015 proposed the Schulze/Beatpath/CSSD variant of the Condorcet method to elect SC members.

Python Governance Electoral System discuss Approval versus Condorcet. Voting system characteristics discussion also discussed Condorcet.

PEP 13 chose Approval, it was announced in Amendment to PEP 13 to allow approval voting. LWN wrote an article about SC, PEP 13 and voting method: Python elects a steering council.

4 Likes

We use Ranked Choice Voting where I live to elect our city councilors. In practice, it provides voters to build consensus around who is the best choice. It also often allows for non-majority perspectives to gain a single seat at the table if enough people are moved to give a non-majority candidate their “number one vote.” I think it could allow us to get closer to expressing the multiplicity of community sentiment than the current approval voting system does.

3 Likes

@ClayShentrup has provided some relevant research links in: Approval voting vs instant runoff voting, condorcet, etc

Apparently (based on Clay’s summary) the evidence that the preferential voting systems actually capture preferences better than the simple two level “more preferred”/“less preferred” mechanism used in approval voting isn’t that strong, so it’s hard to justify their complexity when approval voting is easier to explain and resolve.

Maybe the fact approval voting lumps +0, -0, and -1 votes into a single “not approved” category is a feature rather than a bug to be fixed?

2 Likes

Hm, I thought we had moved on from instant runoff to STAR.

My own variant would use the STAR algorithm but require voters to give 1-5 stars to each candidate. The current system would then be equivalent to giving either 1 or 5 stars (which is what is how most users tend to use on review websites :-), except the two-phase behavior of STAR encourages “honest” voting as a bonus. I find STAR super easy to explain and understand – unlike anything with “Condorcet” in its name, which to almost everybody (certainly to me) seems to invoke feelings of complexity.

10 Likes

I have created two follow-up topics:

See also this topic for more on STAR voting vs. the others:

3 Likes