RubyVote: Election Methods Library in Ruby
-===========================================
+=============================================
-:Author: Benjamin Mako Hill
-:Copyright: MIT Media Lab and MIT
-:License: GNU GPL
+.. Caution::
-Summary
---------
+ This software is pre release software. The authors of this software
+ are neither expert Ruby programmers or elections in election
+ methods. We are hackers and enthusiasts in both. This software has
+ bugs and it's quite possible that is has bugs that may skew
+ results. If you understand Ruby or election methods, please audit
+ the code.
+
+Overview
+---------
+
+**Latest Version:** 0.1
+
+**Download Latest Version:** `here
+<http://rubyforge.org/projects/rubyvote>`__
+
+`RubyVote` is an election methods library implemented in Ruby. It is
+designed to make it very easy to implement a variety of different types
+of elections in Ruby including relatively complex election methods like
+Condorcet. It could be useful for any sort of election, poll, or
+decision making.
-**Version:** 0.1
+New Versions
+*************
-This software includes an set of classes to tally votes and compute
-winners in elections or votes using a series of different
-methods. Currrently these include:
+`RubyVote` is graciously hosted by `RubyForge
+<http://rubyforge.org/>`__.
-* Plurality or "winner-take-all"
-* Approval
-* Borda
-* Simple Condorcet
-* Condorcet with Cloneproof SSD
+You can visit the `RubyVote` homepage (a version of this file) here:
-More information can be found at the following pages:
+ http://rubyvote.rubyforge.org/
-* http://en.wikipedia.org/wiki/Plurality_electoral_system
-* http://en.wikipedia.org/wiki/Approval_voting
-* http://en.wikipedia.org/wiki/Borda_count
-* http://en.wikipedia.org/wiki/Condorcet_method
-* http://en.wikipedia.org/wiki/Shulze_method
+You can visit the RubyForge project page to download the latest
+version of software, get access to the latest development version from
+Subversion, to file or bug, to look through documentation, to
+participate in the forums, or to contribute in other ways. That page
+is here:
-Writing support for a new module (e.g., instant runnof voting) is a
-fantastic way to to contribute to this module.
+ http://rubyforge.org/projects/rubyvote
-This software is prerelease software. I am both a relatively new Ruby
-progreammming and relatively new to election methods. These election
-methods have bugs and may have bugs that skew results. If you are
-understand Ruby and election methods, please do me a favor and audit
-my code.
+More Information
+*****************
+`RubyVote` is a library -- not an application or a voting machine. It
+simply takes the raw "tallies" of votes and computes the results.
+Currently, it does not include any sample interfaces (although if
+contributed, these may be included).
+
+`RubyVote` current includes a set of classes to tally votes and compute
+winners in elections or votes using a series of different methods.
+Currently these include:
+
+* `Plurality`__ or "winner-take-all"
+* `Approval`__
+* `Borda`__
+* `Simple Condorcet`__
+* `Condorcet with Cloneproof SSD`__
+
+__ http://en.wikipedia.org/wiki/Plurality_electoral_system
+__ http://en.wikipedia.org/wiki/Approval_voting
+__ http://en.wikipedia.org/wiki/Borda_count
+__ http://en.wikipedia.org/wiki/Condorcet_method
+__ http://en.wikipedia.org/wiki/Shulze_method
+
+Writing support for a currently unsupported voting method (e.g., instant
+runoff voting) is a fantastic way to to contribute to this module.
How To Use This Library
-------------------------
object upon creation or pass votes in one at at a time.
-.. Note:: *You* are responsible for ensuring that the votes are in
- correct form before you hand them to this module. This will
- not currently check for most types of invalid votes and does
- not (currently) accept a list of candidates at creation from
- which it checks all votes. As such, new candidates will be
- created when seen. If you think this is a meaningful
- addition to this library, please send a patch. Otherwise,
- please check for the validity of votes BEFORE you pass them
- to this election module.
+.. Note::
+
+ *You* are responsible for ensuring that the votes are in correct
+ form before you hand them to this module. This will not currently
+ check for most types of invalid votes and does not (currently)
+ accept a list of candidates at creation from which it checks all
+ votes. As such, new candidates will be created when seen. If you
+ think this is a meaningful addition to this library, please send a
+ patch. Otherwise, please check for the validity of votes BEFORE you
+ pass them to this election module.
Examples of each type of election currently supported can be seen in
the test.rb file distributed in this archive.
Each election result object will have the following methods:
-* #winner? -- return boolean as to the winner or winners of an election
+* #winner? -- return Boolean as to the winner or winners of an election
* #winners -- an array of winners of the election
* #ranked_candidates -- (where available) a list of ranked candidates
working at the MIT Media Lab. Please feel free to contribute to this
module and get your name added here.
-For more information about Mako and his programs, you can seee his
+For more information about Mako and his programs, you can see his
homepage here:
http://mako.cc