Versioning
Note
We are currently experimenting with our development practices. These are currently documented on a best effort basis, but may not be completely accurate.
Semantic versioning
We try to follow semantic versioning with our versioning scheme.
This scheme breaks down a version number into {major.minor.point}
sections.
At a point
release, there should be no changes beyond bug fixes.
minor
releases can include new features.
major
releases can break old APIs.
Version numbers
Valid version numbers are described in PEP 440.
Pre-releases
: should have versions like 1.7.0rc1
or 1.7.0rc2
.
Development versions
: should look like 1.8.0.dev0
, with a commit hash optionally appended as a local version identifier (e.g. 1.8.0.dev2+g00ad77b
).
Tooling
To be sure we can follow this scheme and maintain some agility in development, we use some tooling and development practices.
When a minor release is made, a release branch should be cut and pushed to the main repo (e.g. 1.7.x
for the 1.7
release series).
For PRs which fix an bug in the most recent minor release, the changes will need to added to both the development and release branches. To accomplish this, PRs which fix bugs must be labelled as such. After approval, a developer will notify the meeseeks bot to open a backport PR onto the release branch via a comment saying:
@Meeseeksdev backport <branch>
Where “<branch>” is the most recent release branch.
The bot will attempt to make a backport and open a PR. This will sometimes require manual intervention due to merge conflicts or test failures.