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](https://en.wikipedia.org/wiki/Single_transferable_vote) for the upcoming Board election cycle. The quota of choice is going to be [Droop quota](https://en.wikipedia.org/wiki/Droop_quota).
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](https://en.wikipedia.org/wiki/Droop_quota#Formula) 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 3](https://www.youtube.com/watch?v=YLz9c4sU_vM)** -- Good explainer video.
==== User stories & Requirements
===== //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 for an STV election
===== //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 !!TBD!!.
* 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: !!TBD!!.
* Voters do not need to mandatorily rank all candidates. They may rank as many candidates as they wish.
* Voters should be able to submit their ranked votes and receive a confirmation message when they do so.
* //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.