Wow this thread is very depressing. I'm really sorry to say that this time I strongly disagree with HNers.
I'm a previous human rights activist and I worked in a lot of past elections in Turkey. I am very opinionated on this issue and I strongly believe the future is software-only votes.
Naive reasons why we should use software-only voting:
1. Humans can do mistakes. Machines can't do mistakes (unless humans who programmed them did mistakes)
2. It takes more time and resources to count votes compared to automating it.
3. You'll use less paper, so better for environment.
Better reasons why:
1. Voting is an entirely impossible-to-debug process. If you live in a corrupt republic like Turkey of Russia you need to spend thousands of dollars and people to ensure elections are held democratically. Because government won't ensure that or they will actively work against it. Software can be made debuggable.
2. If you live in a country like Russia, government can attempt collect data about your votes to estimate/learn which party you voted for. With cryptography this can be made mathematically impossible (or equivalent to very hard problems like PvsNP)
3. Recalculating election results is very infeasible in real life. If you store election data (so that it's impossible to find who voted what) and make it open, everyone can confirm election results EVEN IF we find a bug in retroactive computation script.
4. With free software (free as in freedom) it is possible for experts (computer scientists, cryptographers, law makers, attorneys etc...) to audit the process of election. This is not possible in real elections: lawyers cannot audit the election so it's possible some people make wrong decisions interfering in people's votes (i.e. deciding a bad vote to be ok, vice versa)
Problems:
1. Backdoors etc. Solution: use free software and pay experts to redundantly confirm system works. Pay software engineers to maybe write parts of the system in agda, idris, coq so it's provable. This is not terribly worse than the space program etc.
2. Not everyone can use computers. Solution: you can organize the exact same election system, call people to special places to vote and use computer instead of paper.
3. What if we're hacked even after experts checking the system? Solution: redundantly store the data, use parity bits RAID etc to ensure data integrity. If there is some unrecoverable data loss, cancel elections.
> Humans can do mistakes. Machines can't do mistakes (unless humans who programmed them did mistakes)
That's an incredibly limited view of the issue. Machines can make mistakes regardless of human intervention (albeit probably indirectly, because humans have an unprecedented level of influence on reality). First, there are known software glitches caused by unexpected bit flips. Second, software systems can grow to a level of complexity where unless you invest orders of magnitude more time in theorem provers for it you cannot guarantee that 'machines can't do mistakes'.
Electronic voting is an interesting problem and I agree with you, it's probably the future. But it's not a near future or not as near as you'd think. Electronic voting is vulnerable to attacks which cannot be detected when they happen. Armies of diverse human observers for paper ballots are much more effective for detecting fraud.
Also if one goes with a private-blockchain you could reuse the existing infrastructure. Make all the polling places run their own nodes.
Being a programmer, sysadmin or whatever, is such a common occupation nowadays.
I'm a previous human rights activist and I worked in a lot of past elections in Turkey. I am very opinionated on this issue and I strongly believe the future is software-only votes.
Naive reasons why we should use software-only voting:
1. Humans can do mistakes. Machines can't do mistakes (unless humans who programmed them did mistakes)
2. It takes more time and resources to count votes compared to automating it.
3. You'll use less paper, so better for environment.
Better reasons why:
1. Voting is an entirely impossible-to-debug process. If you live in a corrupt republic like Turkey of Russia you need to spend thousands of dollars and people to ensure elections are held democratically. Because government won't ensure that or they will actively work against it. Software can be made debuggable.
2. If you live in a country like Russia, government can attempt collect data about your votes to estimate/learn which party you voted for. With cryptography this can be made mathematically impossible (or equivalent to very hard problems like PvsNP)
3. Recalculating election results is very infeasible in real life. If you store election data (so that it's impossible to find who voted what) and make it open, everyone can confirm election results EVEN IF we find a bug in retroactive computation script.
4. With free software (free as in freedom) it is possible for experts (computer scientists, cryptographers, law makers, attorneys etc...) to audit the process of election. This is not possible in real elections: lawyers cannot audit the election so it's possible some people make wrong decisions interfering in people's votes (i.e. deciding a bad vote to be ok, vice versa)
Problems:
1. Backdoors etc. Solution: use free software and pay experts to redundantly confirm system works. Pay software engineers to maybe write parts of the system in agda, idris, coq so it's provable. This is not terribly worse than the space program etc.
2. Not everyone can use computers. Solution: you can organize the exact same election system, call people to special places to vote and use computer instead of paper.
3. What if we're hacked even after experts checking the system? Solution: redundantly store the data, use parity bits RAID etc to ensure data integrity. If there is some unrecoverable data loss, cancel elections.