Proportional Representation Software

This is an attempt at documenting what software is available to help run PR elections. If you have any further information please send some e-mail to me, preferably in this format.

Desirable properties of computerised vote counting

A while back I came up with some desirable properties of computerised vote counting systems and have listed some below. If you are implementing such a system you I suggest you consider them. Any comments are welcome.
Consider the larger picture.
The code which counts formal votes is only one part of a larger system. The most error prone and time consuming part of the system is likely to be data entry. Candidates may be able to withdraw at any stage and other complications might arise. Software should be designed in conjunction with procedures for running the whole election.
Make it voter-friendly.
Computerising the vote count should be convenient for the people who count the votes but not at the expense of inconveniencing the voters. For example, special ballot papers which make data entry very easy but voting very difficult are best avoided.
Allow for manual counting as a backup.
The counting rules and procedures followed should be amenable to manual counting in case the computerised system is not seen to be working correctly. As computerised systems get more established this may become less important.
Document the system.
The counting rules, procedures and source code should be well documented.
Make source code available for inspection.
This can help in detecting bugs and raising confidence in the system.
Use defensive coding.
Code should contain cross checks et cetera just like manual counting procedures. Arithmetic overflows should be checked for.
Avoid floating point calculations.
Due to rounding errors, the results of floating point calcuations can be difficult to predict and reproduce. The result of an election should not depend on the rounding errors which occur with a particular combination of hardware and system software. Using integers or "infinite precision" rational numbers is preferable.
Authenticate code and votes.
It is possible to tamper with code, especially source code. Similarly, files of votes can be accidentally or deliberately corrupted. Digital signature techniques should be used to authenticate files which are stored or transmitted in insecure ways.

List of known software




Lee