Is your feature request related to a problem? Please describe.
Currently, the MONAI repo has
master branch: accepting pull requests, new features and/or bug fixes -- full CI/CD tests, nightly tests.
releases/* branch: branching off from the master, no direct commits allowed -- releasing/packaging related tests
- contributors' pull request
forks: code change proposals -- quick pre-merge tests.
This approach is simple and efficient. But it has the problem that there is no place for the new features that are scheduled beyond the current release (they only live in some of the contributors' forks).
Describe the solution you'd like
As we discussed in the dev meeting, we'd like to follow a more rigorous releasing approach.
main branch: for production-ready features, milestone releases -- releasing/packaging related tests
dev branch: for all new features -- full CI/CD, nightly tests
releasing/* branch: a subset of new features from dev, to be released, could have additional bug fixes for releasing
forks of the contributors: new feature proposals -- quick pre-merge tests
So, the new workflow would be:
The contributors add new features to dev via pull request.
The maintainers plan and build a releasing/* branch (from dev).
The maintainers merge the production-ready releasing/* to main and tag main for a new milestone.
The users download and use the package built from the new release upon main.
Tasks:
cc @ericspod
update:

Is your feature request related to a problem? Please describe.
Currently, the MONAI repo has
masterbranch: accepting pull requests, new features and/or bug fixes -- full CI/CD tests, nightly tests.releases/*branch: branching off from the master, no direct commits allowed -- releasing/packaging related testsforks: code change proposals -- quick pre-merge tests.This approach is simple and efficient. But it has the problem that there is no place for the new features that are scheduled beyond the current release (they only live in some of the contributors' forks).
Describe the solution you'd like
As we discussed in the dev meeting, we'd like to follow a more rigorous releasing approach.
mainbranch: for production-ready features, milestone releases -- releasing/packaging related testsdevbranch: for all new features -- full CI/CD, nightly testsreleasing/*branch: a subset of new features fromdev, to be released, could have additional bug fixes for releasingforksof the contributors: new feature proposals -- quick pre-merge testsSo, the new workflow would be:
The contributors add new features to
devvia pull request.The maintainers plan and build a
releasing/*branch (fromdev).The maintainers merge the production-ready
releasing/*tomainand tagmainfor a new milestone.The users download and use the package built from the new release upon
main.Tasks:
devbranch with proper CI/CDmainbranch for milestonesmasterbranchreleases/*they are temporary branches, tagged commits are available atmaincc @ericspod
update:
