Technical vision - opencats/OpenCATS GitHub Wiki
Vision
Our technical vision is built on the following pillars:
- Improving release quality - new releases should be well tested and do not break functionality
- Encouraging developer collaboration - it should be easy for developers to contribute to the project
- Facilitating product development - instrumentation for making product decisions should be available
Quality
Continuous integration
In order to release new version of the product, there are certain activities that must be performed such as building, testing and packaging the release code. That process must be automated and developer agnostic.
At OpenCATS we achieve this by using TravisCI. For each push to the OpenCATS repository, Travis performs a set of build and tests activities and provides feedback by reporting a green/red build. In case the build is not successful a full log is available to enable developers to fix it.
## Testing
Unit tests
PHP Unit
Integration tests
PHP Unit for persistence layer ### Functional tests Behat
## Code quality Static code analysis
## Deployment architecture
Release planning and management
Release planning
- Using github Milestones to plan features and fixes to release
- Using github issue labels to distinguish bugs and features
- Using waffle.io for visualisation of plans and status
- Using Tags and releases for release notes
Release checklist
In order to perform a new release, it must pass all the following checklist items:
- Is the build green?
- Are new features and bug fixes covered by tests?
- Are the steps for releasing to the new version available?
- Is there a documented rollback process?
- Does the code requires changes to customer's data? Is there a migration script available?
Collaboration
Dependency management
### Composer Composer ### Remove unmaintained dependencies ### Keep dependencies up to date
Software Design Principles
Do it the right way
http://www.phptherightway.com/
## Only write for the business logic, use OpenSource for the rest Write code for business logic, reuse open source projects for the rest
Up to date stack
PHP 7
## Code review process
Product development
Licensing Intrumentation