Open Jorm94 opened 3 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.
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.
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?
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.
That's cool. Which city are you in?
Lincoln, Nebraska.
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.
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.
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?
and inserting the new function around here as an optional pathway:
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.
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.
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.