-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
A branching and release strategy was discussed and implemented in #165 and #190. I've identified several problems with this strategy from the point of view of a contributor to FAIR Connect:
- This strategy results in a non-stable target branch for PRs. Every six weeks the target branch for PRs will change.
- A contributor (new or old) who clones the repo or attempts to use the GitHub web UI to propose a change will end up both branching from and targeting the wrong branch. Requiring PRs to target a non-default branch is highly unusual.
- All contributors will need to discover the name of the new target branch every six weeks, use it in all their branching commands, and find and select it as the target branch for each PR. This will be laborious and introduces the likelihood of making mistakes.
- All in-progress PRs will need to be retargeted every six weeks.
- PR authors without maintainer-level access do not have permission to retarget their own PRs. This means a PR gets blocked until a release manager retargets it to the new release branch.
- GitHub will actually automatically retarget PRs onto the default branch when the release branch gets merged, so there will be at least two retargets in short succession on in-progress PRs.
- The release version number is effectively chosen six weeks in advance. Probably fine for minor releases but it doesn't lend itself well to point releases or major releases.
- The release branch -- instead of the
developmentbranch -- gets merged into main.- A change can therefore bypass QA by being merged into the release branch shortly before it gets merged into
main. - In the context of the release workflow, the
developmentbranch should be the one that gets merged intomain. - However, the role of the
developmentbranch is unclear. The documentation states that it acts as a staging ground, but that's only true during the short window after the release branch is merged intodevelopmentand when it's merged tomain. It's serving no different purpose to the release branch.
- A change can therefore bypass QA by being merged into the release branch shortly before it gets merged into
- As far as I can tell, this branching strategy is novel.
- That doesn't make it fundamentally problematic, but it does indicate that perhaps it's trying to do something that's better served by an existing and well-known branching strategy.
- The "Release Isolation" principle heavily dissuades work being done that is not intended for the current release. This principle is better suited to structured teams working in well-defined sprints, not open source projects looking to encourage outside contribution.
- Given the six-week cadence of releases of FAIR Connect I would be tempted to recommend the standard GitHub Flow which is basically just feature branches targeting the default branch. The default branch is either the release-ready
mainor adevelopbranch which gets merged into it for release, the latter enabling more straight-forward hotfix releases.
I appreciate the considerable time spent by others on the branch and release strategy. I think the current strategy is not the correct one.
Edit: I have corrected the cadence of the FAIR Connect plugin to every six weeks.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels