Random rant about the various BSDs.

My problem with the BSDs?

1. Bug checking – This consists of you placing the stuff on your production hardware and pretty much "hoping" it works. Very few people actually test some of the more rarer hardware, and if you have it, you're on your own, better know how to fix it yourself. (Case in point, I haven't found a version of OpenBSD that properly supports the SCSI controller on my Compaq Proliants. Yes, compaq makes crappy desktops, but their servers totally rock. It's not the hardware's fault, it's OpenBSD. When I tried to report the problem, all I got was rudeness, even from Theo himself at one point. The card is detected, but when the controller starts to hit a higher load, the kernel panics. Replicated by running "tar".)
2. Vendor support – almost none, and part of it is due to the lack of a united front on BSD. (And the attitude problem that some of the BSD core groups carry)
3. SMP support – half of the BSDs don't even have this out of the box. Come on guys, get with the program here. At least _pretend_ your OS was developed after 1996.
4. User community – Most of them are clueless of what they're running, doing so mostly because they want to appear "cool" because they choose to run a UNIX that isn't Linux. The rest of them that know what they're doing are mostly arrogant bastards.
5. Lack of decent packaging – Same reason I don't recommend slackware anymore. Their packaging system sucks, and they're doing nothing to improve things. These days, if you don't have a way to install binary packages (the ports tree doesn't count and I'll elaborate why below) that at least lists the packages that the one you're installing depends on, you might as well not have a packaging system at all. If you want to see a good system, look at debian's APT system, or Ximian's Red Carpet system.
6. Binary packages, or lack therof – I'm sorry, when I'm managing a 200 computer network, I just don't have time to go to each one and run make on the respective ports tree after running CVSup. I barely have time to install binary packages, let alone let thousands of machines compile stuff, especially when the machines need the memory and CPU to complete the tasks they're running at the moment. The mediocre selection of binary packages, and the shitty packaging systems are a deal killer to me.
7. Updating the system, or "make world" – I don't have a 14 hour downtime window once every few weeks to update critical software bugs, or upgrade to the latest versions of things. Most of the systems I run cannot be down for more than 5 minutes, and I'm not exaggerating there.
8. Userland NAT – This might just be a FreeBSD thing, but I mean, what the fuck. Seriously! I don't want every packet I make to transition down to userland software before being transmitted, and in reverse during recieve. It's not that damn hard to put it in the kernel, and it seriously improves performance.

BSD is what happens when you take developers who have no real-world experience on running a global WAN worth of machines, and no idea what the words "Management scaleability" mean, and let them develop an operating system.

It makes no difference to me that the source tree is security audited if it doesn't even run correctly on "real" hardware, and can't even deal with an SMP system without a kernel patch. That pretty much sums it up right there.

10 thoughts on “Random rant about the various BSDs.”

  1. Most of those points are totally valid and I agree wit them. Two things, however, pop out at me:

    1) FreeBSD has had SMP support for a while, and the new spin-locking stuff in the 5.0 kernel rocks out. I left OpenBSD after years over this single point.
    2) It's free. Totally free. Arguably more free than any GPL'd software such as the GNU Project or Linux. Linus and Stallman do a lot of developing with GNU/Linux, but they don't provide end-user support. RedHat, Mandrake, etc. do. BSD doesn't really have a company distributing a "commercial" version like Linux does (does BSDi still do anything?). Why should the core hackers be expected to provide that support when it's obviously not something their interested in?

    Also, maybe I'm just biased (a Slackware and FreeBSD user) but rc.conf-style init scripts rock. FreeBSD really has this nailed, and I wish Slackware would follow their lead. They've got the consistent back-end of SysV init combined with the easy editing of BSD init, and I love it.

    1. 1) I agree, and knew this, thus "half don't support SMP". It's actually incorrect as I know because I believe neither NetBSD or OpenBSD support SMP (So really, it's 2/3rds). This is critical nowadays when you're running a J2EE appserver. My java is multithreaded and can take advantage of the processors, just give me the support! πŸ˜‰

      2) I agree, but they shouldn't then get upset when I don't use it, which most of the same zealots did when I said "fine, if noone can help me, I can't use it", all my BSD zealots I knew said how great the OS is, blah blah blah, but when it came time to fix a driver or two, they were the first to bitch that I should understand kernel programming. bah.
      At least linux has a supportive user community where people are more willing to help. You don't need a company to be helpful, you just have to teach someone who can teach others, and take bug fixes. πŸ™‚

      I like rc.conf. I wouldn't mind it at all if it were as flexible as rcX.d type init files. A single huge file is easier to back up, but to add stuff to startup, it's gotta go to rc.local (last I've seen), which is a dirty hack.
      If something supported rc.conf and the ability to do like a "/etc/init.d/bind restart" for example, I'd be in heaven.

  2. BSD is not "Free"

    Every operating system has costs. Those costs are realized not just through the sticker price, but through time spent dealing with a particular operating system. For hobbyist users, labor tends to be viewed as cheap or free, leading to the mistaken assumption that OS software with no sticker price is free. For corporate users, it's certainly not the same thing.

    Price of a particular OS is also related to the expected functionality derived from it. When recommending to the average non-techy person, I'll say use Windows on the desktop. When recommending to the small company with no technical resources and very typical requirements, I'll say use Exchange on Windows as the email server.

    When recommending to an outfit with some technically clued people and any requirements more than purely ordinary, I say stay the hell away from Windows.

    As for using a Linux over a BSD, that's a far more subtle and far less important question.

  3. BSD is more for singular servers than broaduse networking. the reasoning some of their ideas and usages may seem outdates is because they are much more worried about the security of something than the compatability of it. Security first always. That is why BSD (at least open) has only had one remote exploit in 7 years. Beats any other OS out there by miles. I will agree that BSD is not a good wide distro especially when managing a network of them. But.. then again.. BSD was never meant for wide distrubution πŸ™‚ Mostly just the security and upkeep of servers.

    "You can break a windows box… you can hack a linux box… but you can only stare at a closed off BSD box"

    1. And you can only stare at a dual processor machine with a high quality SCSI controller running OpenBSD when it consistently enters kdb because you untarred a copy of BIND 9.

      Sure it's secure, it doesn't even stay running!

      1. funny, my last checked uptime for my OpenBSD machine, running a webserver, ssh and ftp server, was 3 weeks. Hm.. could just be me but I still think it is the best Server OS out there

Leave a Reply