Linux vs the BSDs
A lot of people have asked me my choice of OS. I will - and have always done - answer Linux. I don’t have to explain why I don’t run OS X or Windows as my primary OS, I think it’s clear why I wouldn’t.
Who could endanger Linux’s trone?
The only actual other operating system that’s capable of supporting my needs would be one of the BSDs. I haven’t looked at Sun’s Solaris close enough to judge it properly. At Interlink most of the people around ‘love’ BSD and there’s just one main machine left running (Gentoo) Linux. If they are so fond of the BSDs why would I still be in favour of Linux? I have worked with both of the operating systems. There are a few points on which I judge an operating system as a whole. I’ll explain them one by one.
Openness
GNU/Linux is a 100% GPL licensed OS. I like the GPL. It gives us freedom while protecting it from it being stolen by people who don’t care about the Open Source initiative. It also protects itself by forcing the GPL on future products based on it. BSD however uses another license saying you can do what ever you wish with the code while you keep the copyright notice in tact. It’s free allright, but it doesn’t make any effort to preserve the freedom. Imagine writing some art, really beatiful code. A big company downloads it, likes it and uses it in it’s own products. No problem, that’s what Open Source is all about. But with the BSD license they are able to distribute their product as closed-source software and put a little line in the info bar somewhere deeply hidden in some menu saying “this and this bit: Copyright (c) 2000-2006 James Hacker”. Oh, and if your’e James “Famous” Hacker they can’t say in public ads you have written parts of the code. In short both licenses are fine with me, but my software will be GPL because I like the freedom. This point goes to Linux.
Speed
The Unixes are know for their speed. It’s common knowledge. But who’s faster, Linux or BSD? I’ve worked with FreeBSD for a while. I must admit it’s really responsive under high loads. For normal workstation use Linux and BSD both are useable beyond any doubt. But some of my machines work under extreme high loads for long periods of time. Now proper memory, I/O and thread management (and some more techie stuff) matter. I haven’t been able to test it thouroughly because I simply haven’t got the BSD knowledge and hardware to do so. Some people have and I have checked the benchmarks. Linux 2.6 is more stable and speedy under extreme loads than FreeBSD. Both NetBSD and OpenBSD have got serious problems on certain points. They or do not get the performance needed or get hilariously unstable. OpenBSD is the worst. It’s so much geared towards security resulting in a huge drawback in performance. NetBSD can run on a lot of platforms, ok, but do I care? I don’t think so. I don’t own exotic hardware and the big endian (POWER, Itanium, etc) platforms are getting replaced by the SMP Xeon EMT64 and Opteron AMD64 platforms. The latest benchmarks I’ve found were just over a year old though. It might be a good idea to put Linux and FreeBSD against each other again with my own test hardware. (yes, a PII MMX 300Mhz, 128M and 2×4.3Gb SCSI). FreeBSD 6 is released and Linux has done some serious work on their kernel, so the test I’ve read isn’t that valid anymore. Anyway, what I have understood from both Linux and BSD non-fanboys is that both are equally fast when configured the right way. It’s a draw on this one until I have recent benchies.
Stability
We’ve heard the story. The BSD kernels are way more stable than the Linux kernel. Yes, that’s what the fanboys say. The only proof I’ve found is from Netcraft (old data again, 3 years). The most stable sites without data loss for long periods of time run FreeBSD. Linux has become even more stable since the release of the 2.6 kernel. I think it will be a close call which OS is more stable. I personally think stability is not that much a task of the OS itself, but a task of the person managing the OS. A well configured Linux box can run for years non-stop on decent hardware. So does a well configured FreeBSD box. But it’s not just a server OS I’m looking for. It has to perform well as a workstation, too. If I’m encoding HD video to Theora on an SMP machine I want to be able to keep being productive without interruption. From what I have seen on FreeBSD 5.4 SMP (i686) machines is that the process handler isn’t that well built as I would expect from a box that would beat a Linux SMP workstation. Threads just halted for a while when two or more heavy normal priority threads were running on the background. Hello, my process is a high priority process, it isn’t allowed to hickup. Yes, FreeBSD is nice and stable when used as a simple server. From what I’ve done with Linux I know Linux is up to that task with ease. I’ve seen LAMP boxes run with a 9.x load with seven months uptime on normal consumer hardware. So don’t tell me Linux can’t handle it. The last pro-FreeBSD argument I’ve seen is that the FreeBSD device drivers are way more stable than the Linux drivers. I have to admit, It’s true. Some hardware that’s supported on both OSses (like some SCSI Raid controllers) have got better FreeBSD drivers. But it’s the other way around, too. I have been chatting with a distant friend on IRC and he kept reconnecting because his WiFi driver was failing on him. So this argument is really depending on your hardware. If you just use common hardware (ex. Intel platform) both the OSses offer rock solid drivers. This point goes out to Linux just because the thread handler in FreeBSD still needs some work (maybe it’s fixed in 6 already?).
Hardware support
I like cutting edge hardware. I just like to have a shiny new box under my desk. I’ve got some old exotic hardware like some early USB cams and some video capture/editing cards. I’d like them to work. I also like to have accelerated video on my desktop. Some hardware rendered eye candy would be nice. I tried to install FreeBSD on a high end AMD64 system a while ago. A lot of the hardware didn’t work. The RAID controller wasn’t supported and some more problems made it impossible to make that machine a FreeBSD box. I think you might feel this one coming. Linux did run, didn’t support it all either, but it managed to boot and get X running. I had to build a custom (ck-)kernel for it, but that’s ok, it booted. I think we all agree on this one, even the BSD folks have to give this point to Linux.
Support
I have to say, both the BSDs and Linux have perfect documentation and a proper fanbase that’s always willing to help. You can almost give them your root account to fix your problem. The dedicated fans will assist new people in any way they can. There is no winner in community support here. But if you look on a higher level it’s a bit different. Linux is supported by the big boys like IBM, HP and even Sun (partially). Open- and NetBSD don’t have that much support. The support for FreeBSD is growing in the networking business. But desktop FreeBSD, or any BSD for that matter, isn’t supported by a single big desktop vendor. From my point of view, and if I’m asked for advice I would go with Linux. If you are a big company support from big vendors is the only support you are going to get. Community support forums and irc channels can’t sign support contracts.
My opinion and conclusion
I think I’ve made my point clear. BSD is a nice OS to play around with and to build very dedicated one-task only servers (ex. NetBSD Gateways). Hell, my printer at work is running FreeBSD. But I can’t use BSD as a replacement for Linux. Linux just beats the crap out of BSD on the high end desktop market. Only on a few narrow fields some BSDs are the best choice. The global allround OS that can do it all is Linux. I think FreeBSD will gain populairity quite a bit but it will never catch up with my favourite OS. Linux.
Good read.