Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Jan 2012 17:39:31 -0600
From:      "Matthew D. Fuller" <fullermd@over-yonder.net>
To:        Mark Felder <feld@feld.me>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: FreeBSD has serious problems with focus, longevity, and lifecycle
Message-ID:  <20120118233931.GL509@over-yonder.net>
In-Reply-To: <op.v8aqs6ii34t2sn@tech304>
References:  <alpine.BSF.2.00.1112211415580.19710@kozubik.com> <1326756727.23485.10.camel@Arawn> <4F14BAA7.9070707@freebsd.org> <alpine.BSF.2.00.1201181034580.51158@fledge.watson.org> <4F16A5B8.2080903@FreeBSD.org> <Pine.GSO.4.64.1201181147450.6287@sea.ntplx.net> <4F1707E6.4020905@FreeBSD.org> <CADWvR2ip=nADz=BLXW%2BuNkyUP4hUf88UkOhSoz%2B0AcY79Hzdag@mail.gmail.com> <alpine.BSF.2.00.1201181141270.19710@kozubik.com> <op.v8aqs6ii34t2sn@tech304>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jan 18, 2012 at 02:20:56PM -0600 I heard the voice of
Mark Felder, and lo! it spake thus:
> On Wed, 18 Jan 2012 13:46:45 -0600, John Kozubik <john@kozubik.com> wrote:
> > This is nice because no upheaval needs to happen with 7 and 8, and
> > interested developers do not get kneecapped vis a vis 9 - they can
> > just  keep going where they were going with it, and the only real
> > change is  that 10 is pushed out a long ways, and people[1] get to
> > really sink  their teeth into 9.
> >
> 
> What are the policies for changes though? Are we stuck with 9.0's
> feature  set for 5 years? Will we have to wait 5 years to get a
> stable release of  FreeBSD with KMS/GEM? That work is unfinished and
> didn't make 9.0; it's  also a huge changeset. How will things like
> this be dealt with? Five years  is a long time for the next stable
> release if we have a policy to not  import major changes from
> -CURRENT. It would be devastating to so many  users.

This is where the problem comes in.

As I read it, John's problem in a sentence is "I just got onto 8.x,
and it's already shutting down!"  If the problem is "stable trains
don't live long enough", why, the solution's simple; make stable
trains live longer!

The problem is, there are unpleasant tradeoffs every direction we try
to go with that.  We can:

1) Just make each one live longer.  Of course, that means that pretty
   soon we're maintaining 3 and 4 -STABLE branches all the time.
   Yeah...  "maintaining" is sure to be an overstatement in that case.
   Even if we had massively more manpower, the project management
   complexity would still eat us alive.  This is just a non-starter.

2) Wait longer between making new ones.  This is what John is
   suggesting above, but it has two related huge drawbacks.  The

 a) As Mark said, is that it means any significant new features or
    architectures come out a couple years after they're already obsolete.

    To pick one example, from 8->9 we have the new eventtimers stuff,
    which drastically reduces the number of clock interrupts.  As we
    get 4 and 8 and 16 and higher core counts becoming common, that
    gets very important, as servicing 32k interrupts/second while
    completely idle is really bad for system efficiency.  If we pushed
    9 out to 2 years or so from now, we're telling people "sure, just
    eat the overhead until then".  Whoops.

 b) The other big drawback is as I've said in other mails; it turns
    every major release into a giant watershed of everything changing,
    which makes upgrading systems across it a *HUGE* amount of work,
    and *VERY* risky.  Again, this had an impact in the 4/5 days;
    upgrading to 5 was so risky and so different, that lots of people
    stayed on 4 long after it was out.  I sure don't want to deal with
    that sort of divide again.  The more frequent major release steps
    are, the smaller and easier they are.


Now, you could say "Well, 2(a) just won't be a problem because we'll
merge more stuff back".  But now all you're doing is making that
-STABLE branch _less_ stable, compromising the reason people are using
it in the first place.  Now, sure, 'stable' isn't a binary condition,
and we can always re-evaluate just where we want to stick the needle.
Maybe we could be a bit more aggressive about the size of changes we
merge back.  But I don't believe that we could get _near_ enough
backporting to alleviate the time between the big/dangerous new
feature landings, without seriously compromising the stability of
-STABLE.

Or there's another option, a variant of (1), where we extend the
lifetime of some major release trains, but not all.  Every second, or
every third.  Then we can have a longer life, without ballooning out
the number of trains being supported.  But that has big drawbacks too;
the problems of backporting aren't just the number of branches to port
too, but how far back they are.  Backporting from -CURRENT to 9 right
now is almost trivial.  Going to 8 isn't too bad for most things.  To
7, it's getting to be a much bigger deal.  If 7 were an "extended
support" train, with 2 years of active support left on it, not only
would backporting things get inordinately expensive from accumulated
differences, but they'd get very _risky_ too.  They slip from
"backport" into "rewrite for", and now we've seriously compromised the
stability of the branch, undermining our own goals.


Now, I don't suggest the current state is perfect.  There are
certainly relatively minor tweaks like "more common minor releases"
that could improve things in some quarters.  And they're local enough
that they can conceptually be done without rippling out and messing
with everything else in the project.  But trying to do major shifts
aren't as simple as "just make major releases less often"; the tweaks
you can do like that all have _very_ seriously side effects, make a
lot of things much worse, and would require a lot of _very_ careful
rebalancing of everything else to avoid a significant overall lose.


-- 
Matthew Fuller     (MF4839)   |  fullermd@over-yonder.net
Systems/Network Administrator |  http://www.over-yonder.net/~fullermd/
           On the Internet, nobody can hear you scream.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120118233931.GL509>