Difference between revisions of "Electowidget"

From Electowiki
Jump to: navigation, search
(Announcing Electowidget! (links may not work right away))
 
 
(13 intermediate revisions by 4 users not shown)
Line 1: Line 1:
'''Electowidget''' is a plugin for MediaWiki designed to make it possible to conduct Internet polls and elections using many different [[wikipedia:Voting systems|voting systems]], including the [[Wikipedia:Schulze method|Schulze method]], [[Wikipedia:Instant runoff voting|Instant runoff voting]], [[Wikipedia:Approval voting|Approval voting]], and even plain old [[Wikipedia:Plurality|Plurality]].  It also assists in explaining different election methods by providing an easy way of tallying example elections, and comparing the results as computed by different elections. The modular design allows for plugging in new election tallying methods, different ballot designs, and different ballot formats.
+
'''Electowidget''' is a PHP library (initally a plugin for MediaWiki) designed to make it possible to conduct Internet polls and elections using many different [[wikipedia:Voting systems|voting systems]], including the [[Wikipedia:Schulze method|Schulze method]], [[Wikipedia:Instant runoff voting|Instant runoff voting]], [[Wikipedia:Approval voting|Approval voting]], and even plain old [[Wikipedia:Plurality|Plurality]].  It also assists in explaining different election methods by providing an easy way of tallying example elections, and comparing the results as computed by different elections. The modular design allows for plugging in new election tallying methods, different ballot designs, and different ballot formats.
  
 
Latest news:
 
Latest news:
 +
* August 9, 2009 - Electowidget back from the dead!  I've installed a new version on this wiki, which is now simply a tag extension to standard MediaWiki (no patching required).  No official release yet, but there's a new [http://bitbucket.org/robla/electowidget/ Bitbucket repository] with some updated code in it.
 
* October 29, 2005 - Initial Electowidget release!  (version 0.1.0)  
 
* October 29, 2005 - Initial Electowidget release!  (version 0.1.0)  
  
Line 10: Line 11:
 
Electowidget is a plugin for MediaWiki designed to make it possible to conduct Internet polls and elections using many different [[wikipedia:Voting systems|voting systems]], including the [[Wikipedia:Schulze method|Schulze method]], [[Wikipedia:Instant runoff voting|Instant runoff voting]], [[Wikipedia:Approval voting|Approval voting]], and even plain old [[Wikipedia:Plurality|Plurality]].
 
Electowidget is a plugin for MediaWiki designed to make it possible to conduct Internet polls and elections using many different [[wikipedia:Voting systems|voting systems]], including the [[Wikipedia:Schulze method|Schulze method]], [[Wikipedia:Instant runoff voting|Instant runoff voting]], [[Wikipedia:Approval voting|Approval voting]], and even plain old [[Wikipedia:Plurality|Plurality]].
  
Electowidget isn't designed for secure public elections. Rather, it's designed for the types of informal polls and elections that currently happen on wikis today.  It's also designed as a tool to help election theorists provide comparitive examples of how a given result will be tabulated comparing multiple different systems.
+
Electowidget isn't designed for secure public elections. It's primarily designed as a tool to help election theorists provide comparative examples of how a given result will be tabulated comparing multiple different systems.  The initial version supported conducting polls, but this functionality is now dormant.  Development in the near term will be focused toward making it easier to input full datasets from election data and/or developing theoretical election results.
  
All data is stored on wiki pages, in [http://json.org JSON format].  That means that there's an audit trail for every change that is made to the wiki.
+
Currently, a [http://json.org JSON-based format] is the only supported format.
  
== Example elections ==
+
== Using Electowidget ==
  
Here's a few example electionsUnless otherwise noted, the configurations for these elections are protected (to ensure that the examples remain in a usable state), but they will all have read/write counterparts that you can play with.
+
Now that you've been warned, the easiest thing to do is to copy the configuration for [[#Example elections|an example election]], and create a new page with your election on itSince election configurations are just wiki pages, the same editing instructions for editing a wiki apply here, except that the syntax is substantially different.
  
* [[Electotest:Election:10 TV Shows]] - an example based on the top 10 season passes on TiVo.
+
A somewhat complete reference for the election configuration pages is here:
** [[Electotest:Election:10 TV Shows (editable)|Editable version]]
+
* [[Electowidget Configuration Reference]]
* [[Electotest:Election:Mock U.S. Presidential Election, combined 2000 and 2004]] - mock election with the nominated candidates for U.S. President from all major and most ballot-qualified minor candiates from 2000 and 2004, in addition to the major candidates vying for the Democratic and Republican nominations in 2000 and 2004. 
 
** [[Electotest:Election:Mock U.S. Presidential Election, combined 2000 and 2004 (editable)|Editable version]]
 
<!-- Hiding for now
 
** Different ballot types
 
*** barscale
 
*** radioarray
 
*** singlecheckbox
 
*** singleradio
 
*** stars
 
-->
 
* [[Electotest:Election:2003 Debian Project Leader]] - comparison of Schulze(wv-mod) and Instant Runoff in calculating the 2003 Debian Project Leader election.  (Schulze was used, but the results using Instant Runoff were interesting).
 
** [[Electotest:Election:2003 Debian Project Leader (editable)|Editable version]]
 
  
== Setting up an election ==
+
An [http://robla.net/2005/jsonwidget/example.php online Javascript-based editor] for election configurations is available.  When you have everything configured like you want it, view "edit source", copy the text, and save it inside of <nowiki><electowidget></electowidget></nowiki> tags.
  
If you have access to a running version of (such as [http://wikitest.electorama.com the Electowiki test installation]), setting up an election is reasonably straightforward.
+
== Example elections ==
 
 
Before getting started, thoguh, there are several important caveats with the current version:
 
*  There is '''no privacy'''.  Since everything is stored as a wiki page, that means there's a complete, public audit log of every change, '''including votes'''.  Future versions will probably lock this down, but it's not an immediate priority.
 
*  There is '''little security'''.  Ballot box stuffing is easy, and I can't guarantee that ballots cast by one person can't be changed by a different person (though some measures have been taken to prevent the latter).
 
*  Performance is pretty bad.  No systematic performance work has happened to fix this up just yet.
 
*  It's probably still pretty buggy.
 
  
Now that you've been warned, the easiest thing to do is to copy the configuration for [[#Examples|an example election]], and create a new page in the Election: namespace with your election on it.  Since election configurations are just wiki pages, the same editing instructions for editing a wiki apply here, except that the syntax is substantially different.
+
[[2003 Debian Project Leader Election]]
 
+
* [[Electowidget/2000 U.S. Presidential Election example]]
A somewhat complete reference for the election configuration pages is here:
 
* [[Electowidget Configuration Reference]]
 
  
 
== MediaWiki administrator information ==
 
== MediaWiki administrator information ==
Line 52: Line 33:
 
You can install Electowidget as a plugin on a MediaWiki 1.5.1 installation.  As October, 2005, it requires a small patch to the base installation to work, however, and probably won't work with earlier versions of MediaWiki, nor will it work with the development version of MediaWiki (due to some refactoring that has happened). It also mostly requires PHP 4.  It runs under PHP 5, but there's a known issue or two.
 
You can install Electowidget as a plugin on a MediaWiki 1.5.1 installation.  As October, 2005, it requires a small patch to the base installation to work, however, and probably won't work with earlier versions of MediaWiki, nor will it work with the development version of MediaWiki (due to some refactoring that has happened). It also mostly requires PHP 4.  It runs under PHP 5, but there's a known issue or two.
  
Download the tarball to get started.
+
* [http://electorama.com/2005/electowidget/downloads/electowidget-0.1.0.tar.gz Download the tarball to get started]
 +
* [[Electowidget Installation]] - step-by-step installation instructions for Electowiki (assumes you already have  [http://mediawiki.org MediaWiki] installed.
  
 
== Developer information ==
 
== Developer information ==
Line 58: Line 40:
 
Electowidget is programmed in PHP.  It's currently pretty tightly bound to MediaWiki, but an effort is already underway to generalize it, and make it possible to plug into any PHP application that provides the necessary support infrastructure.
 
Electowidget is programmed in PHP.  It's currently pretty tightly bound to MediaWiki, but an effort is already underway to generalize it, and make it possible to plug into any PHP application that provides the necessary support infrastructure.
  
[http://electorama.com/2005/electowidget-dev/ Doxygen documentation] is available.
+
[http://electorama.com/2005/electowidget/classdocs/ Doxygen documentation] is available.
  
 
== Screenshots ==
 
== Screenshots ==
  
 
No screenshots yet, but the [[#Example elections|example elections]] are web accessible live demos.
 
No screenshots yet, but the [[#Example elections|example elections]] are web accessible live demos.
 +
 +
== License ==
 +
 +
Electowidget is licensed under a BSD-style open source license.  See LICENSE.txt in the distribution for the exact text of the license.
  
 
== Help ==
 
== Help ==

Latest revision as of 22:53, 9 August 2009

Electowidget is a PHP library (initally a plugin for MediaWiki) designed to make it possible to conduct Internet polls and elections using many different voting systems, including the Schulze method, Instant runoff voting, Approval voting, and even plain old Plurality. It also assists in explaining different election methods by providing an easy way of tallying example elections, and comparing the results as computed by different elections. The modular design allows for plugging in new election tallying methods, different ballot designs, and different ballot formats.

Latest news:

  • August 9, 2009 - Electowidget back from the dead! I've installed a new version on this wiki, which is now simply a tag extension to standard MediaWiki (no patching required). No official release yet, but there's a new Bitbucket repository with some updated code in it.
  • October 29, 2005 - Initial Electowidget release! (version 0.1.0)

About

Electowidget is a plugin for MediaWiki designed to make it possible to conduct Internet polls and elections using many different voting systems, including the Schulze method, Instant runoff voting, Approval voting, and even plain old Plurality.

Electowidget isn't designed for secure public elections. It's primarily designed as a tool to help election theorists provide comparative examples of how a given result will be tabulated comparing multiple different systems. The initial version supported conducting polls, but this functionality is now dormant. Development in the near term will be focused toward making it easier to input full datasets from election data and/or developing theoretical election results.

Currently, a JSON-based format is the only supported format.

Using Electowidget

Now that you've been warned, the easiest thing to do is to copy the configuration for an example election, and create a new page with your election on it. Since election configurations are just wiki pages, the same editing instructions for editing a wiki apply here, except that the syntax is substantially different.

A somewhat complete reference for the election configuration pages is here:

An online Javascript-based editor for election configurations is available. When you have everything configured like you want it, view "edit source", copy the text, and save it inside of <electowidget></electowidget> tags.

Example elections

MediaWiki administrator information

You can install Electowidget as a plugin on a MediaWiki 1.5.1 installation. As October, 2005, it requires a small patch to the base installation to work, however, and probably won't work with earlier versions of MediaWiki, nor will it work with the development version of MediaWiki (due to some refactoring that has happened). It also mostly requires PHP 4. It runs under PHP 5, but there's a known issue or two.

Developer information

Electowidget is programmed in PHP. It's currently pretty tightly bound to MediaWiki, but an effort is already underway to generalize it, and make it possible to plug into any PHP application that provides the necessary support infrastructure.

Doxygen documentation is available.

Screenshots

No screenshots yet, but the example elections are web accessible live demos.

License

Electowidget is licensed under a BSD-style open source license. See LICENSE.txt in the distribution for the exact text of the license.

Help

To either get help, or to offer help, here's a list of community resources:

Bsdstyle.png This article is licensed under a BSD-style license

See Project:Copyrights for more details