Our initial design document is our application for the GSOC. We'll be evolving this document into a specification.
Basic Design Vision
Every XO acts as a node when this application is loaded. Each node is capable of behaving as a voting booth and a as a voting centre. It's planned to use the mesh networking capabilities to auto-discover other nodes and accessible voting centre. For further scalability the voting centre module can be loaded into an Internet server to which nodes can subscribe.
Every node can load "identities" which identify each voter. These identities are in fact cryptographic keys associated with the voter. A node downloads a signed (by the election's creator) election data (about the options and such) and sends back a signed vote (by the voter). After the election expires, the voting centre publishes the signed election bundle which includes both the original election data, the results, and, on demand, all the actual votes cast, so that each node can independently count the votes and verify if its particular signed vote was counted. For this GPG will be used. While the use of GPG makes the process transparent, it doesn't provide anonymity which would be a desirable option to add in the future.
For the communication between the nodes, the client and server side, will be through a Web Service protocol. This must be done completely from the beginning, i'll require some experienced developer help at the design level if available.
There are many voting mechanisms and ways to count votes, but initially it will be just developed for the Schulze method. These other methods should be cleanly added in a modular way.