I finally managed to find time to catch up on the meeting I missed in February.

I have a few thoughts on versioning/supported branches etc, that I'd like to 
share and get some feedback on.

1) I think we should version the master branch as last-release.99.$date or 
something similar, so that master doesn't continue to report (2.0.0-rc1) that 
it is older than the current release (2.0.3) when it is in fact newer.

So maybe 2.0.99-20210303 or 2.0.99-g<githash> or something like that.

2. I think we want to balance three main things: 
A) Releasing often enough that new features (like dRAID, or DirectIO, or RAID-Z 
expansion once it is ready), do not have to wait as much as a year before the 
next release.
B) Limit the number of branches we support, to avoid over-promising, or burning 
up too much developer time maintaining multiple old versions
C) Provide a long-term support branch for those who want a more static version 
of ZFS

One option is, declare 2.0 as the LTS, and our next release, as not.

Maybe we declare that all even numbered versions are LTS, and odd numbered 
versions are shorter-lived.
So we'd release 3.0 in a few months with dRAID and DirectIO, then 3.1 a few 
months after that, with whatever else has matured in master, and keep a 
semi-regular cadence, maybe 3-6 months between releases. Each 3.x release would 
EoL the previous 3.x release after some short period (in FreeBSD, 12.1 is EoL 
at the end of the 3rd month after the release of 12.2, giving people a minimum 
of 90 days to upgrade to continue to receive bug fixes etc)

The "unsatisfying" thing about this approach is that it doesn't quite track 
semantic versioning, as the increment of the major release number (2.x -> 3.x 
-> 4.x) is mostly arbitrary, and has more to do with what we decide the next 
"long term support" version will be. The advantage, is as Matt requested, a 
user can tell just by looking at the version number: if it is even, it is LTS, 
if it is odd, it is not.

It will likely feel odd to basically have 2.0.3, 2.0.4 etc, and never a 2.1, 
but for 3.x to have 3.0, 3.1, 3.2, 3.4, etc, then 4.x will only have a 4.0, and 
get the minor bug fixes, because it is the LTS, and new features would go into 
5.x.

Maybe there is a better way. One idea I had proposed for FreeBSD a few years 
ago, was to separate the LTS from the non-LTS releases.

So we'd have OpenZFS 2.0.x as the LTS, and the next LTS would be OpenZFS 3.0.x
And in the mean time, we would release say OpenZFS 2021Q2, which is the 
short-live branch, only getting bug fixes until the 2021Q3 release, then you 
are expected to upgrade.

The goal being to balance the 2 competing agenda: release fairly often to avoid 
features living only in master for a very long time, while still providing an 
LTS that gets only bug fixes over a longer term, to fit the needs of distros 
like Ubuntu LTS.


What are peoples requirements, and how can we balance what is best for the 
OpenZFS developers, and what makes OpenZFS practical for the users?

------------------------------------------
openzfs: openzfs-developer
Permalink: 
https://openzfs.topicbox.com/groups/developer/Tc7a872fd1c180940-M565bab1c177102521f2f696b
Delivery options: https://openzfs.topicbox.com/groups/developer/subscription

Reply via email to