/Condorcet-Voting-Open-Source-Ecosystem-Map

Collaborative index of preferential voting open-source projects. Related to Condorcet vote method an others.

MIT LicenseMIT

Condorcet Voting Open Source Ecosystem Map

A detailed index of free (open-source) software around preferential voting.

Rules: The entries must be significant, free, and documented. They must be currently maintained, tested, and must have received a minimum of recognition for their seriousness and reliability.

Pull request welcome!

Formats & Standards

Specification of a free format, representing an Election an her data (parameters, candidates, votes). The objective of this format is to be easily written and read by a human, with the rigor and precision necessary for ingestion by a program.

Developped by David Hill for the tideman data set.

Custom format used by Debian project.

Conversion tools

  • Condorcet program includes command line tools (and also php api) to convert some formats to other formats. Including Debian, David-Hill, Civs, CondorcetElectionFormat.

Command-line applications

Documentation: www.condorcet.io
Main technologies: PHP 8
Supported input formats: Shell, interactive shell, Condorcet Election format, Debian Format, David Hill Format
Methods: Condorcet / Borda (+ Nauru variant) / Copeland / Dodgson (2 Approximations) / FTPT / Instant-runoff (alternative vote) / Kemeny–Young / Minimax (+ variants) / Ranked Pairs (+ variants) / Schulze (+ variants) / Single Transferable Vote (STV) / Comparison of Pairs of Outcomes by the Single Transferable Vote (CPO-STV) / Highest Averages Methods (Sainte-Laguë, Jefferson/D'Hondt, and variants) / Largest Remainder Methods (with different quotas)

Command line interface including an interactive mode, complete statistics and the management of huge elections on a modest hardware. Various installation method including Docker, Github codespace or PHP (Phar, Composer).

Main technologies: Perl
Methods: Schulze

Official voting system processor of the Linux Debian project.

Web GUI application

Methods: Schulze / STV
Main technologies: OCaml
Online version: vote.belenios.org/admin

Methods: Condorcet / Schulze (+ variants) / Kemeny-Young / Ranked Pairs (+ variants) / Minmax (+variants) / Borda / FTPT / Copeland / Dodgson / Dowdall / Instant-Runoff (alternative vote)
Main technologies: PHP / Mysql / Docker
Online version: www.condorcet.vote

An open-source demo for a web ovting application based on Condorcet as backend.

Supported input formats: Civs format
Main technologies: Perl
Online version: civs1.civs.us.

Methods: Cumulative / Condorcet / Borda / Instant-Runoff (alternative vote) / Coombs / Majority judgment / FTPT
Main technologies: Java
Online version: pollen.cl

Software Components (libraries)

PHP

Documentation: www.condorcet.io
Supported input formats: PHP Api with methods for Json/String/Object, Condorcet Election format, Debian Format, David Hill Format
Methods: Condorcet / Borda (+ Nauru variant) / Copeland / Dodgson (2 Approximations) / FTPT / Instant-runoff (alternative vote) / Kemeny–Young / Minimax (+ variants) / Ranked Pairs (+ variants) / Schulze (+ variants) / Single Transferable Vote (STV) / Comparison of Pairs of Outcomes by the Single Transferable Vote (CPO-STV) / Highest Averages Methods (Sainte-Laguë, Jefferson/D'Hondt, and variants) / Largest Remainder Methods (with different quotas)

Condorcet PHP provides an election engine with a high-level interface to manage all aspects of an election and to run simulations. It's supporting many input methods and various tools & helpers. The modular architecture is easy to extend. It supports simple elections with ease or billions of votes in low resource environment. Condorcet is intensively tested (1500+ tests), documented, and highly polyvalent.

Methods: Ranked Pairs

PERL

Methods: Condorcet / Schulze / Ranked Pairs / STV

RUST

Ruby

Methods: Schulze

Python

Javascript / Typescript

Documentation: lzear.github.io/votes
Methods: Coombs / Copeland's method / FPTP / Instant-runoff / Kemeny–Young / Minimax Condorcet method / Minimax-TD / Nanson / Random candidate / Random dictator / Ranked pairs / Schulze / Smith's method / Maximal lotteries / Randomized Condorcet / Majority Judgements

npm library written in Typescript.

C / C++

Methods: RCIPE (VoteFair Popularity / Representation / Party)
This C/C++ code calculates results for RCIPE (Ranked Choice Including Pairwise Elimination) voting. It's a compromise between instant-runoff voting (IRV, often called "ranked choice voting") and Condorcet methods. It eliminates "pairwise losing candidates" when they occur, and it counts shared preference levels (which IRV discards as "overvotes"). It implements both single-winner and multi-winner versions.

Java

Software GUI applications

To fill

Scientific Work & Data

Collection of elections ballots for testing methods theories and implementations.
Also expanded and calculated on this project >>> Condorcet_Tideman_Election_Collection

Helper Tools

Random Votes generators

  • Condorcet provides a vote random generator to generate votes (crypto-safe engine, or predictive randomness with seed and many engines). Usage as a PHP API only, no command-line support.