Consider that we actually cannot guarantee this without a time machine, because 
some "newer" versions are already released.

If we backport to 1.5 now, we cannot do anything about 2.0.0, 2.1.0, 2.1.2, 
etc. because they are already released... if the user upgrades from 1.5 to 
2.0.1 for example, they will lose the feature no matter what. 
The only way to ensure is to
- always update to latest dot version,
- also for us to make sure we never release before releasing every "later" dot 
release (e.g. we cannot release 1.5 before 2.1.3, 2.0.N, etc. so there's the 
latest release for every line).
- and also for us to make sure that every single dot line actually has a 
release - when e.g. 2.0.X line is abandoned that may not happen, so the latest 
version of 2.0.X will precede latest 1.Y because 1.Y may still be active (like 
as far as I recall 0.94 was getting dot releases even when 0.96 was abandoned) 
- so even if the user goes from 1.Y to the latest 2.0.X they will lose the 
feature.

I think this is kind of expected... I agree that it needs to be documented. To 
an extent it already is in JIRA where fixVersion may be "3.0, 2.2, 1.5", but it 
makes sense to document explicitly.

-----Original Message-----
From: 张铎(Duo Zhang) <[email protected]> 
Sent: Friday, January 18, 2019 5:50 PM
To: HBase Dev List <[email protected]>
Subject: About how features are integrated to different HBase versions

I think we have a good discussion on HBASE-21034, where a feature is back 
ported to branch-1, but then folks think that we should not back port them to 
branch-2.1 and branch-2.0, as usually we should not add new features to minor 
release lines.

I think the reason why we do not want the feature in branch-2.1 and
branch-2.0 is reasonable, but this will introduce another problem. As later, we 
will release a 1.5.0 which has the feature, but when a user later upgrades from 
1.5.0 to 2.1.x or 2.0.x, it will find that the feature is gone, even though the 
2.1.x or 2.0.x is released after 1.5.0 is released, as we do not port the 
feature to these two branches. This will be very confusing to users I'd say.

So I think we should guarantee that, a higher version of HBase release will 
always contain all the features of a HBase release with a lower version which 
is released earlier, unless explicitly mentioned(for example, DLR).

And this implies that, when we setup a new major release and make a new release 
on the first minor release line, then the develop branch for the previous major 
release will be useless, as said above, usually we do not want to port any new 
features to the minor release line of the new major release, then the new 
features should not be ported to previous major release, otherwise we will 
break the guarantee above. And this also means that, we could just use the 
'develop' branch to make new releases.

Reply via email to