This document describes the current release and versioning strategy. This strategy is likely to change as Rerun matures.
New Rerun versions are released every two weeks. Sometimes we do out-of-schedule patch releases.
Each release include new versions of:
- The Python SDK
- The Rust SDK
- All rust crates
We use semantic versioning. All versions are increased in lockstep, with a minor version bump each time (0.1.0
, 0.2.0
, 0.3.0
, …).
This means we might add breaking changes in each new release.
In rare cases we will do patch releases, e.g. 0.3.1
, when there is a critical bug fix. These patch releases will not contain any breaking changes.
We sometimes do pre-releases. Then we use the versioning 0.2.0-alpha.0
etc.
We have not yet committed to any backwards or forwards compatibility.
We tag all data files (.rrd
files) and communication protocols with the rerun version number. If there is a version mismatch, a warning is logged, but an attempt is still made to load the older or newer data.
Release builds of the Python Wheels are triggered by pushing a release tag to GitHub in the form v0.2.0
.
If we are doing a patch release, we do a branch off of the latest release tag (e.g. v0.3.0
) and cherry-pick any fixes we want into that branch.
-
Check the root
Cargo.toml
to see what version we are currently on. -
The name should be:
release-0.x.y
for final releases.release-0.x.y-alpha.N
whereN
is incremented from the previous alpha, or defaulted to1
if no previous alpha exists.
-
Update
CHANGELOG.md
.It should include:
- A one-line summary of the release
- A multi-line summary of the release
- A gif showing a major new feature
- Run
git tag -d latest && git fetch --tags ; pip install GitPython && scripts/generate_changelog.py
- Edit PR descriptions/labels to improve the generated changelog
- Copy-paste the results into
CHANGELOG.md
. - Editorialize the changelog if necessary
- Make sure the changelog includes instructions for handling any breaking changes
Once you're done, commit and push the changelog onto the release branch.
-
Run the release workflow.
In the UI:
- Set
Use workflow from
to the release branch you created in step (2). - Then choose one of the following values in the dropdown:
-
alpha
if the branch name isrelease-x.y.z-alpha.N
. This will create a one-off alpha release. -
rc
if the branch name isrelease-x.y.z
. This will create a pull request for the release, and publish a release candidate.
-
- Set
-
The PR description will contain next steps.