Subject: Re: bug#11153: change automake branching policy: dispensing with the 'branch-X.Y' branches in the future

From: Stefano Lattarini <[email-masked]>
Date: Mon, 02 Apr 2012 21:42:26 +0200

Hi Peter, thanks for the feedback.  But I fear we have a misunderstanding
here.  See below.

On 04/02/2012 08:14 PM, Peter Rosin wrote:
> On 2012-04-02 18:13, Stefano Lattarini wrote:
>> Severity: wishlist
>> thanks
>>
>> Hello Automakers.
>>
>> After some real hand-on experience with the current branching policy
>> of Automake, I'm convinced the presence of the 'branch-X.Y' branches
>> is just an annoyance and a source of confusion, and that a better policy
>> would be to simply have a 'maint' branch (where to cut maintenance
>>  releases directly from), a master branch (where maint is to be kept
>> regularly merged into, and from which the next major release is to be
>> derived at last), and possibly topic branches (only when needed, and
>> better if they are short-lived).  Maybe we could also re-add the 'next'
>> branch to serve as common ground for feature merging and testing, but
>> than can be done in a second time (and only if the need arise).
>>
>> When a major release is done, the master branch is to be merged into
>> the maint branch, and then a "new" master branch created stemming
>> from the resulting commit.
> 
> I think what you are proposing is better described as dropping the
> maint branch and doing development of features for both the stable
> series as well as the pending major release directly on the stable
> branch.
>
Absolutely not.  In 'maint' will go bugfixes, minor new features
(with low protability of regressions), and possibly new warnings for
obsoleted features (that might be removed when we pass to a future
"major" version).  In master will go "bigger" new feature, non-trivial
refactorings, and backward-incompatible changes (after their coming
has been duly announced and prepared in 'maint' and/or in earlier
releases).

This is basically the situation we have today, but without the extra
indirections and possibility of confusion (i.e., another 'msvc'-style
mess will be made less likely).

> When you wish to make a new release you simply make sure
> you have merged the latest branch-x.y into master, then create a new
> branch-x.<y+1> or branch-<x+1>.0 from where the current master is
> and you're done.
>
You mean that if we have just released automake 1.13, the release
1.13.1 should be cut from master?  That is absolutely *not* what I
want to do.  Sorry if I didn't explain myself clearly enough.

>> WDYT?  If you agree, I can apply the change below to HACKING, and
>> implement the new branching policy starting from the Automke 1.12
>> release.
> 
> Consider what will happen if you don't have maint branches,
>
> [SNIP]
>
I snip mostly of the rest of your arguments, now that it is clear
I still *want* to have a maint branch.

> I think it's immensely more clean to have the current dual maint and
> branch-1.11 approach for each expected bug-fix series.
>
Here I don't follow you.  Why are not 'maint' a 'master' enough exactly?

> When 1.12 is released, maint should probably move along with it
>
Yes, and a "new" master created, from which 1.13 will be finally derived.

> and a maint-1.11 can be created when needed, if a security fix is ever
> needed for the 1.11 series.
>
Agreed.  But we don't need this branch right away, since the last commit
in the 'maint' of the 1.11.x series will be properly tagged, so we can
easily access need and create a bug-fix branch out of it if and when the
need arises.

> Hopefully, we will not need a maint-1.11, but such things
> are as they are...
>
OK, so it sounds like we are in violent agreement in this matter.

> Either that, or you'd need to do dummy merges from branch-x.y into
> master after the release-related commits just to avoid future merge
> conflicts, but dummy merges are ugly in my opinion.  And branches are
> cheap.
>
Tags even more -- you don't pay them with the risk of confusion.

> I think we have learned not to merge new features past the maintenance
> branch (i.e. directly into the release branch)
>
Huh?  That *exactly* what should happen most of the time!  It's the
AM_PROG_AR situation that was an unusual case, in that we didn't want
the delay in the 1.12 release to keep this useful and low-risk feature
as "vaporware" for even more time -- so we merged it into the
maintenance branch.

Regards,
  Stefano