How to Create an Election

How to Create an Election

Most voting done is carried out using the cordorcet voting method, which uses ranking to provide a more robust voting methodology. This is used for the election of all sorts of councils and boards, but most notably the Community Council is elected by the Ubuntu Members. This document covers how that method is done.

Basic Setup

  1. Go to the Condorcet Internet Voting Service and fill out the required info.

  2. Name: Something like “Ubuntu Community Council election 2017”

  3. Supervisor: The name of the council/board running the election (e.g. “Ubuntu Community Council”).

  4. Supervisor email: The mailing list of the council/board running the election.

  5. Time to close: should be about 2 weeks out.

  6. Description: including an HTML link to the wiki/info page of the council/board. Give basic info, like how many candidates will be selected, how long the term will be, and to remind them to rank all candidates in order of preference. Example:

    Appointed for a period of two years. <a href="https://wiki.ubuntu.com/LoCoCouncil" target="_blank" rel="noopener noreferrer">Local Communities Council (LoCo Council) Wiki</a>
    <br />
    <br />
    Please rank all candidates in order of preference.
    
  7. Candidates: one line each, including an HTML link to their wiki/Launchpad (it can accept this in a file). Example:

    Bhavani Shankar <a href="https://launchpad.net/~bhavi" target="_blank" rel="noopener noreferrer">(~bhavi)</a> <a href="https://wiki.ubuntu.com/BhavaniShankar" target="_blank" rel="noopener noreferrer">(introduction)</a>
    Diogo Constantino  <a href="https://launchpad.net/~diogoconstantino" target="_blank" rel="noopener noreferrer">(~diogoconstantino)</a> <a href="https://wiki.ubuntu.com/DiogoConstantino " target="_blank" rel="noopener noreferrer">(introduction)</a>
    Lucas Kanashiro  <a href="https://launchpad.net/~lucaskanashiro" target="_blank" rel="noopener noreferrer">(~lucaskanashiro)</a> <a href="https://pastebin.ubuntu.com/p/qpxwJb5pD6/" target="_blank" rel="noopener noreferrer">(introduction)</a>
    Mattia Rizzolo  <a href="https://launchpad.net/~mapreri" target="_blank" rel="noopener noreferrer">(~mapreri)</a> <a href="https://wiki.ubuntu.com/MattiaRizzolo" target="_blank" rel="noopener noreferrer">(introduction)</a>
    Michal Kohutek  <a href="https://launchpad.net/~kohutek" target="_blank" rel="noopener noreferrer">(~kohutek)</a> <a href="https://discourse.ubuntu.com/t/michal-kohutek-tylnesh-membership-application/40115" target="_blank" rel="noopener noreferrer">(introduction)</a>
    Youngbin Han  <a href="https://launchpad.net/~ybhan" target="_blank" rel="noopener noreferrer">(~ybhan)</a> <a href="https://wiki.ubuntu.com/YoungbinHan" target="_blank" rel="noopener noreferrer">(introduction)</a>
    
  8. Number of winning candidates: an integer stating how many seats are to be filled with the election.

  9. Make sure the poll is private.

  10. Don’t check anything else.

  11. Hit the “Create Poll” button. The supervisor will receive an email to manage the poll.

Adding Members

  1. Make sure to get the poll email confirmation out of moderation.

  2. Click on the link in the poll confirmation.

  3. Click the “Start Poll” button.

  4. Using lp-election-helper, run lp-election-helper ubuntumembers > members.

  5. Add the list to the poll (the members file works).

  6. Click the “Add Members” button.

  7. On the next page, CIVS gives you a list of people it could not contact because they have not activated their email address yet. Download the CSV and keep it for later.

  8. Create a post announcing the election on Discourse.

  9. Take the CSV file with non-registered voters and email these people separately to ask them to activate their email address.

    Example email:

    You are eligible to vote in the Ubuntu LoCo Council elections. However, you need to activate this email address using the following link: https://civs1.civs.us/cgi-bin/opt_in.pl
    
    * If your launchpad email address is public, use that address to register.
    * If your launchpad email address is not public, use <username>@ubuntu.com to register.
    
    For more information, please take a look at the announcement post on Discourse: <discourse-url>
    

Finishing Touches

  1. Post the Fridge and perhaps any relevant mailing lists informing members of forthcoming email (especially the fact it’s coming from civs@cs.cornell.edu) and how to contact if they don’t get the mail.
  2. Monitor the poll. If everyone has voted or if it is time to end the poll, the “End Poll” button needs to be clicked.
9 Likes

In running the recent pair of DMB elections I hit and addressed a few issues. I’ve documented the DMB process here: https://git.launchpad.net/~ubuntu-dev/+git/election-tools/tree/README.DMB

For example, CIVS is now “opt-in” so you have to reach voters independently to ensure that they get their ballot, and even if they know they have one, they need to know which email alias to fetch it against.

The documentation also includes some details of how the election is run that affect the electorate, so feedback to improve the process is appreciated.

There’s also some code duplication here: lp-election-helper (I only learned about this today) on github.com/YokoZar vs. election-tools in launchpad.net/~ubuntu-dev. Maybe there’s scope from combining these. election-tools is based on https://code.launchpad.net/~stefanor/+junk/election-tools which dates back to 2012. I moved it to git and put it under ~ubuntu-dev a while ago (because for TB and DMB elections, ~ubuntu-dev is the electorate).

I hope writing this up will help get things more coordinated and consistent over time.