Differences between revisions 9 and 10
Revision 9 as of 2012-05-24 18:52:45
Size: 8915
Editor: JimJagielski
Comment:
Revision 10 as of 2013-10-11 16:39:03
Size: 9057
Editor: JimJagielski
Comment:
Deletions are marked like this. Additions are marked like this.
Line 48: Line 48:
Results are calculated using Meek's Method. We use the Voting Systems Toolbox [[http://sourceforge.net/projects/votesystem/]]. Results are calculated using Meek's Method.
Line 53: Line 53:
However, we are now migrating to using [[http://stv.sourceforge.net/|OpenSTV]]
which is better maintained. In any case, as mentioned above, the ASF uses
Meek's method with the following parameters:
However, we then started migrating to using [[http://stv.sourceforge.net/|OpenSTV]]
which is better maintained. We then have started implementing our own
implementation, which has been used in the last several board meetings.
The code was spun out into its own project: Apache Steve [[http://svn.apache.org/viewvc/steve/trunk/]]

In any case, as mentioned above, the ASF uses Meek's method with the following parameters:

This page is about how the ASF Membership elects new directors for the Board. We have a more general overview on FoundationGovernance available.

IF YOU READ NOTHING ELSE, READ THIS: THE ORDER OF YOUR VOTE MATTERS - PEOPLE NEAR THE FRONT OF YOUR LIST ARE MORE LIKELY TO BE ELECTED THAN PEOPLE AT THE END, NO MATTER HOW SHORT YOUR LIST IS

The Members of the Apache Software Foundation (nominate and) elect 9 directors to the board for a year's tenure during our Annual Member's Meeting, which is typically held in the summers. For a description of how Member's meetings work, and in particular how to use the Voter tool to cast votes for either new members or directors, see MemberVoting.

STV is used for Board Elections

The ASF currently uses Single Transferable Vote (STV) voting when electing our 9 directors each year. STV is designed to help small coherent constituencies elect a director to the board. This vote counting design helps to enable voters to reveal their actual desires and avoid being too clever. Read on for a discussion of how we use STV, including details of how our volunteer vote monitors actually tally up the votes.

The most important thing to remember is: Vote the actual order of your preferences! Every effort is made to get your #1 preference onto the board; #1 votes are notably more important than the rest of your votes. If you vote in alphabetical order (as some seem to have done with past ballots) you're sending a strong signal that you'd prefer a board with names like Mr. Awful and Ms. Beastly - probably not what you intended. Our newer Voter tool randomizes the letters assigned to candidates.

What is Strategic Voting?

Strategic voting is the name for votes that don't reveal your actual preference. You vote strategically in a clever attempt to get the maximum benefit out of your vote. For example say Mr. Wonderful, Mr. Ok, and Mr. Evil are running. Of course you prefer Mr. Wonderful, but polls show that Mr. Ok and Mr. Evil are running neck and neck. So, you cast a strategic vote for Mr. Ok. Tragically if all of Mr. Wonderful's fans are acting strategically he doesn't stand a chance.

Our STV Voter tool counting technique lets your safely reveal your actual preferences; the vote counting mechanism then acts strategically for you.

You vote in order of your preference. Mr. Wonderful and then Mr. Ok, and finally you might omit Mr. Evil entirely. The vote counting mechanism will elect Mr. Wonderful if it can, and if not it will reallocate your vote to Mr. Ok.

How Are Votes Counted?

The vote counting proceeds in a loop. Occasionally the loop spits out another board member, whenever a board member captures enough ballots to get elected. Ballots begin by being assigned to the #1 candidate indicated on that ballot. As the counting proceeds ballots are reallocated. Sometimes it becomes necessary to admit somebody is not going to get elected; at that point his ballots are reallocated. When a candidate is elected he takes with him only enough ballots to have gotten him elected; his other ballots are sent off the the lower ranked preferences shown on that ballot.

This Wikipedia entry explains the gory details: Single Transferable Vote.

This means that you can vote for Mr. Marginal and if he gets enough votes he's in; if not your #2, #3, preference will get used.

This means you can vote for Mr. Wonderful along with everybody else and after he's elected there is a reasonable chance your ballot will live on to help elect a candidate other than your first preference.

Hints on How To Decide Your Vote

  • If you really don't want somebody on the Board, then omit them entirely, rather than putting them at the end.
  • Although there are 9 slots available, you can vote for as many people as you want - even votes after the 9th may end up being significant. Note that people you don't want elected should not appear on your list at all.
  • By example, if 89 members vote in the election, a candidate can win one of the nine seats on the board with just 10 #1 votes. This helps to assure small constituencies can get a board seat.
  • AND RECALL: The ORDER of your votes is CRUCIAL !!

This voting architecture is excellent for helping to break up the tendency of elected bodies to settle into one or two power blocks; at it's also helpful for breaking up the power of incumbents to attract strategic voters. Its downside is that you can end up with a board with nine members all of whom were elected by very narrow constituencies to which they are extremely loyal - that can make it hard to reach any consensus.

How Do We Use the Voter Tool?

UPDATE: Many members find the new web-based voting form to be convenient. Just follow the https://vote.a.o link you will receive in the email you get from the voting tool, where you will login with your browser and can cast your vote from a simple web form (which eliminates the need for any of the command line stuff below).

When time comes for a vote, emails are sent to each of the voters using your main email address as listed in members.txt. Actual votes are submitted from your apache.org account using a command line tool. That tool takes a token that was provided with the email. You may vote more than once with the same token, but only the last vote counts. Using a command line tools allows us to leverage ssh authentication. You must be able to check your email (the address in members.txt) and to ssh into people.apache.org sometime during the 42 hour meeting recess to be able to cast your votes (or, assign a proxy).

For details on how to automate your votes, please see MemberVoting, which suggests the command line to use. Note that new Member votes do not use STV; they work on majorities.

How Do We Tally Results?

Results are calculated using Meek's Method.

Election results are calculated using Meek's method for STV, and until recently, the definitive s/w used for this was the VoteMain tool. However, we then started migrating to using OpenSTV which is better maintained. We then have started implementing our own implementation, which has been used in the last several board meetings. The code was spun out into its own project: Apache Steve http://svn.apache.org/viewvc/steve/trunk/

In any case, as mentioned above, the ASF uses Meek's method with the following parameters:

   Precision: 6
   Threshold:  Droop | Dynamic | Fractional

Under the voter/monitoring directory, there is a support script called nstv-rank.py which takes the Final Tally email, as sent by the voter tool, and outputs data in the format required by either VoteMain or OpenSTV. For OpenSTV, the script generates standard BLT format data, so any STV tool which implements Meek's and reads BLT could theoretically be used. The help output of the script is:

 nstv-rank.py:
   Usage: nstv-rank.py [-h] [-b] [-o filename] inputfile(s)
    -h: Usage info (help)
    -b: Generate BLT STV data format file
    -o <filename> : Output file (default stdout)

We also have a completely self-contained script that takes the raw ballots tally and returns the results for a 9 seat board:

 stv_tool.py -h
   Usage: stv_tool.py [-v] RAW_VOTES_FILE
    -v: verbose mode

In both cases, the scripts depend on a board_nominations.ini file located in the same directory as the input file to provide the mapping of labels and names. e.g.:

[nominees]
a: Spock
b: Kirk
c: Scott
d: McCoy

What Is A Sample Board Ballot?

The following is what is sent out to voters in the board ballot:

Board elections are performed via Single Transferable Vote (STV). Each voter lists all the people they want to see elected in order of preference. Excess votes for people who have already reached their quota (i.e., enough votes to ensure election) and also for the candidate with the least votes are redistributed to lower-numbered choices. This process is repeated until the required number are elected. Please see:

The key idea to keep in mind is that the ordering of your votes is crucial. Those who you *really* want to be elected should be at the beginning/start of the list. For example:

  • Aragorn, Frodo, Bilbo, Sam, Sauron, Gandalf, Treebeard, Gollum, Gimli

means that you really want Aragorn to be elected (he's your primary preferred person), followed by Frodo (you want Frodo on the board more than you want Bilbo, Sam and Sauron, but not as much as you want Aragorn), followed by Bilbo, etc...


Also see MemberVoting

BoardVoting (last edited 2013-10-11 16:39:03 by JimJagielski)