[asterisk-dev] Thoughts on Asterisk release management

Tzafrir Cohen tzafrir.cohen at xorcom.com
Thu Sep 20 00:31:28 CDT 2007


On Wed, Sep 19, 2007 at 06:24:35PM -0500, Russell Bryant wrote:
> Greetings,
> 
> The process of developing, releasing, and maintaining Asterisk 1.4 has certainly
> been a learning experience.  I have been putting a lot of thought into the
> things that we have been dealing with and would like to propose some changes to
> the way that we manage releases.
> 
> Over the past few years we have gone from not having managed releases, to
> Asterisk 1.0, 1.2, and now 1.4.  Over this time period we have transitioned from
> everyone using the development code directly to now nobody using the development
> code for any real purpose.  This has both been a great thing and a curse at the
> same time, as I have come to realize.
> 
> The problem is that now that nobody is using the development code, it goes
> through a year of major changes without enough usage.  So, the number of bugs
> introduced increases and becomes overwhelming when they eventually come around.
>  The process of making Asterisk 1.4 usable by everyone has been extremely
> painful.  I think it has been more painful than the transition to 1.2 because a
> lot more people were running the development tree before 1.2 was released than
> was the case with 1.4.
> 
> So, I would like to propose a change to our release management to reduce how
> much time code sits without being put to use.
> 
> Here is what we have now:
> 
>     1.2 - The deprecated release branch updated for security issues.
>     1.4 - A feature frozen release branch that is fully supported and receives
>           any type of bug fixes, but not new features.

Theoretically it is feature frozen. But in practice I hear too many
reports of behaviour changes between minor versions. Hence an upgrade
there might be risky as well.

>     trunk - Development land.  All changes are fair game.
> 
> I don't want to create any new branches.  What I would like to do is put some
> more structure into how we manage trunk.  Specifically, here is what I am thinking.
> 

>     1) If and when this plan is agreed upon, immediately tag trunk and release a
> 
>        1.5.0-beta1.  Feature freeze trunk for about a month.  In this month,
>        encourage people to test what we have.  Fix things as we find them and
>        eventually release 1.5.0.  Re-open trunk for full development.
> 
>     2) Stick to a slightly more structured way of handling development in trunk.
>        Instead of it being a free-for-all all of the time, have merge windows
>        and short feature freezes so that we can make incremental releases.  I am
>        thinking a 6-week release cycle: 1 month open merge window, a release
>        candidate, 2 week feature freeze, test, release, repeat.  We must use
>        discipline in how we manage trunk development, or else nobody would run
>        the releases.
> 
>        Then, eventually, 1.2 would be officially deprecated, 1.4 would move to
>        security maintenance, 1.5 would become 1.6, and we would continue making
>        incremental releases with new features labeled as 1.7 ...

This is surely great for development. The problem is: is this good for
users who don't have the latest and greatest anymore?

> 
> I have a couple of final notes about this.  First, I really don't think this
> should hinder development in any way.  A lot of work has gone into making it
> very easy to maintain code in developer branches, so it shouldn't be a big
> problem to put off merging major code changes for the short feature freeze periods.
> 
> Second, even within the open merge window for trunk, we would still need to be
> smart about when major changes get merged.  For example, we should try to spread
> out the most invasive changes into different release cycles as much as possible,
>  to make tracking down regressions as easy as we can.
> 
> I think if we could get some community buy in on this, we will be dealing with
> much fewer new bugs at a time, which will make Asterisk a lot more stable in the
> end.  I really don't want to deal with building up a year to a year and a half
> of changes before people actually start using them ever again.

Quick poll, for Linux users: what kernel version does your Asterisk
server run on? No distro OS bashings, please. I' do have a point in
this.

My laptop is 2.6.22-1-686 from Debian, my two desktops are
2.6.18-5-{686,amd64} . I have one server with self-built 2.6.22.6 , but
I decided to use a self-built kernel there only after major issues with
the distro kernel (and wasted tons of time in the effort).

The point is: this tries to mimmic the success of the faster development
of Kernel 2.6. But with Kernel 2.6 there is a huge QA buffer between the
developers and the end users. s a result, servers have very diverse
kernel versions and upgrading to the latest to get a new feature is
sometimes not an option.

I'm not saying that this is a bad idea. Just saying that when we get to
1.9 , we'll still get bug reports from people running 1.5 . And asking
them to test with 1.9 wouldn't be a realistic option.

> 
> What do you think?  Does this sound like a good idea?  Would people buy in to
> this and actually use the 1.5 releases?  If not, I am very interested to hear
> any other ideas people have that may improve the way we manage releases.  Feel
> free to point out other large open source projects that have release management
> that you find especially successful.

-- 
               Tzafrir Cohen       
icq#16849755                    jabber:tzafrir at jabber.org
+972-50-7952406           mailto:tzafrir.cohen at xorcom.com       
http://www.xorcom.com  iax:guest at local.xorcom.com/tzafrir



More information about the asterisk-dev mailing list