Kicking off open development

We’re kicking off open development of VotingWorks! This is going to take some time to get right, so please forgive the quirks early on.

The first big coding task is to build a React version of the Anywhere Ballot. There is a very rough prototype of how the VotingWorks Ballot Marking Device (BMD) will work:

and there is an empty repository ready for building the actual AnywhereBallot as a React component, which bmd will then use instead of its super rough prototype ballot.

I’ll be creating some github tickets.

Dev approach is: fork the repo, build some code, submit a PR. I think I’ve done the right thing with the Contributor License Agreement that you’ll then be prompted to sign. It’s basically a clone of Apache’s CLA.

Let’s get this thing going!


Yup. CLA works great. I was prompted to agree to it after submitting a PR.

OK, I’ve written up a little bit about the VotingWorks Model 1: the first pass at what we want to build. I’m sure there will be questions, so ask away, either as comments in the Google doc or in this thread. And as you can see, much work remains in the design itself, but we’ll iterate!

Hi Ben,
I have a few questions, and you are free to point out that I may be naive.

  1. Isn’t the idea very similar to Star vote?
  2. Why do they not take a receipt after dropping the ballot that they can use to verify later?
  3. Why does the scanning happen centrally and away from the precinct? Why can’t the Chromeboxes be in a precinct from where the ballots can be scanned before the voters themselves?

Thank you. :’)

Hi Masood,

Thanks for these questions.:

  • I should clarify this for folks who know my previous work: VotingWorks is *not *, at this stage, an e2e verifiable voting system. It is a classic voting system. So, yes, if one were to add e2e, it would look a lot like starvote.
  • there’s no receipt because it’s a classic voting system.
  • the scanning is central because it is a simpler initial product than to scan at the precinct. Also, with a BMD, the incremental advantages of in-precinct scanning are small, and the robustness cost high. In the future, I expect model 2 or 3 would have precinct scanning.


1 Like

Hey folks, quick thing: on second thought, having an extra repo for the anywhere ballot is premature modularization. Let’s do everything in, we can modularize within that repo as needed. I’ll delete the anywhere-ballot shortly and start adding github tickets in the bmd one.

Initial tickets:

If you’re interested in digging into one, feel free to ask questions / comment directly in github!

These initial tickets are great to get off to a start. Do you want to use a documentation generator or do you think good naming and comments should be enough?

I think at this stage documentation generation might be premature, unless you love one approach then I’m game to try it. I would absolutely endorse clear comments at least for function/method definitions that aren’t immediately clear.