Skip to content

voteview/voteview-dev

Repository files navigation

vvtool

docs Documentation Status
tests
Travis-CI Build Status
package
PyPI Package latest release PyPI Wheel Supported versions Supported implementations
Commits since latest release

This project contains tools for managing the Voteview server.

Any manual changes to the database contents can be applied through this tool.

What's good

The advantages of using vvtool:

  • All migrations are versioned.
  • All migrations can be programatically applied and reverted.
  • All migrations are documented in the changelog.
  • All migrations can be developed and tested on the user's local computer instead of running for the first time in production.
  • The representation of database objects can be standardized: vvtool defines a set of attributes for Member, Rollcall, and other objects.
  • Any changes to software or migrations can be tested automatically on a continuous integration server.
  • The software can be documented centrally instead of using scattered shell scripts.
  • vvtool connects directly to a test database or the production database, reducing the differences between the test environment and the production environment.

What's bad

  • Requires a few setup steps.
  • Doesn't require changes to go through continuous integration testing, since users can submit jobs directly to the target server. So it's possible that a script could be executed without ever being tested. This shortcoming could be changed by swiching to a continuous deployment strategy whereby users would simply submit migrations to GitHub, wait for them to go through testing, and then the migrations would be automatically applied to the production database. The current situation is much simpler, so I've stuck with that for now.

Documentation

https://voteview-dev.readthedocs.io/