""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 foundation elect the board; typically this happens close to the annual member's meeting. For a description of member's meetings and voting for new member candidates, see MemberVoting.
The foundation uses a modern, if confusing, vote counting scheme called STV, or Single Transferable Vote. It is designed to help small coherent constituencies can get a seat on the board. The vote counting design helps to enable voters to reveal their actual desires and avoid being too clever.
First, 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 vote 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.
Please don't mess this up! Vote the actual order of your preferences. Every effort is made to get your #1 preference onto the board. If you vote in alphabetical order you're sending a strong signal that you'd prefer a board with names like Mr. Awful and Ms. Beastly.
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.
Some hints:
- o If you really don't want somebody on the Board, then omit them entirely, rather than putting them at the end. o 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. o 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. o AND RECALL: ORDERING 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.
Logistics. When time comes for the vote emails are sent to each of the voters. 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).
Calculating Results. Results are calculated using Meek's Method. We use the Voting Systems Toolbox http://sourceforge.net/projects/votesystem/.
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...
Counting and Tallying:
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 are now migrating to using OpenSTV which is better maintained. 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)
Also see MemberVoting