Selectricity/John Dong UROP Proposal

From WikiDotMako
Notice icon.png This page is written and maintained by someone other than Benjamin Mako Hill and is being hosted here by special arrangement.
Jiang "John" Dong
Summer 2007
Faculty Supervisor: Chris Csikszentmihályi
11 April 2007


I am writing to propose a project `Enhancement and Extension Of Selectricity Voting System` for the summer in the MIT Media Lab, working with Chris Csikszentmihályi and Benjamin Mako Hill. This project involves extending a free/open source software--Selectricity--a voting system for every day decision-making. While most voting projects are geared toward improving the process of government decision-making, Selectricity is a new project which tries to apply the best of government based election technology toward everyday decisions. These decision might be as simple as, "Where should we go to dinner?" or as complex as, "Who should be officers of a campus club?". Selectricity's goals is to employ the most appropriate algorithms to help users make the best choices and emphasizes preferential decision-making, cryptographic means of voter verifiability, and algorithmically complex election methods which would be difficult without software.

Selectricity is built on an existing election methods library written at the Media Lab and exists today as a Ruby on Rails web application. While it is primarily web based, the software also provides a prototype SMS interface accessible from mobile phones. The system is built entirely on free/open source software and will be distributed completely under the GNU GPL. Additionally, parts of the software are already deployed and in active use. Selectricity is expected to be used widely in the near future.

A prototype version of the software, HyperChad, is available online at:


Once familiar with the Ruby (the language the prototype and library is written in) and the System, I will work closely with a designer to help implement a graphic redesign of the interface, as well as take over several subprojects to further enhance the functionality and accessibility of Selectricity. While the details remain to be settled, the groups has identified several areas where I may make important contributions to the project):

  • Creating bindings to the RubyVote library to other languages, such as Python, PHP, C, and/or Mono/CLR;
  • Building an interactive front-end to the software that can be embedded in other websites (either through XML-RPC or through an iFrame);
  • The integration of an existing JavaScript crypto-voting system (providing for anonymity and voter-verifiability) currently developed by a third party and associate of the project who is tying their system into Selectricity;

In addition to work on Selectricity, I expect to assist Professor Csikszentmihályi's Computing Culture research group in other areas where I have expertise. In particular, I hope to assist in the group's Number Six microcontroller platform. In particular, I may work with graduate students and other UROPs in the development of drivers or the design of daughter-boards for the platform.

Personal Justifications[edit]

I am very interested in this project for many reasons. As a long-time supporter and contributor to the open source software movement, I am proud to be making a contribution to benefit anyone who chooses to use this software. I am also interested in learning new software and hardware skills, and as a prospective Course 6 major, I am very interested in this field of work. These responsibilities are a perfect match for me because it strikes an ideal balance between my previous experience and new things I have to learn that I will not be overwhelmed by the technology, and also I will be able to take away many new skills. In addition, I have worked with graduate student Benjamin Mako Hill on the Ubuntu project since high school. We have a good working relationship and I would be honored to be able to work with him in person on Selectricity.

Work Plan[edit]

I plan to work on this project full-time this summer, for up to 40 hours per week for a period of 10 weeks. In addition, I am interested in maintaining a long-term relationship with this group to and complete unfinished tasks from this summer UROP and to take on new projects in the future.