ElementsProject / ElementsProject/lightning

proc: Release branches to retain development velocity

Open
#9,295 3 comments 5 reactions 1 assignee Claimed by @cdecker View on GitHub
Dominant language
C
Stars
3.1k
Forks
1k
Avg merge
4d 10h
Merged PRs (30d)
13

Description

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:

1. Preparation: Changelogs and version numbers are bumped on master.
2. Branching: A release branch is forked off from master after the versioning bumps but before tagging the release commit.
3. Tagging: The release is tagged directly on the release branch.
4. 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 :+1: and :-1: if you think we should / shouldn't do it

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.