FreeAndFair / Qubie

Qubie is a passive, privacy-preserving data gathering system that helps election officials better understand the flow of voters at their polling places.
https://hackaday.io/project/11047-qubie
Other
16 stars 5 forks source link

Qubie

Qubie, also known as the Poll Queue Monitor, is a part of the Free & Fair suite of products. It is a compact polling place monitoring system that attempts to estimate the wait time for casting a vote. It can be used by jurisdictions to gather data about polling place usage and performance, for use in allocating resources for future elections. It can also optionally make wait time information available on the Web in real time, so that voters can accurately gauge how long the voting process will take them and plan accordingly (by choosing among polling places, if they have multiple options; by voting at a different time; or, in jurisdictions with early voting, by voting on a different day). The system has two main components: a small open-source hardware box running open-source software that monitors a polling place for mobile device activity, and an optional application that makes wait time estimates available online.

Correctness of the software components of the system, and privacy and security guarantees with respect to the individually identifiable data they detect, are critical aspects of this project.

Prototype Background

Prototype implementations of Qubie were developed as a part of the DemTech Research Project at the IT University of Copenhagen in 2011-2015 and were tested at Danish polling places. This implementation of Qubie is being developed completely from scratch, independently of the original project.

Development Process and Methodology

Qubie is being developed using the Trust-by-Design (TBD) software engineering methodology. The initial prototype version, available in the "prototype" directory, uses a subset of this methodology.

The TBD methodology is documented in several papers published by Joe Kiniry and his coauthors, available via http://www.kindsoftware.com/. In particular, read "Secret Ninja Formal Methods" and "A Verification-centric Software Development Process for Java", both of which were written with Dan Zimmerman.

In general, a system is comprised of:

Requirements

What follows are the mandatory and secondary requirements imposed upon Qubie. Informal verification (in the traditional software engineering sense) of these requirements is accomplished by several means, including formal verification of properties of the system's specification and implementation, as well as traceability from the requirements to artifacts that validate that they are satisfied (e.g., system tests, code review, etc.).

Mandatory Requirements

Secondary Requirements

Usability:

Efficiency:

Scalability:

Security:

Analysis:

Development Instructions

Development on the prototype version of Qubie is taking place on the Raspberry Pi platform. It is dependent on the following libraries, tools, and frameworks:

Source Code

The source code is currently under development for use on an embedded system with a minimal OS (e.g. rtos) and depends onf the following libraries, tools, and frameworks: