Replies: 2 comments 1 reply
-
I'm a little confused here. If I understand correctly you want to make it that we cut minor releases from |
Beta Was this translation helpful? Give feedback.
-
I'm in favor of the default being we always cut releases from The version branches are primarily beneficial for actually backporting, i.e. One thing to consider, is building the practice of never implementing a change in a breaking way until the version is ready to released. When dealing with breaking changes, there is going to be some maintenance burden on the team to manage the breaking change until the version is release. You can either do this by putting that change in a separate branch, or you can do it by taking on some short term tech debt of maintaining separate workflows in the code. imo maintaining separate workflows in one branch is easier than maintaining 2 branches. |
Beta Was this translation helpful? Give feedback.
-
Context
Currently celestia-app maintains two branches:
main
v1.x
Most PRs target
main
by default and are optionally backported tov1.x
if they need to be included in a subsequentv1.x
release.Problem
The backport process leads to friction because it leads to two PRs for most changes. The added friction has caused fixes to be merged to
main
without being merged tov1.x
(example).Proposal
My hunch is that the number of changes on
main
that need to be released inv2.0.0
are extremely small compared to the number of changes onmain
that can be released in a subsequentv1.x
release. I think the maintenance burden originates from us prematurely creating and maintaining av1.x
branch. My proposed branch management:main
is the default branch that PRs target. The latest releases are always cut frommain
.v2.x
branch for breaking changes. This branch should have branch protection rules and shouldn't merge tomain
until immediately prior to us creatingv2.0.0
. At that time, we can create a longer-livedv1.x
branch that only accepts critical fixes that need to be backported.Steps
main
that need to be released inv2.0.0
to a new branchv2.x
.main
.v1.x
branch.v1.x
releases frommain
.Optionally:
v2.x
that targetsmain
.v2.x
.When we eventually cut a
v2.0.0
, we may create av1.x
branch that accepts backports and doesn't include thev2.x
breaking changes. At that point,main
will be the default branch for all PRs because most changes should target subsequentv2.x
releases and only critical fixes need to be backported tov1.x
.Notes
If we plan on cutting a
v2.0.0
in the short-term, this proposal doesn't provide much benefit. But the idea may still apply to future releases. For example, we can delay the creation of av3.x
branch until the time wheremain
introducesv3.x
breaking changes.Beta Was this translation helpful? Give feedback.
All reactions