This issue is a bit of an RFC, so please everybody chime in. During a recent meeting, we discussed how we could streamline the CLN development further, and the release process, as a bit of a roadblock was mentioned. With the increased release cadence it feels like the blocking of master during the preparation and verification phases is very heavy-handed and ends up preventing us from making progress, and landing changes for ~1/3 of the time (4 releases a year, blocking for ~1month).
So my proposal here would be to change the process slightly, and after having landed the CHANGELOG.md updates and the version bumps on the master branch, we branch off into a release-vXX.YY branch, that is then used to apply changes found during the release candidates, and followup hotfixes, if any.
Changes would then just be normal PRs targetted to master as normal, but we'd then cherry-pick or rebase the PRs that are necessary to address changes onto the release branch too. This can slightly increase the complexity for the couple of hotfixes that tend to land late in the release process, but allows us to retain the development velocity on the master branch.
So quick summary here:
If adopted we will transition from cutting releases directly from a frozen master branch to using dedicated release branches. The new procedure is as follows:
- Preparation: Changelogs and version numbers are bumped on master.
- Branching: A release branch is forked off from master after the versioning bumps but before tagging the release commit.
- Tagging: The release is tagged directly on the release branch.
- Hotfixes: If a hotfix is required for a release, the fix must be staged as a PR against master. Once merged into master, the commit is cherry-picked onto the active release branch.
Pros / cons:
- Positive: The master branch remains unfrozen, allowing development and PR merges to continue uninterrupted during the release cycle.
- Positive: All bug fixes are guaranteed to exist in master first, preventing regressions in future releases.
- Negative: Introduces a slight increase in process complexity, requiring maintainers to manage secondary branches and perform cherry-picks for hotfixes.
Please react with 👍 and 👎 if you think we should / shouldn't do it
This issue is a bit of an RFC, so please everybody chime in. During a recent meeting, we discussed how we could streamline the CLN development further, and the release process, as a bit of a roadblock was mentioned. With the increased release cadence it feels like the blocking of
masterduring the preparation and verification phases is very heavy-handed and ends up preventing us from making progress, and landing changes for ~1/3 of the time (4 releases a year, blocking for ~1month).So my proposal here would be to change the process slightly, and after having landed the CHANGELOG.md updates and the version bumps on the
masterbranch, we branch off into arelease-vXX.YYbranch, that is then used to apply changes found during the release candidates, and followup hotfixes, if any.Changes would then just be normal PRs targetted to
masteras normal, but we'd then cherry-pick or rebase the PRs that are necessary to address changes onto the release branch too. This can slightly increase the complexity for the couple of hotfixes that tend to land late in the release process, but allows us to retain the development velocity on themasterbranch.So quick summary here:
If adopted we will transition from cutting releases directly from a frozen master branch to using dedicated release branches. The new procedure is as follows:
Pros / cons:
Please react with 👍 and 👎 if you think we should / shouldn't do it