The ASF is a membership corporation and holds an Annual Member’s Meeting every year to elect the board and nominate/elect new members. As a volunteer-run software organization, we run this process by – wait for it – by emailing around a set of cryptically formatted text files from our private Subversion repository. Of course, as (mostly) software people, we could make it easier on ourselves… with better software. Shoemaker’s children, indeed.
Every year around the Member’s meeting we also tend to have discussions about how to make it simpler – both to manage the meeting (for our board and officers) and to attend the meeting (for our many members). While we’ve made some improvements over the years, I believe it’s time to up our game and improve the process. Here’s a process overview of the whys and whats of our corporate membership meeting. (Update: there seems to be some energy around making tooling improvements for some of these process steps – see also the Apache Whimsy project.)
90-60 Days Before A Meeting
Actors: Chairman of the Board, Secretary.
The Chair sets the date for the upcoming meeting, which must be no more than 13 months from the last annual meeting. Since the meeting is held in two parts over three days with asynchronous secure email voting, the main people to make sure can attend synchronously are the Chair, Secretary, and officers or directors presenting reports at the meeting (an annual treasurer report, for example). The Chair works with the Secretary to prepare meeting materials (text files) and to prepare NOTICE emails to all Members.
60-10 Days Before A Meeting
Actors: Chairman, Membership; new member nominators; director nominators.
The Chair sends out the legally-required [NOTICE] ASF Members Meeting On: Date email to the membership. They also send out calls for Board nominations; New Member nominations; and Volunteer vote monitors and helpers.
Call for board nominations: any member may nominate individuals for the board election. These nominations always include a description of why the member is nominating the person. Nominations may also be seconded (not required) by other members, either with a simple +1, or more details supporting the board nomination.
Members email a private mailing list with this information, but must also update the official text files in Subversion, which are later used for the election. Usually, we expect the member doing the nominating to ensure these steps are complete.
There are two, related actions happening here over a period of a few weeks:
- Nomination threads on the mailing list are inherently social. Members respond to other emails with more details or to discuss a candidate. People have commented that they review these threads regularly.
- The official record of nominations (and seconds) is saved in formatted text files in Subversion. As with any human process, sometimes there are differences in the email thread content and the actual text file content.
Call for new member candidates: any member may nominate individuals to be considered for membership in the ASF. Discussions and seconds, as well as emails and text files are the same as for board nominations. Again, we look to the nominator (as well as people providing seconds) to ensure their input is put into the official files. Note that our bylaws state “a person or entity” is eligible to be nominated, however in the ASF’s history only persons have ever been elected as members.
Call for vote monitors and helpers: As a purely volunteer-led organization, all the roles related to organizing, minuting, and ensuring secure voting are performed by unpaid volunteers. The Chair and Secretary handle official record keeping, but all other jobs are done by Members who step up to volunteer. Voting is conducted with secure and secret ballots, run by our own Apache STeVe project, and overseen by a set of volunteer vote monitors.
30-10 Days Before A Meeting
Actors: director candidates.
Once a director candidate accepts a nomination, they traditionally post a director’s statement which outlines their beliefs, platform, or whatever else they believe will help the ASF succeed. Again, these statements are traditionally both emailed to the mailing list, as well as placed in official text files. Sometimes these director statements start discussions, but usually, they are merely read.
10-1 Days Before A Meeting
Actors: Chairman, Secretary.
The legal record date is 10 days before the meeting. At this point, nominations are closed for new names (both board and member candidates), although seconds and updates to director statements are still allowed. The official list of members eligible to vote in the election is checked, and the remaining meeting materials are prepared over the next few days to be ready to load the voting tool.
There are often a lot of questions about the details of the member’s meeting here: when different things happen, how voting works, where the meeting is held, etc. These details are all documented, but as with most open source projects, it could be clearer. More details are privately documented in SVN:foundation/Meetings/ directories.
Anytime Before A Meeting – Assign Proxies
Along with reviewing nominations and statements to decide on their vote, members may also assign a proxy for attending the meeting. This critical record keeping step is sometimes neglected, which can extend the time we have to spend on meetings when it turns out that some members can’t attend our online meeting.
Apache bylaws state that meeting quorum is one-third of the membership eligible to vote. That means that we need to show that at least a third of the members are either attending – or proxying – at the meeting to vote on corporate matters. While this probably seems uninteresting, either personally attending (well, online!) or assigning another member to proxy your attendance is required before we can actually… do anything in the meeting. Since we have over 600 voting-eligible members, that means we need over 200 people to show up or fill out the simple proxy form before we can really get started.
How To Improve The Pre-Meeting Experience
Since all Members are volunteers – and doubly since most of the work of corporate governance is pretty unrelated to our day-to-day lives – any ways we can make the process details simpler are important. History shows that many of the same questions or issues with specially formatted text files come up regularly. While we do need to keep official, tracked files for corporate record keeping needs, we can make the way we interact with those files simpler.
Currently, all the above steps are effectively manual. We have several README files that describe each of the steps, and most actions are performed by checking in changes to Subversion – great for security and authentication, but not so great for usability. Similarly, there are often separate bits of data that need updating in many cases. The above processes also happen over a moderate period of time: even when one member forgets to update as second file, another member may come along later to correct it for them.
But what if we didn’t have to deal with cryptically formatted text files?
Whimsy To The Rescue – Simplify The Submission Process
Each of the above steps could be simply encoded into our “organizational helper” Apache Whimsy tool. Whimsy is a Ruby on Rails application tied into Apache authentication and with access to our Subversion repositories and other corporate data. It comprises a wide set of helper applications: simple web pages that allow users to request changes to various records, tracking access and ensuring request formats are validated first.
Instead of humans having to remember the esoteric text file formats, Whimsy could take care of that – along with cross-checking data sources, authentication, and sending any required email notices as well. While coding new Whimsy features relies on volunteer on the project, a number of improvements to the member’s experience before a meeting could be improved without having to adjust any of our other processes (voting, holding the meeting, email of [NOTICE], etc.)
The first step is to define the discrete processes that would make the member experience better. Then define the UI input, some linked process help documentation (our current README), and write the code that validates and outputs the right formatted text files and the like. Whimsy already authenticates access, so subversion commands and authorship are already assured.
whimsy.a.o/members/dirnominate– nominate a director: dropdown of member IDs; long text nomination field; optional checkbox to send a formatted email to list; Submit.
whimsy.a.o/members/dirsecond– second a director: dropdown of director candidates (noting if they’ve accepted yet); long text second comments field; optional checkbox to send a formatted email to list (as a reply if the earlier email was sent); Submit.
- Same for new member candidates, except the dropdown is committer IDs.
whimsy.a.o/members/diraccept– Yes/No button authenticating the director candidate ID marking if they’re accepting or not.
whimsy.a.o/members/dirstatement– long text statement field for authenticated director (auto-accepts for them if not already done); optional checkbox to send a formatted email to list; Submit. Could even allow a director to change an existing statement.
There are other obvious helpers that could be built for all the pre-meeting tasks. Each of these is a task done by humans who sometimes forget to update linked files, or sometimes mix up text file formatting. All the Whimsy steps would be authenticated and would ensure data consistency. We already use Whimsy to assign proxies; these features would extend that simple web form to the other parts of the pre-meeting process.
Now that I’ve seen how easy it is to add some simple forms to Whimsy tied directly to our corporate records, I’m hopeful we can transform the meeting experience for next year!
A Note On Quorum And Attendance Tracking
Quorum is needed before we can start the business of a member’s meeting. That means we need at least a third of the membership to either attend online in real time or to have assigned a proxy for the meeting. Proxying is usually just for attendance at the live meeting, although if necessary you can ask someone to proxy your votes as well (which is rare).
After the meeting, we count any member who responded to roll call, sent a proxy, or who cast a vote via secure email as having attended the meeting. These are two subtly different concepts in terms of how the meetings actually work.
In either case, voting on the board is the most important ability that Members have, so I urge all members to show up and vote – and ask for help if anything’s not clear!