thanks to:
|
|
The Users' Section |
This area is for everyone who uses (or wants to use) GNU.FREE but isn't really interested in adding to it or altering it.
There is full documentation available here which always supersedes the version included with the downloads if there are any differences.
|
Documentation Links |
|
FAQ Intro |
Here's a range of questions we often get. Before you email people make sure you've seen all the answers here. If you have and your question still hasn't been answered then feel free to email us!
- What does GNU.FREE stand for?
- Why use GNU.FREE? Why not use it?
- Why doesn't x/y/z work? What does this error message mean?
- So where does GNU.FREE come from? What's the history?
- Why isn't there a real-time indication of how each party/candidate is doing?
- How does GNU.FREE's version numbering work?
- So what happens when a voter uses GNU.FREE?
|
FAQ Proper |
What does GNU.FREE stand for?
GNU indicates that we are an official package of the Free Software Foundation's GNU project. GNU stands for GNU's not UNIX! It's a recursive name - a programmer's joke.
FREE stands for Free Referenda and Elections Electronically, and also represents the Freedom that the General Public License, Democracy and the Internet are all about.
Why use GNU.FREE? Why not use it?
GNU.FREE, at the time of writing this FAQ, is the only fully working Internet voting software available under the GPL. It is totally cross-platform having been written in Java. It is also extremely scalable having been designed with a distributed architecture.
So why not use it? GNU.FREE is not a polling program and thus isn't for small web-page based polls, it's an Internet Voting program. It provides heavy-duty Internet voting and requires a bunch of computers and some technical skill. Also the General Public License means that any changes you make must be made available to others, so if you can't live with such terms - go somewhere else!
Why doesn't x/y/z work? What does this error message mean?
I don't know! We are always happy to help but before you ask please check the documentation on this site. That includes the JavaDoc documentation, the areas on SourceForge.
When you email someone it for help please include at least: GNU.FREE version number, Platform you are running, Version of Java Virtual Machine, relevant log files. If you have modified code or the problem is hard to explain consider including relevant code and screenshots.
So where does GNU.FREE come from? What's the history?
GNU.FREE was developed as part of a joint project at the University of Warwick Department of Computer Science and the Warwick Business School. The project was examining the impact of the Information Revolution on activism and the political process.
One major impact that people have been predicting for years is electronic voting, but during Jason's research it became apparent that all the current implementations were pretty flakey and also commercial. Jason felt this was an unacceptable state of affairs so he set about making a system that would be useful with today's technology and could be released under the General Public License. GNU.FREE is the result.
More details on his research and also copies of the papers produced as a result of the research are available in the writings section. These papers include the detailed original technical design with UML diagrams.
Why isn't there a real-time indication of how each party/candidate is doing?
This feature isn't included because it could influence the outcome of any ballot. In fact in some countries polling data and results are banned for the whole period that people can vote to help prevent a feedback loop.
If this was allowed people might see who appeared to be winning and feel that it was pointless voting for the opposition and then create a self-fulfilling prophecy. Alternatively you might like to vote for the underdog and change your vote on seeing one party apparently gaining a lead. Be it positive or negative feedback, we need to avoid this situation.
How does GNU.FREE's version numbering work?
The GNU.FREE project uses a three-tiered version numbering system which may confuse some. Here's what we track...
Distribution Version - This is the number you see in the logo at the top of this page. It counts the progression of complete releases to the public. Note that we started at v1.0 because GNU.FREE v0.x was initially developed internally at the University of Warwick for seven months before being made available under the GPL.
Program Version - GNU.FREE consists of several programs including FreeClient, RTServer, ERServer and FreeTest. Each of these change at a different rate and so they are assigned different version numbers to show this.
Class Version - Some classes go through a lot more change than others. To keep track of all the changes every individual class also has its own version number.
Despite the several tiers most people need only concern themselves with the distribution version which is the most important one for non-developers.
So what happens when a voter uses GNU.FREE?
Here's the process as it is in GNU.FREE version 1.5, some detail has been removed to make the diagram clearer. ====> or <==== indicate packets being sent, time progresses as we move down the page:
FreeClient |
|
ERServer |
|
RTServer (regional mode) |
User enters login info & clicks ok. |
====> |
Check login info against database. |
|
|
Store AuthKey and show user next screen. |
<==== |
OK! Send authorisation key and mark db entry. |
|
|
Close connection. |
<====> |
Close connection. |
|
|
User confirms vote choice and packet is made. |
|
|
|
|
Vote, AuthKey and a time stamp are sent to RTServer. |
====> |
====> |
====> |
Vote checked for validity. |
Copy of time stamp retrieved and deleted from memory. |
<==== |
<==== |
<==== |
OK! Details stored and time stamp asked for again. |
Time stamp alone is sent. |
====> |
====> |
====> |
If time stamp matches with previously sent then continue. |
|
|
|
|
Decrypt AuthKey and check it is valid. OK! |
|
|
AuthKey received, voter cannot login again. |
<==== |
Send AuthKey to ERServer. |
|
|
OK! |
====> |
If so store vote and delete AuthKey & time stamp. |
Tell user. End. |
<==== |
<==== |
<==== |
Confirm to FreeClient. |
Close connection. |
<====> |
<====> |
<====> |
Close connection. |
|
|