Quality of FreeBSD

Robert Watson rwatson at FreeBSD.org
Thu Jul 21 12:20:52 GMT 2005

On Thu, 21 Jul 2005, Marc Olzheim wrote:

> Indeed. That's why my company started taking FreeBSD 5.3 in use for 
> production servers when it was out. Since then numerous bugs were fixed, 
> some of which reported by us. Now that we're X bug fixes later in time 
> and started to get a good feeling about the number of open problems, it 
> is extremely annoying to hear the "This will (probably) not be fixed in 
> 5.x" statements. That conflicts with 'gradually get resolved'. What do 
> you recommend larger consumers to do ? Keep using FreeBSD 4 and start 
> testing FreeBSD 6.x, dropping 5.x all together ?
> I know FreeBSD 5 was a strange exception in the relase scheduling and 
> that a lot has been learned from it for the future and I'm certainly not 
> unthankful for all the work that's done, but I'd like a clear answer on 
> what to do now in regard to taking FreeBSD 5 into 'real' production...


I should start out by saying I appreciate your clear and concise bug 
reports, and the list of your company's show-stopper 5.x bugs has made the 
rounds among FreeBSD developers.  I'm happy that at least one of the 
issues on the list was fixed by me. :-)  As you probably saw yesterday, 
I've started bugging Poul-Henning to look at the pty problem you're 
experiencing, and will get that on our 6.0 release show-stopper list.  I 
haven't yet had a chance to reproduce it locally, but it sounds like that 
should be straight forward.

FreeBSD 5 has been an exception -- "normally", in as much as major 
releases have a "normal", the set of new features is a lot less agressive, 
and it has been our goal with 6.x to restore the expectation of a more 
rapid release cycle with a less agressive feature set.  This should reduce 
the number of problems by virtue of reducing the level of change.  It 
should also make it easier for users to pick what version to run on, as 
the amount of adaptation they have to do to slide forward a version will 
be greatly reduced.  I.e., right now it's relatively easy to move back and 
forward between 5.x and 6.x.

With respect to 5.x vs 6.x upgrades: I've seen companies take two 
different strategies.  Most of them have been at least experimenting with 
deploying 5.x, and are very interested in its feature set.  Support for 
large file systems, 64-bit support on newer AMD and Intel hardware, 
improved PAM support, etc.  Some of my customers are specifically 
interested in the support for mandatory access control, but that's 
obviously a less common feature request :-).  The biggest determining 
factor for companies today comes from their own product schedule, since 
most big consumers of FreeBSD treat it as a component in a "product" they 
deliver for others.

For example, my understanding is that Yahoo is now deploying 6.0 betas 
across their server environment with great success, but was actually 
unable to seriously deploy 5.x because their goal was to support full 
32-bit compatibility on 64-bit amd/intel hardware, which has only recently 
reached the level of maturity they require.  In fact, you'll notice if you 
follow FreeBSD commit logs that much of that support has come from Yahoo!. 
Since 6.x is maturing in pretty good synch with their deployment timeline 
for 5.x, they are actually deploying 6.x.  Of course, Yahoo! has a team of 
in-house OS developers who adapt FreeBSD for their needs, and is quite 
capable of debugging a kernel or two if they run into problems.

The ATA driver issue is a sticky one for many users -- we hope to get the 
6.x ATA code back into 5.x in the next 5.x release.  However, hard-earned 
experience tells us that ATA driver code is notoriously difficult to get 
right across the broad range of available hardware.  Soren has been 
lobbying to get it merged to 5.x, but given the level of testing performed 
so far, we can't yet justify the merge.  My hope is that with 6.0 out the 
door and a lot of testing of that code, we can get it merged back to 5.x 
before 5.5.  Many other fixes have gone into 5.x, correcting many of the 
most significant issues.  If you compare 5.4 with 5.3, you'll find that in 
most cases, it's both faster and more stable.

The tty issue is a sticky one also.  The tty code in 6.x has been 
substantially rewritten to better support the SMPng environment.  Because 
the tty code "plugs in" to a number of device drivers, T1 adapter drivers, 
etc, changing the tty interfaces is a fairly big event, and will affect 
third party vendors like Cronyx.  This code has also not yet seen as wide 
deployment as I'd like, so it's also something that really isn't 
appropriate for an MFC immediately.  However, once it has seen significant 
6.0 deployment, it may well be.  A question then will be whether it's 
better to simply say "you're better off making the jump to 6.x, which is 
minor" than backporting, and it's something we can't really answer until 
we're comfortable that it's seen sufficient deployment.  My hope is that 
we can identify a workaround for 5.x that will avoid the code upheaval a 
full backport would require.  It's not as ideal as having the "right" fix, 
but it would stop the panics.  I need to ping phk and some of the other 
tty-centric folk to look at this some more.

In terms of advice:

If you have a "product" due out more than 3 months from now, I think 6.x 
is the obvious way to go: you want to be ahead of the curve so that you 
can have the foundation for your product in sync with the FreeBSD 
production release cycle, and avoid jumping major releases early in the 
product life cycle.  6.x has significant performance and stability 
improvements -- performance especially in the area of file system 
performance on SMP, preemption, network stack, and memory management, and 
stability especially in the area of tty support.  By "product", I mean a 
range of things: the OS foundation of an embedded product such as a 
firewall or storage appliance, or deployment of an internal product, such 
as a virtual server product at an ISP.

On the other hand, if you're deploying today, I think that unless you're 
prepared to deal with the 6.0 bug fix cycle (both the BETA/RC cycle, and 
the inevitable post-release fixes for a .0 release), 5.4+patches or 
5-STABLE is the right place to sit.  At least two of the critical bugs on 
your list were fixed in 5-STABLE after the release of 5.4, so for some, 
5-STABLE is the best place to be.  We've opted not to do a patch/errata 
update for 5.4 for the socket error you were receiving on the basis that 
it doesn't affect a wide audience and doesn't correct a "Critical" failure 
-- i.e., a crash or the like, unlike some of the NFS server fixes, for 
which we did do an errata fix.

From the perspective of the FreeBSD developers, if you can tolerate the 
6.x release process, we encourage you to jump on that bandwagon.  It will 
help us release a better 6.0, and that's where the future lies.  Our goal 
is to make 6.x a pretty seemless upgrade from 5.x, as it has a less 
agressive feature set, and far fewer user-visible changes (i.e., no 
conversion to OpenPAM, devfs, UFS2, large compiler version upgrade, ... as 
in 5.x).  When I upgraded my personal web/shell server to 6.x from 5.x 
last week, I didn't have to change any configuration in /etc at all, other 
than a painless pass through mergemaster to merge the _dhcp user and 
group.  As always, we look to the freebsd-stable users to help us test new 
features ahead of the release.


Robert N M Watson

More information about the freebsd-stable mailing list