[asterisk-dev] [policy] Merging between branches
Mark Michelson
mmichelson at digium.com
Mon Dec 1 11:06:32 CST 2008
Russell Bryant wrote:
> Greetings,
>
> Last year, when we first started discussing Asterisk 1.6 branch policy
> [1], we had said that the only time that we would change a 1.6.X branch
> after it had reached a release state is for regressions against a
> previous release.
>
> What that has meant in practice is that as we find and fix long standing
> bugs that apply to all of our releases, 1.6.0 does not receive the fix.
> Currently, that means a fix would go into 1.4, trunk, and then 1.6.1
> since it is still in beta.
>
> I now believe that this was a mistake. As it stands today, upgrading
> from 1.4 to 1.6.0 will introduce a number of regressions for users.
> This should never happen (until 1.4 or 1.6.0 is no longer in a supported
> state). So, I would like to immediately change the policy such that
> every fix that applies to 1.4 should also go into _every_ supported
> 1.6.X branch.
A hardy +1 from me. I have, however, mostly been following the policy of not
merging 1.4 bugfixes into 1.6.0 since they were not regressions in the 1.6.0
branch. I say mostly because in some cases the bugs were grievous enough that I
could not in good conscience exclude the change from 1.6.0 (think crash or
deadlock bugs).
>
> We had a discussion about this last week on IRC. It seemed that
> everyone around at the time was in agreement about the change as far as
> normal bug fixes go. However, there was some debate about what the
> policy should be as far as new features in 1.6.X go.
>
> In my opinion, any type of bug in a supported 1.6.X branch is a
> candidate for being fixed. Nothing should be excluded from that.
I agree with this given the slow pace of 1.6.X releases and the fact that moving
from 1.6.X to 1.6.X+1 introduces potentially unwanted new features and with
those, potential new bugs.
>
> There were some that were in favor of restricting this to reduce
> development workload. What I would like to do is leave the policy such
> that all bugs in supported releases should be fixed. However, if there
> is a special case where the differences between 1.6.X branches are so
> great in a certain area that applying a fix to multiple releases becomes
> unreasonable, then we can treat it as a special case and potentially
> exclude the fix from older releases, as appropriate. This should be a
> _very_ rare case. I would prefer that Kevin or I review it before such
> a decision is made.
>
> Comments are welcome. Feel free to use specific examples. However,
> when suggesting changes, please also indicate how you would change the
> generic policy to accommodate the example situation.
>
I mentioned above the slow process that has happened so far with the 1.6.X
releases. 1.6.0 was released on 2 October. It is now 1 December and there has
been only one beta of 1.6.1 made so far. Since it must continue through the beta
cycle and also go through an rc process, I don't see 1.6.1 being released before
the end of the year. The original plan for the 1.6 series called for releases
approximately every month. If this were followed, then the number of new
features in each subsequent release would be more limited. By doing this, moving
from one release of 1.6.X to the next in the series would not involve as much
risk. This could mean faster adoption of new releases and consequently ending
support for older releases in a more rapid fashion. This would also hopefully
eliminate some of the larger differences between the various 1.6.X branches,
which would make the development effort of maintaining multiple releases easier.
The longer release cycle isn't necessarily a bad thing either. It just requires
that major new features and refactorings need to be introduced into trunk in a
slower, more controlled process. For instance, right now if a new feature is
deemed ready (meaning that the code has been reviewed and the feature has been
tested), the typical course of action is to immediately merge the new feature
into trunk. The problem with this is that new features can build up if a new
release takes a long time to come to fruition. If we are to have long release
cycles, a method of gradually introducing new features into trunk needs to be
implemented, hopefully without the fear of bitrot occurring in developer
branches. Unfortunately, I don't have any real good ideas off the top of my head
for a graceful way to do this.
> Finally, I plan to take this opportunity to formally document our
> release and branch management policies after this discussion. I'll get
> it in a document in the source tree as well as on asterisk.org.
>
> Thanks,
>
> [1] http://lists.digium.com/pipermail/asterisk-dev/2007-October/030083.html
>
More information about the asterisk-dev
mailing list