How to start a vote

In the good old days, there were a lot of GRs, all the time. This meant that it was easy to remember how to start a new one, and it was never written down. Now, that's not true, so this is a handy cheat-sheet with the steps to follow to start a vote.

Web pages

Note, this is quite a lot of work. See Neil, Kurt or web team if you need help.

You need to set up a new vote page, under webwml in webwml/english/vote/YEAR/vote_number.wml. It's best to copy another vote and use that as your template. The number should be increased by 1 for that year.

Change the pagetitle and status tag at the top, and update the rest of the page.

Commit the changes, and ask nicely on #debian-www for a partial rebuild of the vote pages. While you're waiting for this, set up devotee.

Devotee setup

Next, on, in /srv/, run sudo -u secretary setup/dvt-setup gr_votename. This will create you a folder in data/gr_votename, with some files/folders in there




Work directories where mail gets processed, see below


Empty folder. Possibly for requests for ballots, though probably legacy


Empty folder. Probably legacy


Logs of GPG output on mail. msgNNNNNN.raw is there if there's no GPG ballot. msgNNNNNN.body if there's a rejected sig for whatever reason. msgNNNNNN.body.good if it's a good signature


results and dotfiles archived regularly during the vote


temporary working directory


Where the messages get placed after spool

Crontab environment variables

Crontab that processes incoming mail


Crontab that generates the stats


A concatenation of debian-keyring.gpg and debian-nonupload.gpg from /org/ Regularly updated.


The main configuration for this vote, see below for more details


The email forwarding file for when people mail in


A lock file. Unclear how it's used


A copy of the setup script you used above. Unclear why a copy of this is taken


Ends the vote, disabling new votes, generates the final stats and emails out the results


Installs the above cronjobs and adds a mail alias for the vote


Generates stats pages as the vote goes on, and final stats once it's finished.

Mail gets processed in the follow flow diagram: spool -> work -> sig -> check -> ldap -> tally -> body -> ack It can go to nack at any stage. This tells you if/why a vote failed to process. The underlying reason is that the voter in question is probably using Enigmail.

The next two files that need to change are devotee.conf, and a ballot.


Edit the below to match your ballot:

# arch-tag: d495b767-7754-4e61-80ea-8b31c07f3595
# Sample configuration
Top_Dir = /srv/;
Pass_Word = gr_votename;
Vote_Name = gr_votename;
Vote_Ref  = vote_XXX;
Secret = 0;
Encrypted_Ack = 1;
Vote_Taker_Name  = Debian Project Secretary;
Vote_Taker_EMAIL =;
UUID = 57dd4d7c-3e92-428f-8ab7-10de5172589e;
Majority_1 = 3;
Majority_2 = 2;
Majority_3 = 1;
Majority_4 = 1;
Majority_5 = 1;
Majority_6 = 1;
Majority_7 = 1;
Start_Time = 18 Oct 2014 00:00:01;
End_Time = 01 Nov 2014 00:00:01;
Option_1 = ;
Option_2 = ;
Option_3 = ;
Option_4 = ;
Option_5 = ;
Option_6 = ;
Option_7 = ;
Option_8 = Further Discussion

Create a key pair

In the data directory, run gpg --homedir . --gen-key. Remember to sign the public bit with your key.


You need to add a ballot to /srv/ called gr_votename.blt. A sample is in setup/ballot, remember to replace the options and the UUID with the one from devotee above.

Mail d-d-a

Once the web pages are up and running, then you can mail d-d-a with the vote page.

Draft ballot

You should send the draft ballot to debian-vote a few days before the vote starts.

Run the vote

You will probably need to start the vote manually, with start-vote gr_votename. You also need to create an at job to end the vote, with /srv/ gr_votename. Send the ballot to d-d-a, and make sure the Reply-to: is set to the vote address. Send a second call for votes with a week to go, and a final one 48-36h before the end.