> So "newer" has some extra meaning.  In practice it seems to mean the a
> release is "newer" if it's from a minor branch that was branched at a
> later date.  That's a hard thing for a user to know.  How do we meet
> the user's expectation with that definition? We need to make it
> visible.  Give users a way to understand what releases are "newer" 
> than others. 

For that we could possibly adopt something suitable or build a plugin for doc 
and site generation that extracts release tags from git during build and 
renders them into a timeline. 


> On Jul 17, 2015, at 8:26 AM, Dave Latham <lat...@davelink.net> wrote:
> 
> My thoughts on the patches and versions issue.  Apologies as this
> overlaps some of what others said, since I got the notes in order.
> 
> All of this stems from trying to make life easier for our users and
> meet their expectations.  Here's what I think are the relevant user
> expectations:
> - Upgrading to a new patch release should not break my app.
>   - Therefore patch releases only include bug fixes to maintain
> stability (semver).
> - Upgrading to a new minor release should be able to happen without
> downtime to my system.
>   - Therefore minor releases should be rolling upgradeable and
> preserve most forms of compatibility (semver - see the table in the
> HBase book for details).
> - Upgrading to a "newer" release should not lose any features or bug
> fixes that I already had.
>   - Therefore ???
> 
> This last point seems to be the question that started this discussion.
> Is that expectation reasonable and if so, what policies do we need to
> adopt regarding commits, branches, and releases to meet it?
> 
> I think it's reasonable depending on what "newer" means.  If we say
> that a version with a greater major number is always newer than a
> version with a lesser major number (and likewise for minors) then we
> essentially have to put all releases in strict sequence.  We've never
> had that expectation.  For example, if someone upgraded from 0.94.27
> to 0.96.0 or from 0.98.14 to 1.0.0 they would lose some features and
> many bug fixes - hopefully not a surprise.  Similarly for minor
> upgrades, it should not be a surprise if someone upgrades (someday)
> from 1.0.22 to 1.1.0 that they may lose many bug fixes.
> 
> So "newer" has some extra meaning.  In practice it seems to mean the a
> release is "newer" if it's from a minor branch that was branched at a
> later date.  That's a hard thing for a user to know.  How do we meet
> the user's expectation with that definition? We need to make it
> visible.  Give users a way to understand what releases are "newer"
> than others.  Tell users they should only do upgrades to "newer"
> releases (should those be the only upgrades supported?).  Sean
> suggested each release indicate the minimum minor release of the next
> major which seems helpful.  Showing a release date history or minor
> branch history somewhere may help (does it already exist?).  We could
> keep some sort of graph showing the relationships.
> 
> What does this mean for commits and branches?  Here's the approach
> that I think is about what I've observed so far:
> - Commit incompatible changes to master only
> - Commit compatible features to master first, then major, non-EOL
> branches in reverse order (master, branch-2, branch-1, 0.98, 0.94) as
> far back as accepted by RMs.  In other words, *don't commit a feature
> to a major branch unless master and all greater major, non-EOL
> branches already have it.*
> - Commit bug fixes to master first, then major, non-EOL branches in
> reverse order as accepted by RMs, then minor, non-EOL branches in
> reverse "newer" order as accepted by RMs.  In other words *don't
> commit a bug fix to a minor branch unless master, the related major
> branch, and all greater, "newer", minor, non-EOL branches already have
> it.*  I.e. if 2.2 is "newer" than 1.3, be sure that 2.2 has the fix
> before 1.3 gets it.
> 
> There will likely be some exceptions made by RM judgement and RMs will
> have to deal with the notions of whether "newer" lines block older
> ones from getting commits or older ones force "newer" ones.  But we
> should keep in mind that whenever we make those exceptions we may
> break user expectations.
> 
> Another thing that this means is that if minor releases from a new
> major version come at a significantly slower pace than minor releases
> from a previous major version that users could be stuck on a previous
> major release, wanting to upgrade to a newer major release but waiting
> for a "newer" minor release on that major line to happen.  We should
> try to avoid that situation by not waiting too long for "newer" minor
> releases on greater major releases after updating older major
> releases.
> 
> Dave
> 
> On Fri, Jul 17, 2015 at 7:31 AM, Sean Busbey <bus...@cloudera.com> wrote:
>>> I think the extra statement we have to make is that only the latest minor
>> version of the next major branch
>>> is guaranteed have all the improvements of the previous major branch.Or
>> phrased in other words:
>>> Improvements that are not bug fixes will only go into the x.y.0 minor
>> version, but not (by default anyway,
>>> the RM should use good judgment) into any existing minor version (and
>> thus not in a patch version > 0)
>> 
>> I think that's a fine statement.
>> 
>> I don't know if it's worth doing, but we could say in each minor release's
>> notes what the minimum minor release in the next major version is needed to
>> get a superset of functionality. This would only really impact Andrew right
>> now since all the 1.y.0 versions would be "2.0".
>> 
>> 
>>> On Fri, Jul 17, 2015 at 8:47 AM, lars hofhansl <la...@apache.org> wrote:
>>> 
>>> Thanks Andy.
>>> I think the gist of the discussion boils down to this:We generally have
>>> two goals: (1) follow semver from 1.0.0 onward and (2) avoid losing
>>> features/improvements when upgrading from an older version to a newer one.
>>> Turns out these two are conflicting unless we follow certain additional
>>> policies.
>>> The issue at hand was a performance improvement that we added to 0.98,
>>> 1.3.0, and 2.0.0, but not 1.0.x, 1.1.x, and 1.2.x (x >= 1 in all cases)So
>>> when somebody would upgrade from 0.98 to (say) 1.1.7 (if/when that's out)
>>> that improvement would "silently" be lost.
>>> I think the extra statement we have to make is that only the latest minor
>>> version of the next major branch is guaranteed have all the improvements of
>>> the previous major branch.Or phrased in other words: Improvements that are
>>> not bug fixes will only go into the x.y.0 minor version, but not (by
>>> default anyway, the RM should use good judgment) into any existing minor
>>> version (and thus not in a patch version > 0)
>>> 
>>> If that's OK with everybody we can just state that and move on (and I'll
>>> shut up :) ).
>>> -- Lars
>>> 
>>>      From: Andrew Purtell <apurt...@apache.org>
>>> To: "dev@hbase.apache.org" <dev@hbase.apache.org>
>>> Sent: Thursday, July 16, 2015 8:58 AM
>>> Subject: 0.98 patch acceptance criteria discussion
>>> 
>>> Hi devs,
>>> 
>>> I'd like to call your attention to an interesting and important discussion
>>> taking place on the tail of HBASE-12596. It starts from here:
>>> 
>>> https://issues.apache.org/jira/browse/HBASE-12596?focusedCommentId=14628295&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14628295
>>> 
>>> --
>>> Best regards,
>>> 
>>>  - Andy
>>> 
>>> Problems worthy of attack prove their worth by hitting back. - Piet Hein
>>> (via Tom White)
>> 
>> 
>> 
>> --
>> Sean

Reply via email to