Thanks for your responses. I had some offline discussions with different persons to gather more feedback on the current discussion. The people I talked to appeared to be in favor of one supported release every year as Benedict initially suggested. The advantages mentioned were: * it is long enough to allow us to have a significant amount of work done * if some work slip to the next release it will only be delayed for one year * it does not create too much burden in term of release maintenance * it provides some certainty to the community
I believe that there is an appetite for the bleeding edge snapshots where we do not guarantee stability and that the semver discussion is not finished yet but I would like us to let those discussions go for some follow up threads. My goal with this thread was to reach an agreement on a release cadence for the version we will officially support after 4.0. My impression is that most people agree with *one release every year* so I would like to propose it as our future release cadence. Your feedback is welcome. On Thu, Jan 28, 2021 at 6:45 PM Jeremiah D Jordan <jeremiah.jor...@gmail.com> wrote: > I think we are confusing things between minor vs patch. Can we talk about > branch names? > > I think we can agree on the following statements? > > Releases made from stable maintenance branches, > cassandra-3.0/cassandra-3.11/cassandra-4.0 (once created), will limit > features being added to them and should be mostly bug fix only. > > New features will be developed in trunk. > > Now I think the thing under discussion here is “how often will we cut new > maintenance branches from trunk” and also “how long will we maintain those > branches" > > I would definitely like to see the project able to release binaries from > trunk more often then once a year. As long as we keep our quality goals in > line post 4.0 GA I think this is possible. > > > I'd like to see us have three branches: life support (critical fixes), > stable (fixes), and development. Minors don't fit very well into that IMO. > > If we want to go with semver ideas, then minors fit perfectly well. > Server doesn’t meant you make patch releases for every version you have > ever released, it is just a way of versioning the releases so people can > understand what the upgrade semantics are for that release. If you dropped > support for some existing thing, you need to bump the major version, if you > added something new you bump the minor version, if you only fixed bugs with > no user visible changes you bump the patch version. > > > I suppose in practice all this wouldn't be too different to tick-tock, > just with a better state of QA, a higher bar to merge and (perhaps) no > fixed release cadence. This realisation makes me less keen on it, for some > reason. > > I was thinking something along these lines might be useful as well. > > I could see a process where we cut new maintenance branches every X time, > ~1 year?, 6 months?, we would fix bugs and make patch releases from those > maintenance branches. > We would also cut releases from the development branch (trunk) more > often. The version number in trunk would be updated based on what had > changed since the last release made from trunk. If we dropped support for > something since the last release, bump major. If we added new features > (most likely thing), bump minor. > > So when we release 4.0 we cut the cassandra-4.0 maintenance branch. We > make future 4.0.1 4.0.2 4.0.3 releases from this branch. > > Trunk continues development, some new features are added there. After a > few months we release 4.1.0 from trunk, we do not cut a cassandra-4.1 > branch. Development continues along on trunk, some new features get in so > we bump the version in the branch to 4.2.0. A few months go by we release > 4.2.0 from trunk. Some bug fixes go into trunk with no new features, the > version on the branch bumps to 4.2.1, we decide to make a release from > trunk, and only fixes have gone into trunk since the last release, so we > release 4.2.1 from trunk. > > We continue on this way releasing 4.3.0, 4.4.0, 4.4.1 …. We decide it is > time for a new maintenance branch to be cut. So with the release of 4.5.0 > we also cut the cassandra-4.5 branch. This branch will get patch releases > made from it 4.5.1 4.5.2 4.5.3. > > Trunk continues on as 4.6.0, 4.7.0, 4.8.0 …. At some point the project > decides it wants to drop support for some deprecated feature, trunk gets > bumped to 5.0.0. More releases happen from trunk 5.0.0, 5.1.0, 5.2.0, 5.2.1 > development on trunk continues on. Time for a new maintenance branch with > 5.3.0 so cassandra-5.3 gets cut... > > This does kind of look like what we tried for tick/tock, but it is not the > same. If we wanted to name this something, I would call it something like > "releasable trunk+periodic maintenance branching”. This is what many > projects that release from trunk look like. > > -Jeremiah > > > > On Jan 28, 2021, at 10:31 AM, Benedict Elliott Smith < > bened...@apache.org> wrote: > > > > But, as discussed, we previously agreed limit features in a minor > version, as per the release lifecycle (and I continue to endorse this > decision) > > > > On 28/01/2021, 16:04, "Mick Semb Wever" <m...@apache.org> wrote: > > > >> if there's no such features, or anything breaking compatibility > >> > >> What do you envisage being delivered in such a release, besides bug > >> fixes? Do we have the capacity as a project for releases dedicated to > >> whatever falls between those two gaps? > >> > > > > > > All releases that don't break any compatibilities as our documented > > guidelines dictate (wrt. upgrades, api, cql, native protocol, etc). > Even > > new features can be introduced without compatibility breakages (and > should > > be as often as possible). > > > > Honouring semver does not imply more releases, to the contrary it is > just > > that a number of those existing releases will be minor instead of > major. > > That is, it is an opportunity cost to not recognise minor releases. > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org > > For additional commands, e-mail: dev-h...@cassandra.apache.org > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org > For additional commands, e-mail: dev-h...@cassandra.apache.org > >