FreeBSD has serious problems with focus, longevity, and
Alexander at Leidinger.net
Thu Jan 19 12:24:22 UTC 2012
yesterday I wrote some words in my how we could put the power how long a branch lives a little bit more into he hands of the users. It's available at http://www.leidinger.net/blog/ and also has some sentences how we could improve our knowledge about what bugs our users the most.
Maybe it gives some ideas to some people.
Send via an Android device, please forgive brevity and typographic and spelling errors.
"Matthew D. Fuller" <fullermd at over-yonder.net> hat geschrieben: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 at 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 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
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 at over-yonder.net
Systems/Network Administrator | http://www.over-yonder.net/~fullermd/
On the Internet, nobody can hear you scream.
freebsd-hackers at freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
More information about the freebsd-hackers