JSF Voting Procedure
The Jabber Software Foundation holds official votes at least 5 times a year: 4 times (January, April, July, October) to vote on accepting new and renewing members, once (late August or early September) to elect the JSF Board of Directors and Jabber Council, and optionally at special meetings called by the members.
The regularly scheduled meetings of the JSF (as defined above) are called by the Secretary of the JSF. A special meeting may be called for by the members rather than the Secretary. In addition, members may add agenda items to regularly scheduled meetings. Meetings are officially announced by the Secretary of the JSF on the email@example.com discussion list. The meeting must be announced at least 10 days before the meeting date. For details, see the JSF Bylaws.
Most JSF members vote via proxy rather than attending the scheduled meeting. This makes life much easier for all concerned. The proxy voting happens by chatting with firstname.lastname@example.org on the Jabber network (only JSF members are allowed to chat with the bot). Memberbot is a primitive Python script written by Peter Saint-Andre but it gets the job done. Technical details provided below.
Counting the Votes
The votes are counted by the Secretary, who affirms the results of all elections, announces them in the meeting, and posts the results on the JSF website.
This section is a small README provided for the benefit of the JSF Secretary. :-)
The voting bot is located on apollo.jabber.org, one of the machines in the JSF infrastructure. Only a few people have access to this machine, so the voting results are fairly private.
The bot is located at /var/jsf/voting/ -- the bot is memberbot.py and voting results are saved in appropriate subdirectories (e.g., elect2005/ for the 2005 Board and Council elections and appl_200510/ for the October 2005 membership voting). Memberbot reads in an XML file in order to present the voting questions, holds the votes in memory, and writes out an XML file when each voter has finished (there is one XML file per voter, saved as email@example.com based on the voter's JID).
In order to count the votes, the Secretary runs an XSLT process against the XML files, resulting in HTML table that can be embedded into the meeting notes. (Details about XSLT to follow.)