Jump to: navigation, search

Difference between revisions of "Governance/TCElectionsFall2012"

(Added the process for breaking a tie using the example election data)
(fixed hash, as generated with the namespace set to openstack.org)
Line 124: Line 124:
  
 
<pre><nowiki>
 
<pre><nowiki>
   52752184-527a-53b7-8472-8050d6b3643d
+
   e9ca327a-7deb-5919-a207-5d519c2d7837
 
</nowiki></pre>
 
</nowiki></pre>
  
Line 131: Line 131:
  
 
<pre><nowiki>
 
<pre><nowiki>
   $ ./bin/toss 52752184-527a-53b7-8472-8050d6b3643d Carol.Smith,Dave.Doe
+
   $ ./bin/toss e9ca327a-7deb-5919-a207-5d519c2d7837 Carol.Smith,Dave.Doe
 
</nowiki></pre>
 
</nowiki></pre>
  

Revision as of 21:33, 27 August 2012

Election officials

Election officials cannot run for the election they are an official for. Proposed election officials are:

  • Duncan McGreggor
  • Stefano Maffulli
  • Thierry Carrez

PTL Elections

Timeline

  • Aug 30 - Sep 5: Open candidacy to PTL positions
  • Sep 7 - 13: PTL elections

Elected positions

All seats are elected for 6 months.

  • Nova PTL (one position)
  • Swift PTL (one position)
  • Glance PTL (one position)
  • Horizon PTL (one position)
  • Keystone PTL (one position)
  • Quantum PTL (one position)
  • Cinder PTL (one position)
  • openstack-common PTL (one position)

Electorate

The electorate for a given project PTL election are the Foundation individual members that are also committers for said project over the Essex-Folsom timeframe, up to 23:59 PST on August 29, 2012.

Candidates

Any member of an election electorate can propose his candidacy for the same election. No nomination is required. They do so by sending an email to the openstack@lists.launchpad.net mailing-list, which the subject: "PROJECT PTL candidacy" (for example for Glance: "Glance PTL candidacy"). The email can include a description of the candidate platform. The candidacy is then confirmed by one of the election officials, after verification of the electorate status of the candidate.

Technical committee direct members Election

Timeline

  • Sep 13 - 19: Open candidacy to TC directly-elected seats
  • Sep 21 - 27: TC direct seats election

Elected positions

This is a partial renewal of the elected seats for the Technical committee of the OpenStack Foundation. We are called to select 3 directly-elected positions. All winners will be granted a one-year term on the TC.

Electorate

The electorate for the TC direct seats election are the Foundation individual members that are also committers for an official OpenStack project (as defined here), over the Essex-Folsom timeframe, up to 23:59 PST on August 29, 2012.

Candidates

Any member of the TC direct seats election electorate can propose his candidacy for this election. No nomination is required. They do so by sending an email to the openstack@lists.launchpad.net mailing-list, which the subject: "TC candidacy". The email can include a description of the candidate platform. The candidacy is then confirmed by one of the election officials, after verification of the electorate status of the candidate.

Note: Members of the PPB that were elected to a one-year term last Spring (Jay Pipes and Thierry Carrez), and PTLs that just got elected in the previous election are automatically granted a 6-month term seat on the TC, and therefore cannot run for this election.

Voting process

As for all previous PTL/PPB elections, we will use the Condorcet method, under the Schulze (Beatpath) algorithm. The CIVS online voting platform will be used. Elections should be left open for a minimum of 5 business days.

Tie breaking

Condorcet may result in ties, which should be broken fairly and in a reproducible manner. We will use the hash of a string describing the tie results as a seed in a random generator to determine the tie winners, this way anyone may verify the fairness of the tie break. Read on for more details ;-)

Desired Features

The features we need in a process that addresses a tie-breaking scenario are the following:

  • has to be fair
  • has to support a remote process
  • results need to be verifiable (repeatable)
  • results need to also be random
  • process needs to severely limit (or remove altogether) the possibility of "gaming" the system
  • process needs to support multi-way ties

A Tool

As such, we wrote a quick little python tool that supports part of the this list; the other part of the list is addressed via the process that makes use of the tool. The tool is available on github and you can take a look at it with the following:

  $ git clone git@github.com:oubiwann/coin-toss.git
  $ cd coin-toss


This tool takes advantage of the Python standard library's random module. By using a seed, we can get the same series of random selections every time, thus satisfying our requirement for verifiability and repeatability (as well as randomness!).

The Process

The following attempts to leave no ambiguity in the minds of community members as to the process for determining who wins in the event of a tie. In order to be as explicit as possible about the process, we'll illustrate with an example. In our example election for three available seats, the following Condorcet results came in:

  • Alice: 1st place
  • Bob: 2nd place
  • Carol: tied 3rd with Dave (lost to Alice by 40-47; lost to Bob by 38-45; beat Dave 41-40; lost to Eve 40-41)
  • Dave: tied 3rd with Carol (lost to Alice 29-54; lost to Bob by 26-48; lost to Carol; 40-41; beat Eve 44-42)
  • Eve: 4th place

We need to break the tie between Carol and Dave. We would like for our seed to be unique for time date and for the organization (in the event of an amazing coincidence where there was another tie between the same candidates running for a different election; we'd like to have a different hash/seed for ours!) . As such, we will be adding the following data to the seed:

  • the date that the elections opened
  • the openstack.org domain to generate a UUID namespace

We know this information ahead of time, but we have to wait until the elections finish before we can generate our seed, since we also need:

  • the scores of each tied candidate with all the other candidates (e.g., the data that is in the parentheses above for Carol and Dave)

So here's how we will put this together:

  $ ./bin/get_seed \
    --type=namespace \
    --namespace=openstack.org \
    --data=2012-08-21 \
    --data=Carol.Smith:40-47:38-45:41-40:40-41 \
    --data=Dave.Doe:29-54:26-48:40-41:44-42


Important things to note:

  • the date the elections opened is the first data added for the hash
  • the scores of the tied candidates are provided next, in ascending alphabetical order by first name
  • the scores are prepended with Firstname.Lastname of the candidate, colon-delimited from the scores (no spaces)
  • the individual scores vs. another candidate are separated by a dash with the first score being that of the tied candidate (e.g., Carol Smith lost to Alice, 40 to 47 = 40-47)
  • the individual scores are colon-delimited

Our call to get_seed gives us the following hash:

  e9ca327a-7deb-5919-a207-5d519c2d7837


With the seed generated, we can then finally "toss a coin" to see which of the tied candidates will be awarded the seat:

  $ ./bin/toss e9ca327a-7deb-5919-a207-5d519c2d7837 Carol.Smith,Dave.Doe


Important items of notice:

  • the tied candidates are listed here in ascending alphabetical order by first name
  • they are comma-delimited
  • there are no spaces

And our winner is:

  ['Dave.Doe']