Motivation
To promote more diversity on the WMF Board, we want to use a voting method that allows for better representation of voices of minority groups. The Board Election Committee has decided to use Single Transferable Vote for the upcoming Board election cycle. The quota of choice is going to be Droop quota.
Formula
Step 1: Calculate the number of valid votes. This step will be done once the scrutineers have scratched out invalid votes.
Step 2. Calculate the Droop quota for the election. Given by: floor( valid votes / (number of seats being elected + 1 ) ) + 1
where floor refers to the integer portion of the number in the brackets. See https://en.wikipedia.org/wiki/Floor_and_ceiling_functions for more information.
Step 3. For each "rank" (1, 2, 3, 4 ....):
- Elect candidates who score more than the Droop quota (hence referred to as Dq).
- Surplus votes above the Dq are transferred on to the next candidate preferred by those voters.
- If no candidates reach Dq, the candidate with the lowest votes is eliminated and their votes are transferred to the next candidate preferred by those voters.
Example 1
Example 2
Example 3 -- Good explainer video.
User stories & Requirements
1. As an election admin I should be able to create a poll that will use the Single Transferable vote methodology
- Election admin should be able to select "Single transferable vote with Droop quota" as a choice of voting method while creating a new election
- Election admin should be able to enter the number of seats to be elected while creating this type of election
- Election admin should be able to input candidate names
2. As a voter, I should be able to rank candidates as per my choice in the voting UI for a Single Transferable vote
- Different voters should be shown candidates in different, randomized orders. The order of candidates should be consistent throughout the voting form.
- Default option is "Select a candidate". This string is translatable.
- Voters should be able to sequentially rank the candidates in their order of preference. For example, a voter can select their first, second and third preference but cannot select their first and third preference only. This would result in an error with the message: Preferences must be selected in sequential order. Please pick an option for: 2nd preference, 3rd preference (replace these by the missing preferences).
- No candidate can be selected twice. Once a candidate has been selected in a dropdown, subsequent dropdowns should show that candidate as disabled. If a candidate is selected twice in non-JS setups, this should result in an error and the form should not submit. The form data will not be lost. Error message: Options can't be selected multiple when ranking. Please change the option for: 2nd preference, 3rd preference (replace these by the duplicate preferences).
- Voters do not need to mandatorily rank all candidates. They may rank as many candidates as they wish (minimum one).
- Voters should be able to submit their ranked votes and receive the default confirmation message.
3. As an election admin, I should be able to produce a tallied list of results for an STV election
- The election result should output the tally of the votes with candidates elected in ranked order.
Mockups
Normal | Missing preferences error state | Duplicate preferences error state |
---|---|---|
Nice-to-have (if time)
- When a voter submits the vote there should be a confirmation message displaying the ranked list.