Neal McBurnett has been working on a new free software project — called ElectionAudits — to help audit election results.
With this week’s US elections, it seemed like a good time to ask Neal what the project is about.
Matthew: What problem(s) are you hoping to solve?
Neal: The underlying goal is improving confidence in elections and thus democracy. I know enough about computers and have done enough work and volunteering with elections to know that you just can’t trust the machines and systems (even if they are open source, as Thompson’s famous hack showed decades ago (see “Reflections on Trusting Trust“).
Rivest and Wack have written more recently about the need for “Software Independence” in elections. So good random audits of the actual results are a critical component of election integrity. We do serious audits of banks and casinos. Why don’t we really audit most elections? See my blog message for more detail.
There’s a long list of problems with existing “audits”. But the proverbial itch was seeing how frustrating it was for my county clerk to deal with the way the Hart InterCivic Tally system produces results, which need to be broken down by batch, and sometimes combined to protect the privacy of the voter. I saw several people totally worn out trying to do it in Excel, and said there must be a better way. And I saw a good use for Python and Django đŸ™‚ and a way to play with fun statistics.
Matthew: Has the project seen any use as a result of this week’s US elections?
Neal: We’ll be using it to audit the Boulder County election, probably next week.
Matthew: Is there already proprietary software to do this job?
Neal: None that I’m aware of. The election system manufacturers only seem to produce precinct results, which don’t match the way the paper ballots are grouped in batches of mail-in ballots and in long rolls of voter verified paper records on “touch screen” computers used in Early Voting. So it is a pain to find the paper to back up the precinct reports. I list other software out there, like spreadsheets, to calculate the statistics, but nothing like ElectionAudits.
Matthew: How many of you are working on the project?
Neal: I’m packaging existing statistical code from Ron Rivest and getting input from a handful of testers and users. I’m the main coder so far. It is all based on the work of a much larger community of auditing experts who put together Principles and Best Practices for Post-Election Audits.
Matthew: Are you looking for more participants? If “yes”, what skills do you need?
Neal: I’ve focussed totally on the code, so the project could use a nicer logo, some good CSS and templates. Input on a wide variety of other ToDos would be welcome from folks versed in Django and Python.
Testers and packagers, for setuptools, Ubuntu, Windows, Mac OS X, etc would help a lot. I don’t have a Windows environment, but it is still used by lots of potential users, so more help there would be great. And help providing better documentation would be wonderful.
You can also just join the ElectionAudits team and lend some of your insights.
But most of all, we need folks to use it to improve our confidence in our elections, either as election officials, or by connecting with the folks who run their local elections. Even just sending us a copy of the election results that are used in your local elections would help since we want to be able to parse and publish lots of different common election data formats.
Matthew: What do you use Launchpad for?
Neal: Team mailing list, hosting releases, bzr repository, bugs, blueprints, and if there is interest, translations.
Matthew: Why did you choose Launchpad?
Neal: Because it will be open source next year, putting it in an elite category, and because I’m familiar with it from my Ubuntu involvement.
Matthew: What would you like to change about or add to Launchpad?
Neal: I’d like to see a wiki for project use (bug report).
New Launchpad projects would really benefit from a step-by-step HowTo on setting up each phase of a new project: defining bzr integration, releases, downloads, series, release files, teams, etc. I had to ask in #launchpad a number of times to figure out how to get a new part of the project working. Advice on when to define a new series and the implications of that, especially before the 1.0 release is out, would be helpful.
E.g. clarify how to provide download files. Based on the UI, I thought my only option was to point to my own external web server to host downloads. Finding the set of steps necessary to get the big Download button on the project page to be useful was frustrating even based on the documentation. If a project has no downloads yet, perhaps the Download button should lead to some sort of wizard for that, or at least lead to the appropriate documentation.
I’m looking forward to trying the Launchpad API for simplifying releases, as described in the recipe for uploading files via the API blog post.
Thanks for a great tool!