Most users use the existing CIVS web server. However, the software is
available for installation elsewhere, subject to certain restrictions
described in the included README file.
The latest release of CIVS can be found in the CIVS GitHub repo, which is
generally a bit ahead of the latest release. Contributions via pull requests
See the file INSTALL in the release for installation instructions. New releases of the
software are announced here and sent in email to the
CIVS users mailing list.
CIVS is research software. It is distributed free in the hope that it will
be useful, but without any warranty; without even the implied warranty of
merchantability or fitness for any particular purpose. In no account will
the authors or anyone else, including Cornell University, be liable for any
special, indirect, or consequential damages or any damages whatsoever
resulting from loss of use, data or profits, whether in an action of
contract, negligence or other tortious action, arising out of or in
connection with the use or performance of this software.
Note: Another voting system, known as
Civitas, has also been developed at Cornell.
This new system, described in a
uses much more complex cryptographic protocols to provide universal verifability
and coercion resistance. The new system is available for download,
but it does not yet have a user interface.
Contributions and feedback are always welcome. See the
acknowledgments page for more
information about how you can help.
- 2.24 (March 2022)
- Using voter receipt now restores old ballot.
- Ballots can be immediately revoted on.
- Touch support for mobile voting.
- Support for QR codes for public polls.
- More UTF-8 fixes, for uploads.
- Protect URLs against line splitting in emails.
- 2.23 (Dec 2021)
- Can now remove an already cast ballot using the voter receipt, allowing
voters to change their votes.
- Total number of voters reported in private polls, to protect against
- Support mailing non-activated users.
- Allow exploring proportional results.
- Fixes to UTF-8 handling.
- Improvements to various language versions.
- 2.22 (Nov 2021)
- Better handling of disk overfull condition.
- More robust handling of uploads.
- Added translations for opt-in page.
- Better layout on home page
- Fixed handling of Unicode input and output
- Warning about submitting empty ballots
- Script cleanup
- Added implementation notes
- Made installation script more complete wrt handling filesystem permissions
- 2.21 (Oct 2021):
- Fixed bug in voter key generation.
- Changed email to be opt-in.
- Improved some translations.
- Added Aria labels.
- Code cleanup.
- 2.20 (Oct 2020):
- Fixes for some small security issues.
- Various corrections to explanations about properties of Condorcet methods.
- Script for exporting poll data in JSON format.
- Script for tabulating a poll from the command line.
- Allow result keys to be resent.
- Add missing credit for CIVS logo (Mike Kalashnikov).
- Allow users to opt out from receiving any mail from CIVS.
- 2.18 (Dec 2017):
- Rate-limit the amount of email sent per poll.
- Allow the use of HTTPS via new config setting PROTO.
- Better display on small devices.
- Nicer colors and logo.
- Limit the number of voters who can be added at once.
- Minor fixes for XSS issues.
- Localization for Thai, Russian
- Added Minimax algorithm
- Improved installation instructions
- Support for SSL e-mail server
- 2.17 (May 2014):
- Poll descriptions can now be edited by the poll supervisor.
- Bug fixes: input sanitization, AJAX browser compatibility
- Improved Portuguese support
- 2.16 (September 2012):
- Support for HTML voting code that can be pasted into other web pages (public polls only).
- Publication support. Top public polls now listed on home page.
- Localization for Spanish.
- Allow tracking voter identity in public elections.
- Clearer explanation of anonymity rules for elections with restricted
- 2.15 (February 2011):
- Support for Hebrew, Portuguese, Chinese (done by volunteers)
- Bug fixes for UTF-8 email
- Other localization bug fixes
- Supervisors can remove write-ins before voting starts.
- 2.14 (May 2010):
- Improvements to the look of the voting page.
- Internationalization support including consistent use of UTF-8
- Localization for Hungarian, Italian, French, and German
(done by volunteers)
- 2.13 (February 2010):
- Better algorithm for setting drag-and-drop rankings.
- Support multipliers in test ballot format
- Clearer explanation of proportional mode
- 2.12 (November 2009):
- Drag-and-drop voting UI.
- Support for test polls in which ballots are uploaded.
- Start time of polls recorded.
- Better write-in filtering.
- Fixed interaction with rigorous SMTP servers.
- 2.11 (December 2008):
- Elections are now called "polls" uniformly, per a user suggestion.
- Results are now cached, which should improve server performance
a great deal for large polls.
- Schulze/beatpath algorithm now uses "against" preferences in addition to
"for" preferences. It now tends to agree with CIVS RP more often, perhaps
because it no longer throws away information that CIVS RP uses.
- All completion methods are now in a standardized form, which makes
it easy to add new completion methods. It requires writing a Perl package
and modifying two tables at the top of the "results" script.
- Some formatting cleanup of code.
- 2.10 (August 2008):
- Elections with write-ins now have voting initially disabled. It can
be enabled explicitly from the control page. This allows write-ins to
be on the same footing as other choices.
- The election results page has a progress bar, which gives reassuring
feedback for the more expensive completion methods.
- 2.9 (January 2008):
- Added filtering of HTML tags to remove possible XSS attacks, etc. Most
useful HTML markup still permitted.
- Cleanup of code and documentation.
- Fixed a small but crippling bug in restricted release of results.
- Better checking of email addresses to prevent sending bogus emails.
- Voter emails now come from CIVS administrator instead of election supervisor.
- Cleaned-up completion algorithm code allows adding new completion
algorithms more easily.
- Corrected description of runoff.
- Ability to release election results only to a limited set of users.
- Better client-side sanity checking at election creation.
- Previewing of election description and choice list.
- Another completion algorithm (runoff)
- Better factoring out of completion algorithms to allow future
algorithms to be added more easily.
- Allow voters' identity to be revealed as an election option
- Mail to voters is now HTML+ASCII (should be made optional) to help
get through spam filters.