BrightSpots / rcv

Ranked Choice Voting Universal Tabulator
Mozilla Public License 2.0
71 stars 19 forks source link

Support electoral systems besides Instant-Runoff-Voting #579

Open Jorm94 opened 2 years ago

Jorm94 commented 2 years ago

Currently the only ranked choice voting election methods that are supported are Instant-Runoff-Voting. The ability to use other methods such as Ranked-Pairs, Bottom-Two-Runoff, or other Condorcet methods would help enable their adoption.

tarheel commented 2 years ago

Hi @Jorm94, thanks for the request!

Since the primary purpose of this project is to support IRV, it's unlikely that the core team will be able to prioritize the implementation of other methods, at least in the foreseeable future. But we'd potentially be open to providing some support if someone wanted to fork the project or perhaps even submit PRs directly to this repo.

Jorm94 commented 2 years ago

Thanks for the response. I didn't realize that it was meant to only support IRV and not other Ranked Choice methods. Is there any possibility of supporting IRV-BTR (Bottom-Two-Runoff) in the future? I came across this through the Ranked Choice Voting Resource Center and was hoping it could potentially be modified for that. I would be willing to help, but only have limited experience with simple Python scripts.

tarheel commented 2 years ago

I don't think it would be very hard to add support for IRV-BTR, but yeah, it would require someone who's comfortable with Java and has gotten familiar with this codebase. What exactly is your intended use case?

Jorm94 commented 2 years ago

I'm advocating for RCV to be implemented in my city elections primarily (also working on state and county elections to a lesser extent). I believe most of our city council supports the idea, but it still involves many processes potentially involving county and state officials as well. Right now I'm working on gathering as much supporting material to make convincing the needed people easier. We use ES&S tabulators, so finding this existing software is great and I'm appreciative of all the work that has gone into it. I would just much rather use IRV-BTR if possible since it is a Condorcet method and would have resolved the problems that standard IRV has such as the Burlington 2009 election. Unfortunately, I don't know that there is any software that currently supports it, so it would be that much harder to sell to all the necessary officials.

tarheel commented 2 years ago

That's cool. Which city are you in?

Jorm94 commented 2 years ago

Lincoln, Nebraska.

tarheel commented 2 years ago

Are you familiar with the voting equipment certification standards for your city and state? That part is often a much bigger hurdle than the actual tabulation software implementation, unfortunately. But if having a proof of concept (i.e. uncertified software that implements the BTR algorithm) will advance your cause, it shouldn't be too hard to add, as I mentioned.

Jorm94 commented 2 years ago

I'm not familiar with the requirements. I've been reaching out to our election commissioner with questions and he mentioned that any RCV methods would require new software that would have to be certified by the secretary of state. I haven't heard back from him yet, but I can try and get more specifics from him and potentially the SoS if need be. Thanks for being willing to help with an implementation if need be. Just knowing that there's potential for it is probably enough for right now. I'll get back to you once I know more about the certification process and requirements.

endolith commented 2 years ago

The simplest to implement would probably be Baldwin method, which has the same procedure as IRV, but fixes a lot of its flaws by eliminating the candidate(s) with the largest sum of rankings, rather than the candidate(s) with the lowest first-preference rankings (which suffer from vote-splitting, etc.)

I'm not a Java coder, but it looks like it could be done by copying the doRegularElimination function and replacing this line?

https://github.com/BrightSpots/rcv/blob/480166a32d3782988b233042dc3e108588245654/src/main/java/network/brightspots/rcv/Tabulator.java#L619

and inserting the new function around here as an optional pathway:

https://github.com/BrightSpots/rcv/blob/480166a32d3782988b233042dc3e108588245654/src/main/java/network/brightspots/rcv/Tabulator.java#L214

endolith commented 1 year ago

Baldwin's method has been re-invented under the name "Total Vote Runoff", by Nobel laureate Eric Maskin and election law scholar Ned Foley, who recommend it as a fix for the problems of Hare RCV in jurisdictions that have already adopted it:

The prominence of Hare's method in the US seems primarily due to "momentum" / prior use, so adding support for other RCV variants in software that allows an easy upgrade path would likely help to get the better methods adopted.

rrojas350 commented 1 year ago

Thanks for the info endolith. Development on RCTab is currently largely driven by external factors and while adding an option for Total Vote Runoff wouldn't be a bad idea, it more than likely wouldn't be added until a jurisdiction adopts TVR.