Here's a minor thought dump of the moment: no hard numbers, just some general observations over the past year or two.

I've heard the comparison between Linux and other UNIX like OSes a few times in the past. Of course it is a bit hard to compare "Linux" - which is a kernel - and the others which most often are complete operating systems. Many times they even share a lot of GNU userland tools, so I will disregard userland.

The general feel I get from looking at some parts of Linux and its development process is that of the PC world. Build cheap, throwaway solutions and rip and replace later. Looking at things like the scheduler, FreeBSD was able to grow similarly advanced solution in a much more organized fashion without ripping and replacing this critical component several times and has far less developers. *BSD has a more traditional UNIX process from the days of the minicomputer and professional workstation, while Linux is deeply rooted in PC culture.

Aside from the scheduler, there seem to be other places where development has tarnish before shine. hrtimers, dyntick, CFS, and SLUB are some of the more controversial moves in the past year or so. Indeed, kernels 2.6.23+ didn't "feel" as polished as the few leading up to it and "felt" less responsive to me when playing audio or video concurrent with other tasks like compiling - something CFS was supposed to fix, but I never had a problem with before. Going into 2.6.28, these big changes are starting to settle down. Things once again "feel" better, more stable, and better performing - so I guess it is just a phase.

From a software engineering standpoint, it is interesting to ponder how to improve the process. One thing Linux has that many other projects don't is an enormous amount of contributors. A lot of people and companies are trying to different things with the kernel. It is important for them to get their code into the kernel as soon as possible, because it is such a fast moving process, but new features lead to bugs. Linux-next appears to be helping with keeping in progress trees so that developers can explore ideas before pushing to mainline, and Adrian Bunk's idea of the "long time support" kernels for those of us that don't run large distro kernels seem like a step in the right direction. I do wish he would forgo 2.6.27 and base it on 2.6.28 for the next LTS though. 2.6.27 has had quite a lot of major patching done since release and as I said earlier, 2.6.28 just looks better so far.

Another point: technically superior solutions don't always get favored. I've said before that I think there were better choices for file systems than ext3 for the past 8 or so years. CFS vs. RDSL is another example. The latest is SCST vs. SGST ( SCST is clearly the only solution for the enterprise where Fibre Channel and Infiniband are likely to be used. And Ingo and Thomas are at it again reinventing the wheel with performance counters.

The counterargument is that Linux runs on most of the worlds supercomputers all the way down to small critical embedded systems. Most of these are running obsolete kernels with heavy vendor backports though.

Running the latest kernel is fun; after all I am a Gentoo user so I don't mind when things break, but for truly mission critical tasks I would not be afraid to look outside of Linux to BSD. Ironically, Solaris, once the stalwart of enterprise, seems to be embracing the Linux mentality.


comments powered by Disqus