Thank you for your interest in RCTab. We are one of only two open source projects used to produce election results in the United States. The other is Voting Works. In 2021, fourteen cities across the country (including New York City) used RCTab in their elections.
The Ranked Choice Voting Resource Center, a nonpartisan 501(c)(3), and the Bright Spots team of volunteer programmers, provide this software and support for free, directly to jurisdictions and individuals interested in implementing ranked-choice elections. The RCVRC also provides flexible licensing to commercial vendors wishing to use RCTab with their election systems. This keeps RCTab open source and helps offset development and support costs.
-
If you’re interested in contributing code please fill out a copy of this Contributor Release Form and send it to [email protected].
-
Find or create an issue you want to work on:
- If you know Java: check out the README and the list of open issues in GitHub to see what's on deck. We plan to label issues which are good for new contributors.
- If you know Python or JavaScript: consider contributing to our partner project RCVis. It's the best open source RCV results visualizer. See the top requested features and contact [email protected] for more information.
- For non-coders we have various opportunities to help with documentation and testing.
- You can also propose a new feature or split an existing issue into multiple chunks of work.
-
Assign the issue to yourself and comment on it. Please include Chris Hughes (@chughes297) and ask any questions you have. This keeps any technical conversation tracked and allows everyone to get on the same page with all the details, before writing any code.
-
Write code:
- We adhere to the EAC's VVSG V1.0 software coding standards from section 5.2 Software Design and Coding Standards. We recommend reading this.
- We use an IntelliJ inspection tool to enforce nested scope limits required by the VVSG.
- We use Google Java Style. IntelliJ has a plugin for it which we recommend.
- Fork our repo and use the GitFlow branching model.
- All commit messages should hash-reference the issue number in the text e.g. "Don't log config file contents #520"
-
Run the Gradle "check" target, which runs code / style checks, and the regression tests. This ensures your changes do not break existing code.
-
If you're using IntelliJ, check all the boxes under the "Commit Checks" section (e.g. Reformat code, Rearrange code, etc.) when creating commits.
-
Create a pull request and make changes suggested by the reviewers. If the suggested changes significantly expand the scope of an issue, consider breaking them out into a new issue.
-
Merge your pull request and celebrate! It's a lot of work, and we really appreciate your contribution.
If you have any questions or feedback please reach out to Chris Hughes at [email protected].
-- The RCTab Team
See our pull request merging strategy and other development notes on our Wiki.