Ranked Pair Polling
Suggested By: JenniferForUnity
Justification:
Arrow's Impossibility Theorem proved that building the perfect voting system off of nothing but an expression of voter prefrences in a "for sure" manner was impossible. However, the standard way of voting (vote your favorite, the outcome with the most votes wins) is understood to be a very very bad voting system by mathematicians, economists, and political scientists relative to other (less imperfect) voting systems.
The goal of this feature is to give communities across the Drupal-using-world a better option that the old and bad "plurality of favorites" algorithm.
Implementation Plan:
The hard part of implementing this feature is getting a preference ballot interface so that when people vote they don't just choose their favorite outcome, they give a list of preferences, from "my favorite" down to "my least favorite".
Once an interface like this has been completed it can be hooked into a variety of voting counting methods.
The best vote counting method (in the opinion of JenniferForUnity) is Ranked Pair Voting. Another, (probably inferior, but it depends on your political goals) system is Instant Runoff Voting.
If more than one programmer is interested in working on this feature:
- One could develop the ballot interface (this person would potentially have to coordinate with up to three others who depended on their work).
- Another could work on tabulation of the ballot's outcome according to the Ranked Pair and output of the results.
- A third could help the second by working on the results output explaiing who won and why.
- Another sub feature that could be worked on in parrallel by a fourth (and possibly a fifth with the task broken up by "counting" and "output") pair (and we're getting into the territory of nice but not crucial here) would be to implement proportion representation on top of the preference ballots. Proportional representation allows the users to vote their preferences and gives victories to the "top N" options rather than the "top 1". Such a feature would be useful for electing people to councils that represented many of the most important opinions.
- A sixth (and maybe seventh) programmer might work in parrallel to tabulate the preference ballots according to the instant runoff algorithm (IRV) which is inferior to Ranked Pairs (again, depending on a value judgement) and to gve an output explaining what happened in each "instant runoff round".
Electowidget API
The possibility to use the Electowidget API should be considered. It is a very well thought out API with which one could create polls with just any voting system. By using the said API, polishing it and making a Drupal implementation of it, one would have all the voting methods available at one go.
advantages
- The work on it will benefit all php-based CMS, not only Drupal.
- The core is already functional: how to store ballots and compute the winner according to different algorithm.
- It already supports a wide range of voting systems.
disadvantages.
- creates another dependency on a third party API.
- Augustin would have to dig out his extra code and publish it (a patch to the already published code).
Response: I am interested in such integration for Decisions.module eventually, because I agree that the goal of a CMS-neutral voting algorithm system is worthwhile. However, adding a dependency to a poorly-maintained third party API isn't exactly helpful - it will inhibit progress in the long run. I just checked out the dev mailing list and Electowidget appears to be orphaned. If at some point in the future it resumes active development with solid documentation I'd be willing to revisit the issue, but for the time being Electowidget integration isn't going to happen. ChrisKennedy
Additional Info:
At least one implementation is out there: http://www.demochoice.org/. Perhaps a developer of previous implementations could help with algorithms.
-- Gabe
That would be an excellent model for an interface... but I'm not so happy with the ballot tabulation. DemoChoice.Org uses Instant Runoff Voting (IRV) which can easily ignore a centrist candidate that gets (for example) no one's first choice but everyone's second choice. Ranked Pairs (but not IRV) finds what's called the "Condorcet winner" (the option that wins pairwise against every other option) if there is one (which is always a mathematical possibility). Here's a page comparing the two methods. I know that IRV is definitely *popular* (it's easy to explain and has a number of properties that make it sound innocuous in terms of its practical effects on presidential politics - it's popularity is why I suggested it as a project for extra programmers if people liked the idea), I just don't think it's the thing someone would like after spending a lot of time thinking about voting algorithms and their mathematical properties. For example, the Debian community (which is about as ideologically geeky as you can get) uses this python script implementing Ranked Pairs to tabulate its votes.
-- JenniferForUnity
This past semester I implemented Borda Count and IRV within phpSurveyor for the LBJ School's Graduate Public Affairs Council elections. Implementing a Cordorcet voting system has been on my todo list for several years and this event could be a good time to do it. As long as we're working on it, I would ideally prefer to implement CPO-STV, which is a unified method of Condorcet (I would go with Ranked Pairs as well for the specific algorithm) and proportional representation. -- ChrisKennedy
After some investigation, it looks like the Advanced Poll Module would be the best way to implement this functionality. They already have IRV implemented supposedly. I'm going to play around with the module a bit and see how it works. -- ChrisKennedy
Hope folks build on the existing Drupal voting infrastructure... specifically the voting API. This groups on groups.drupal.org is a good place to find out all the ins and outs http://groups.drupal.org/voting-systems I know Chris is a leader in the voting stuff, but other folks might want some context. --DavidGeilhufe
Okay I've tried out the Advanced Poll Module and started working on it - it's not too shabby actually. Plurality works and IRV somewhat works. -- ChrisKennedy
Regarding proportional representation: This would be similar to the skating system of ranking (which got a bad name because skaters were given scores that translated to ranks, which was a great way for certain groups of people to mask blocked votes, but anyway). This system is also used in ballroom dance competitions (of all things). The system is described here. It handles all of the various levels of confusion that occur in ranking based voting systems. Lines through Rule 8 would apply as 9-11 are reserved for multiple dance competitions.
These would be helpful if you are looking to implement a tool to solve a number of problems and wanted to gauge the best single tool for the multiple issues, or the ranking of priority (given that all of the problems are of equal priority). (If this is completely off topic, please, chunk it.)-- Michelle
Comments (0)
You don't have permission to comment on this page.