Discussion and draft of the Stirme Specification for OLPC
Stirme is about to provide the means for an instant electronic vote that is trustable, representative and is not dependant on a central authority. Any node can serve both as a voting centre or as a voting booth. This software should be extremely easy to use so that we could target the OLPC project (but not exclusively). It could then be used as a mean of teaching about democracy as well as an actual tool that will allow any community, whether it be local (classrooms, schools) or virtual (ONGs, open source projects) to participate in any decision process.
- Pepe and a few friends see some problems with the current school system. They create an election in an independent voting centre on a public server for their schoolmates where they can propose and decide in a representative way about actions they can take.
- Andrea's class breaks into an argument about how to approach a school project. They don't seem to be reaching an agreement, so Andrea quickly sets up a vote on her laptop and invites everyone to decide in a representative way.
- An open source community grows and its leader wants to open up the project for a more democratic representation. He provides the software for download on the project's page and invites the community to vote for a constitution on the project's online voting centre.
- An NGO wants volunteers around the world to decide quickly on certain course of action and it provides an online voting centre for volunteers to subscribe to.
As recommended by the OLPC, this software will be developed using Python and GKT. Also is intended that the graphical interface should be intuitive to any child.
Each laptop can be viewed as a node for the Stirme-network. Stirme will consist in two part, the clients or voting-booths and the server or voting-centre. Both parts will be implemented in the same bundle, so each node can act as a boot and as a centre.
When Pepe decides to create an election, he can use his own voting-centre in his laptop with the stirme-activity or he can use a external voting-centre in a public server available. He will be asked for a title, description, the choices and an expiration date for the election he's creating. [write about owner signing]
The voters would be faced to choose an election available to them, or enter manually a remote url where the election is being hosted. After that an interface will be displayed were they actually cast they casts their votes. This interface should be designed for every method of elections (Condorcet, Range Vote, etc). Before the vote is actually casted, the system must sign the vote with a digital sign identifying the voter.
After the expiration date, the server calculates the outcome of the election using the method selected by the owner. This outcome then is signed by the owner and published.
Each voter can request the whole election ballots and perform an independent recount of them assuring that his vote was counted.
For now, the communication between the nodes will be handled with XML-RCP if no better alternative, inside sugar environment, is devised.
At first, the data will be saved within the voting-centre using sqlite.