![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
![[site community profile]](https://www.dreamwidth.org/img/comm_staff.png)
Have a run-off option for polls
Title:
Have a run-off option for polls
Area:
polls
Summary:
It should be possible to have polls where users ranks options in order of preference (instant runoff or preferential voting).
Description:
Currently we allow for simple plurality voting (radio buttons) and approval voting (checkboxes), but not for preferential voting. As a polling theory geek (involved in the UK campaign for reform) this makes me sad.
We should be able to have polls where a list of options is given, and voters can rank them in order of preference. When the poll is closed, a counting algorithm can be run to reveal which option wins after losing preferences are reassigned.
The code, I think, partially exists for this on LJ as they used it for the advisorty board elections. I don't think it was a good implementation, but it was workable and could probably be improved.
Drawbacks are mostly coding and processing time, as calculating a result will require backened work, especially true if the current result is showing. The LJ implementation is poor and would need improving.
Advantages are that polling geeks like me are very happy, and users can use polls in a more expressive manner. Prefential voting is a good way to organise outings and similar, so good for a journalling site; eg ten people plan a meal together, do they want pizza, burger or that new veggie place, etc...
This suggestion:
Should be implemented as-is.
33 (71.7%)
Should be implemented with changes. (please comment)
6 (13.0%)
Shouldn't be implemented.
0 (0.0%)
(I have no opinion)
6 (13.0%)
(Other: please comment)
1 (2.2%)
no subject
no subject
no subject
I'm guessing, although the code is beyond my ability to read, that the calculation for a scales poll is easy, runoff polls aren't.
And there's no way I'm going to suggest a multiple winners runoff poll option, as while I'd love it, I suspect the calculation'd be a PITA (I have dedicated software to do it for elections)
no subject
no subject
no subject
no subject
no subject
But wouldn't feeding it to S2 make it harder to do post specific polls? Although you could code them with variables I guess.
no subject
no subject
I'm pretty sure we ripped that code out of DW already, so we'd be starting from scratch.
no subject
Backend code is so far beyond my current competence there's no way I could even look at it and judge, but I do know it's there, etc.
no subject
no subject
So the voter would see something along the lines of...
with [] replaced by a drop-down containing numbers 1 to 7 and a blank.
Back-end checking at vote time would ensure that the voter had specified a strict sequence, with no number repeated. Is it necessary to check that voting runs 1, 2, 3? Not strictly according to the mathematics, but it would make the coding so much easier.
The count is initially of first-preference votes, then re-assigning the least popular first-prefs to their second and so on until one option achieves a majority of initially valid votes. (Or a majority of effective votes.)
The code, I think, partially exists for this on LJ as they used it for the advisory board elections. I don't think it was a good implementation, but it was workable and could probably be improved.
The biggest problem in Livejournal's code was that they restricted people to a finite number of picks from a list of candidates, rather than numbering their votes. The handling of tied eliminations was also sloppy, eliminating all candidates involved in a tie; preference tends to be a countback method and/or conditional eliminations.
If this aspect is going to be done properly, it may be possible to provide a single transferrable vote to return multiple winners. Where would this have a practical application? "Two of these seven vowels are going forward to our Favourite Letter poll." One-winner transferrable vote is just a degenerate case of multi-winner.
Drawbacks are mostly coding and processing time, as calculating a result will require backened work, especially true if the current result is showing.
Coding is a one-time hit, processing is an ongoing matter. I would not be averse to cacheing the result, and only recalculating it after increasing intervals - for the sake of argument after 15 minutes, 30 minutes, 1 hour, 2 hours, 4, 8, 12 hours, and so on. Closing the poll forces a count, natch.
The LJ implementation is poor and would need improving.
The wheel has already been invented. Implementers may wish to consider the algorithm embedded in the source code for http://www.openstv.org/download as a starting point.
no subject
Agreed. I like the idea of caching the results if the process takes calculation as well.
Need to work on a 'how this would display' mockup at some point, but can leave that until it's agreed for implementation and put ideas into Bugzilla.