Hi all,
I'm proud to announce the first release of Electowidget (v0.1.0), a plugin for MediaWiki:
http://electorama.com/electowidget
Electowidget is designed to be an extremely flexible framework for implementing many different web-based ballot designs, election tallying methods, and output formats, including Approval, Copeland, Definite Majority Choice, Instant Runoff, Minmax (margins and wv), Plurality, Range, Schulze (margins, wv and wv-mod [Debian]), and Smith set, and allows chaining these together.
You can see Electowidget in action by looking at the examples listed here: http://wiki.electorama.com/wiki/Electowidget
Electowidget is useful for both conducting online polls, and for documenting and comparing sample sets of ballots.
My implementation strategy may not have been the best, and is something I'm willing to change around. In particular, it requires a small patch to MediaWiki 1.5.1, because I'm overriding a couple of key classes in MediaWiki (Article and EditPage), and I needed a way of hooking the instantiation of those classes. Since I overrode those classes, that means that any changes to the function calls in these classes affects compatibility with Electowidget.
For MediaWiki 1.6 (or 2.0 or whatever), I plan to rewrite the glue layer between MediaWiki and Electowidget, hopefully with some guidance from people on this list. I'd like to make sure that Electowidget plugs in cleanly into the next version of MediaWiki (no patch). If I'm really lucky, it'll even plug into 1.5.2, but I'm not counting on that.
The biggest problem that I need to address is performance. In particular, nothing gets cached right now. That means every reload results in a retallying of a possibly really complicated election. This is bad. I know this. ;-) That's one of the biggest reasons for rewriting the glue layer.
Anyway, if you have some time, please mess around with it and let me know what you think.
Thanks Rob