First, I am just going to say without making our votes personally identifiable, it's not possible to vote electronically in a way the voter can trust.
Why is that?
Here is an analogy:
There is a room, with a person in it, and that room is secure. Nobody can enter or leave, except for that person, and nobody has access to the resources inside that room, except the person.
You, the voter approach and communicate your vote. The person in the room makes a record, and then communicates your vote back to you. They may even produce a piece of paper for you to remember your vote by.
Once everyone has voted, this person leaves the room and communicates the total votes. There is no recording of the voter interaction, just that person interpreting the votes they hear, keeping track of them, and communicating a final tally.
The problem is obvious, right? That person can do whatever they want and nobody is going to be able to prove otherwise.
Now, that problem can be mitigated somewhat. Exit polls can be used to analyze the statistical nature of the votes and compare against the tally. And if incremental vote counts are communicated, math can be applied to that as well. We can sort of gain confidence in the election.
Compare that to a room where people collect ballots. That room is secure, so the ballots can be aggregated with few worries, but is otherwise visible to everyone.
In case of error, the ballots can be brought out, examined in any number of ways and we can arrive at a very high confidence in the election outcome.
The basic problem we have with electronic input is that the electronic record isn't directly human readable. There is no way for the voter to know the record of the vote used for the tally actually reflects their intent.
With physical vote records, a few things are true:
1) The chain of trust between voter intent and the actual vote record is intact. The voter can understand their record matches their intent. With a touch screen, button, or some other thing, that record of intent is really just a grease smudge on the input device, while the intent walks away unrecorded.
2) Because of #1, say you press "bob" on the touchscreen. The computer responds with "yup, you pressed bob" and one thinks it's all good. But the computer can also add "Jane" to the tally, and the voter can't know. Or their vote can be ignored, fractionally counted, whatever. No chain of trust.
3) Electronics are made to state change. That's how we do computation. Paper, other physical media is very difficult to change in a way that cannot be seen. Erasing a mark, making a mark, all involve basic physical processes and the rules of the world we live in more or less make changes impossible to make transparent.
4) With physical media, the voter expression of intent is used directly to form a tally. With electronics, some interpretation of the voter intent is used, and not even used directly, as it's a chain of temporary states all the way through.
Why does this matter? Should this not be a fundamental crisis in computing if true?
Nope. Now think through the things we do with computing machines. I am writing this text. I can see the text fed back to me, and it could be modified without me knowing, but for the fact that said text is a dialog. We all have some concept of the state of things and modifications would very quickly come out of changes to the text, unless said changes were very sophisticated.
Banking always has redundant paper. Ever wonder why tellers are required to report the number of bills dispensed on a cash withdrawal, or you get a receipt and they keep one too? This is why. Same goes with merchants selling things, people buying them. Multiple, personally identifiable parties, are interested in the record and multiple, distributed often physical records are kept and reconciled regularly.
We can't do this with elections because of the following four pillars of a trustworthy election:
1) Anonymonity. Everyone's vote is private. We do not personally identify votes for fear of crime associated with votes.
2) Freedom. Everyone can vote or not as they see fit.
3) Transparency. A vote can be seen from the moment it is cast, through to final tally. (admittedly, many parts of the US do this poorly, but shouldn't)
4) Oversight. Everyone can understand the election process and this depends on transparency being in play. The law, the ballots, all of it.
When one factors in the input validity and forced voter trust problems inherent in electronic voting, the problem becomes super hard. Personally identifying voters is necessary to complete the picture and make something trustworthy.
This is why we cannot write voting software. It's not incompetence, or any other lame thing. It's an unsolvable problem, unless we want to make votes personally identifiable. Should we do that, there are lots of great solutions we can draw from.