Election Officiating Guidelines
Pick election officials
Election officials should not run for election themselves. Ideally they should also have no interest in the election outcome (to preserve neutrality) but that is generally harder to achieve.
Set up the election
You should create a wiki page describing the election, the election official(s), the timeline, who can apply, who can vote and the method that wil be used for voting (and breaking ties, see below).
See for an example: PTL_Elections_Fall_2013
This page should be advertised on the appropriate mailing-list.
Generate a list of voters
Run `git log --pretty=%aE --since '1 year ago' | sort -u` - for whatever time frame you need to generate your voters list send the list of voters to the election officator, or confirm with project the list is accurate (%aE pretty format should be used to consider .mailmap).
If you receive a .csv file from someone with root access in infra, you may need to run `cut -d, -f3 <input_file>.csv > <output_file>.txt`. Check the file first to see if it has raw email addresses or is in a .csv format which would include their name on the line with their address. The voting application won't accept their name as part of the upload file.
NOTE: for official (PTL, TC and Board) elections there is an extra step that requires XXX. The email addresses in commit logs canonicalised to be the primary email address and that address is used to validate that the commiter is a CLA signer.
For elections with open candidates, we generally use a self-nomination mechanism (eligible candidates who want to run send an email stating their intent, and potentially describing their platform, to a per-determined mailing-list). This avoids having to confirm candidates when they are nominated by third-parties, which is a painful and time-consuming process.
You should allow sufficient time (at least a week) for self-nominations.
Running the election itself
Get Familiar with the Voting Application
Create the Poll
Then set up the poll: http://www.cs.cornell.edu/w8/~andru/civs/civs_create.html
- Name of the Poll
- Name of supervisor (election official)
- E-mail address of supervisor (election official)
- Day and time you plan to stop the poll - manual ending
- Description of poll (should not include the names of the candidates, as their apparent ordering would favor some of them)
- Names of Candidates (optionally with their irc name)
- Upload file of raw email addresses from gerrit of eligible voters (see generate a list of voters above) - 1000 voters maximum.
- Check the Enable detailed ballot reporting box in the options section
- Do NOT check "Make this a test poll: read all votes from a file." as this will prevent you from running a poll.
You should allow sufficient time (at least a week) for voting.
Note: CIVS uses the vote admin locale to generate voting emails. For example, if you start the election from a Firefox in a French locale, you'll send out voting links emails in French. To avoid that, please set your browser locale to US english before you start an election.
Run the Election
After you create the poll, civs will send an email to the address of the supervisor. The email will contain a link to a webpage which allows the supervisor to conduct the election. There is a button to start the poll, which once started becomes a button to end the poll. All the information contained in the poll is there, except the list of voters, civs doesn't save the list. There is a text box to add email addresses for additional voters. Save the link from the email, civs has no way to get you another one if yours is lost.
Note: If a ballot gets lost, you can re-enter the email address that is on the original voter's list and the system will recognize the email address and send a new ballot to that email address without risk of that voter being able to vote twice. The email address has to match the email address on the original voter's list.
Condorcet voting may generate ties. We advise to break them using Governance/TieBreaking.