Installation Standards
Suggestions for improvements and changes are welcome; just open a pull request with your proposed edits.
Redeployable Code
Redeployable code is designed to be able to be picked up and installed by any interested third parties. Released code falls into one of the following groups, based on its ease of installability.
Lead
- The software can be installed, but it may require significant amounts of hand-holding, rely on undocumented configuration aspects, require significant domain knowledge etc.
http://img.shields.io/badge/installability-lead-6d6a65.svg
Bronze
- The software has a fully documented installation process, which can be followed by anybody with reasonable technical and domain knowledge to build a working deployment.
http://img.shields.io/badge/installability-bronze-8c7853.svg
Silver
- Bronze standard documentation, plus:
- A script, Puppet manifest or Chef cookbook (or combination of) which will provision and configure the server, install the code and result in a working (but not configured or fully provisioned) instance of the software.
http://img.shields.io/badge/installability-silver-lightgrey.svg
Gold
- Silver standard features, plus:
- Vagrant support: Cloning the repository,
cd
to the directory andvagrant up
will result in a working development instance. - Comprehensive documentation on taking an unprovisioned production instance
and bringing it up to production standard, for example instructions on:
- Necessary external dependencies.
- Importing data.
- A set of stub or example data which can be loaded to a development or production instance.
http://img.shields.io/badge/installability-gold-ffd700.svg
SAAS Code
SAAS code is not intended to be generally redeployable by end users (although there is certainly nothing stopping them trying). This code is instead intended to be run by mySociety, with smaller instances being generated automatically.
SAAS code has no particular standards for installability, although it should be comprehensively documented and, for the sake of sanity, consider including features such as Vagrant support for ease of development.