Blue Screen Democracy: OpenVote Software

OpenVote is an open-source, free software touch-screen voting system designed to be implemented on existing devices for large-scale elections. You are at the main software information page.
getting it on

Current Phase: 1, Architectural Decisions

The initial phase of our development doesn't involve any coding at all. It involves a public forum for discussion. We have enlisted the aid of to this end.

Please visit our forums and contribute to our initial discussion today!

This document is currently seperated into two major sections. Please feel free to browse either or both.

  1. Important Documentation, subdivided into
    1. Quick Reference Guides for Extant Hardware/Software Systems, and
    2. Source Code for Extant Development Efforts
    3. and
  2. Synopsis of major themes for elections system software design.

Important Documentation.

1. Quick-Reference Guides
The first thing to look at might be the Quick Reference Guides for the other, comercially available software. These aren't design schematics, but if you've never really worked on an electronic voting system, this brief survey will give you the general idea of what we're looking at. These documents are hosted by the Electronic Frontier Foundation (see:

2. Source Code for Extant Development Efforts
Part of figuring out how to work on this is working with what's already available. A great part of the GNU GPL is that we can use many of the clever ideas that other groups have come up with in order to make the perfect software. For the convenience of our developers, and any interested parties, we have mirrored some of the various source code, as well as provided the relevant links to the projects.

  1. Evacs, Australia.

    "The system uses standard personal computers as voting terminals, with voters using a barcode to authenticate their votes. Voting terminals are linked to a server in each polling location using a secure local area network. No votes are taken or transmitted over a public network like the Internet."

    Links hosted at - Project Description - Source Code

  2. OSOSS, The Netherlands.

    Our friends at have helped us translate this document, which announces, roughly, that the department of home affairs has ordered (the Dutch department of) LogicaCMG to develop a voting service, and (The Dutch state) acquired the intellectual property for all program-code developed for this voting service. The program code is now available under GPL. A part of this available source is a mathematically proven vote-tallying system written in Java/JML.

    Links hosted at - Source Code

    Links hosted locally

    Documentation: The JML Docs for the tallying system and the Java Docs for the tallying system, as well as the credits, and the user manual [Dutch, pdf].
    Source Code: Mirrored) .zip archive

  3. EVM2003, USA.

    And of course, we can"t forget the important work done by the OVC on EVM2003, a Python piece of software. I"ll rip a bit from an email I received from David Mertz, who is the CTO of OVC: "Most of the design ideas, however, really were carefully hashed out, and you should pay some attention to them. We had some really serious voting and cryptography experts involved in this, so it"s far from accidental or haphazard what we did. Liam Helmer"s efforts to create a StrongBox Linux version of "EVMix" are particularly important (albeit not fully realized yet).

    Links hosted at the EVM2003 project at - Project Description - Source Code

Synopsis of major themes for software design. (With linked documentation)

This assessment is derived originally from Cranor, L.F. and Cytron, R.K. Design and Implementation of a Security-Conscious Electronic Polling System. Washington University Computer Science Technical Report WUCS-96-02. February 1996. It comes directly by way of Cranor, L.F.: Electronic Voting.

  1. Accuracy. A system is accurate if:
    1. It is not possible for a vote to be altered.
    2. It is not possible for a validated vote to be eliminated from the final tally.
    3. It is not possible for an invalid vote to be counted in the final tally.

    In the most accurate systems the final vote tally must be perfect, either because no inaccuracies can be introduced or because all inaccuracies introduced can be detected and corrected. Partially accurate systems can detect but not necessarily correct inaccuracies.

  2. Democracy. A system is democratic if:
    1. It permits only eligible voters to vote.
    2. It ensures that each eligible voter can vote only once.

  3. Privacy. A system is private if:
    1. Neither election authorities nor anyone else can link any ballot to the voter who cast it.
    2. No voter can prove that he or she voted in a particular way.

    The second privacy factor is important for the prevention of vote buying and extortion. Voters can only sell their votes if they are able to prove to the buyer that they actually voted according to the buyer's wishes. While some may argue that in a democratic and capitalistic society there is nothing wrong with voluntarily selling one's vote, most people would probably agree that people should never be forced to sell their votes.

  4. Verifiability. A system is verifiable if anyone can independently verify that all votes have been counted correctly.

  5. Convenience. A system is convenient if it allows voters to cast their votes quickly, in one session, and with minimal equipment or special skills.

  6. Flexibility. A system is flexible if it allows a variety of ballot question formats, including open ended questions. Flexibility is important for write-in candidates and some survey questions. Some cryptographic voting protocols are inflexible because they only allow for single-bit (yes/no) votes.

  7. Mobility. A system is mobile if there are no restrictions (other than logistical ones) on the location from which a voter can cast a vote.

Blind signature protocol. (Courtesy: Crossroads, Association for Computing Machinery.)