We're programmers. We get to see, every day, the general quality of software that's out there. Even great software has bugs. That's why I, for one, am very suspicious of electronic voting. Today I read another story about problems with e-voting. In this case, it sounds like it may have been hardware problems, but that's not an excuse when "democracy" is on the line.
BT - the outfit behind the St Albans trial - said the computers which "experienced faults" were "installed by one of the contractors employed by BT to deliver technology and services to the local authorities".
In the above, I'm assuming that BT is British Telecom (though I could be way off case there). In any event, there are a few questions I'm curious about. How was BT vetted? How was the code vetted? Who were the contractors and were they vetted? There are enough problems with electronic voting that I certainly don't want temporary employees involved.
How to fix this? I think the first step would be to make the code open source. Anyone with a passing knowledge of cryptography is going to tell you that open source crypto is just as secure as closed course and, in fact, more so because we get a chance to see what it's doing and if we still can't break it, then it's more likely to be secure.
In the case of e-voting, I want all levels of security experts poring over that code, the network it runs on, the operating systems involved, etc. What's the point of my voting if I can no longer trust that my vote counts? What could possibly be the justification of keeping this code hidden from the public? If it's secure, it's secure. If it's not secure, they don't want us to know.