This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] Our release cycles are getting longer


On 1/24/07, David Carlton <david.carlton@sun.com> wrote:
On Tue, 23 Jan 2007 17:54:10 -0500, Diego Novillo <dnovillo@redhat.com> said:

> So, I was doing some archeology on past releases and we seem to be
> getting into longer release cycles.

Interesting.

I'm a GCC observer, not a participant, but here are some thoughts:

As far as I can tell, it looks to me like there's a vicious cycle
going on.  Picking an arbitrary starting point:

1) Because lots of bugs are introduced during stage 1 (and stage 2),
   stage 3 takes a long time.

2) Because stage 3 takes a long time, development branches are
   long-lived.  (After all, development branches are the only way to
   do work during stage 3.)

3) Because development branches are long-lived, the stage 1 merges
   involve a lot of code.

4) Because the stage 1 merges involve a lot of code, lots of bugs are
   introduced during stage 1.  (After all, code changes come with
   bugs, and large code changes come with lots of bugs.)

1) Because lots of bugs are introduced during stage 1, stage 3 takes a
   long time.


Now, the good news is that this cycle can be a virtuous cycle rather than a vicious cycle: if you can lower one of these measurements (length of stage 3, size of branches, size of patches, number of bugs), then the other measurements will start going down. "All" you have to do is find a way to mute one of the links somehow, focus on the measurement at the end of that link, and then things will start getting better.

Indeed this is a good observation. If you look at how the linux-kernel development changed to face and fix this problem and map this to gcc development we would have like

1. a two-week stage1 for merging
2. six weeks for bugfixing
3. a release
1. ...

note that we would not have maintained FSF release branches, but if
time is right
vendors would pick up a release and keep it maintained (semi-officially).  This
would allow focusing on "interesting" releases and avoid piling up too
much development
on branches, at the same time we can enforce more strict quality rules
on merges,
because missing one merge window is not delaying the merge for one
year (as now),
but only two month.

Note that the above model would basically force all development on
non-minor stuff
to happen on branches, "working" on the mainline is not possible in
this scheme.  (This
of course fits the distributed development model of the linux kernel more)

Of course the two-week and six-week numbers are not fixed, but keeping
both numbers
low encourages good quality work (and keeping the first number low is
a requirement
anyway).

We'd have a lot of releases of course - but that's only a naming problem.

Richard.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]