This page is about how the ASF Membership elects new directors for the Board at the annual meeting. For a higher level perspective, see the Corporate Governance Overview.


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 spring (northern hemisphere). 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.

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 lower ranked preferences shown on that ballot.

This YouTube video provides a delightful introduction: Politics in the Animal Kingdom: Single Transferable Vote or a shorter description of how second, third, etc. place votes are allocated.

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

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 Apache Steve 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. The 2017 version of Apache STeVe tool that we use for voting allows bulk voting for all Yes/No votes, as well as simple drag and drop voting for the STV board vote. Remember: the candidate at the **top** of the STV list is your first choice!

How Do We Tally Results?

Election results are calculated using Meek's Method for STV. The code used is now in its own Apache project: Apache Steve so everyone can review and help improve the code both for the STV calculations as well as for the secure email and web balloting.

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 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:
   Usage: [-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: -h
   Usage: [-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.:

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:

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 (which uses Yes/No/Abstain methods)

BoardVoting (last edited 2017-03-29 00:10:39 by ShaneCurcuru)