#vote #election #counter #voting #data #transferable

bin+lib dividebatur

Single Transferable Vote election result counter

3 unstable releases

Uses old Rust 2015

0.2.1 Feb 28, 2018
0.2.0 Feb 28, 2018
0.1.0 Jan 3, 2018

#1167 in Cryptography

Apache-2.0

38KB
814 lines

dividebatur2: process single-transferable-vote elections

crate Travis status

Currently supports the following STV election types:

  • Australian Senate under the Commonwealth Electoral Act (1918) (post 2015 voting reforms)

dividebatur2 is a work-in-progress, porting dividebatur to the Rust programming language. If you're after something more mature, check that out. The primary motivation for the rewrite is improvements in performance, and in correctness and maintainability. dividebatur2 is currently clocking in ~ 15x faster than the original Python implementation.

For a high level overview of what this does, check this blog post:

http://blog.angrygoats.net/2014/01/25/counting-the-west-australian-senate-election/

For the legislation defining the system we are implementing, see the legislation directory of the repository. The counting algorithm is defined in Section 273. Other sections define the rules around formality of ballots.

License

Copyright 2013-18, The Dividebatur Authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

See the file AUTHORS for a list of contributors to this software project.

The data located under aec_data/ is licensed under a Creative Commons Attribution 3.0 Australia Licence (CC BY 3.0), and is © Commonwealth of Australia. Full License terms are on the AEC website

Contributing

Contributions are welcomed, please feel free to send in pull requests.

Please abide by The Rust Code of Conduct when contributing to or otherwise engaging this project.

Usage

For now, check out dividebatur in the parent directory to this repository. Follow the instructions in that repository to make sure you've got all the vote data. Then you're good to go with a simple:

$ cargo run --release

Dependencies

~3.5–5MB
~82K SLoC