I think we can all agree (this will likely provoke disagreement) that a voting machine that records a vote electronically without a way to do a manual verification is a bad idea. How then should a proper voting machine work. My suggestion is to have a touch screen on which the voter makes his/her selections (invalid selections would not be allowed). The voter would
- Make selections on screen
- Print ballot
- Compare ballot to screen
Once the voter receives the printout he/she would then compare the printed ballot with the selections made on screen. At that point the voter would be required to press one of
- Accept this ballot as correct (this would reset the machine for the next voter) or
- Reject this ballot as invalid (this would lock the machine leaving the current selections visible)
Rejecting a ballot would require intervention from polling station officials from both parties. They would determine whether or not the ballot was correctly printed. If correctly printed then the machine would be unlocked/reset. If not correctly printed then the machine would be shut down.
In the event that the ballot was correctly printed, the voter would insert the ballot into a scanner to record/count the votes. The scanner would only be opened in the presence of officials from both parties.
The ballots could be printed in a human readable form (names and check boxes) plus machine readable fields (bar codes/QR codes) where the machine readable selections would differ from the human readable selections. Because of this, bar/QR codes should not be allowed.
In the event of a dispute, paper ballots would be available for manual recount. This would avoid the problem of hanging chads.
Voting machines would be physically locked to prevent tampering and would not be network accessible or have any external ports. All software would be open source and publicly available for all concerned groups to audit for security and proper operation.