
Ask HN: I'm a Linux guy. Tell me about all those BSDs - ghotli
I use Linux and I have for nearly all of my teenage and adult life. I had a short foray into Solaris; ZFS was nice, and so were the raid tools. Otherwise I found it to be rather tedious.<p>Tell me, why would I ever want to use one of those BSDs over Linux of some sort? What's the allure?
======
cperciva
(Speaking as a FreeBSDer here -- I'll let NetBSD and OpenBSD folks cover
those, since I don't follow them closely enough to offer accurate comments.)

1\. We don't let licenses get in the way of making good technical decisions.
This means that, for example, we had no problem with importing DTrace and ZFS.

2\. We have more of an emphasis on doing things right. This often means that
it takes longer before we acquire new features; but it means that once we
acquire new features, they work and aren't likely to be removed or completely
rewritten any time soon.

3\. We develop the kernel and userland in tandem. This allows new features in
the kernel to be accessed from userland faster (usually immediately) whereas
in Linux there will often be a significant lag time before your libc supports
everything in your new kernel.

4\. We have stable development branches, and we're serious about them. Not
"stable" in the linux kernel sense of "we think this won't crash" -- stable in
the sense of APIs and ABIs, so that code you compile on FreeBSD 8.0 will work
_without recompiling_ on FreeBSD 8.4 five years later.

5\. Our stable branches apply to the kernel, too. You can compile a kernel
module for FreeBSD 8.0 and use it on later versions of FreeBSD 8.x, too --
linux, in contrast, has on occasion broken kernel ABI compatibility in
_security_ patches. ("Gee, do I want to apply this security patch, or do I
want to keep using the video card driver supplied by my vendor?")

6\. Personally I greatly prefer the FreeBSD ports tree over the linux
equivalents, but that's just a matter of taste and what you're used to.

~~~
SageRaven
I've used FreeBSD for servers and my personal workstation for quite a few
years. I love FreeBSD, and the thought of having to support a Linux variant is
not a pleasant one. Not that I have a bone to pick with Linux, since I thought
it was an excellent OS for the 10 or so years I used it before trying FreeBSD.
But once I tried, and became accustomed to, FreeBSD, there was simply no
turning back.

However, I take issue with your #1 bullet point above. If the FreeBSD camp
truly was about the technical stuff, we wouldn't be stuck with a crusty,
substandard version GCC in the base system.

For those not in the loop, the last GCC version with a GPLv2 license was 4.2.1
(from 20070719 according to "gcc -v" on my 8.1 machine). Due to not liking the
GPLv3, the FreeBSD developers have stuck w/ this old GCC version, denying
users the current set of optimizations and architecture support.

Sure, we _can_ use GCC from ports, but that's not officially supported for the
base system or the ports tree. True, they're working on getting the clang LLVM
front-end to be the official base system compiler, it'll be 5 to 10 years
before it's as stable and usable as gcc is today.

But that is about my only gripe with FreeBSD, and as far as gripes go, it's a
relatively minor one.

~~~
avar
Yeah point #1 is odd. GNU/Linux doesn't let licenses get in the way of
technical decisions. DTrace and ZFS aren't in Linux because Sun explicitly
designed their licensed to be GPL-incompatible.

Where that isn't the case nobody is seeking to replace code due to license
reasons. E.g. you don't see Linux people trying to replace X11 or Sendmail
because of their licenses. But the BSD systems are actively trying to phase
out GPL licensed code due to not liking the license.

~~~
jrockway
Exactly. I always read BSD discussions and think "what a bunch of licensing
fanbois". I guess since the OS and the license have the same name...

Anyway, here's why I support Linux and the GPL: the WRT54G. Linksys would have
never released the source code for the router's kernel without being forced
to. But when they did it, an amazing thing happened, third-party developers
made their product one of the most popular wireless routers ever. With open
source, everyone benefited -- users got better products, hackers had fun, an d
Linksys made more money.

If Linux was BSD-licensed, the WRT54G would be a long-forgotten relic of the
past.

~~~
jolan
Imagine if OpenSSH were GPL'd and every vendor who implemented it got sued for
not releasing a few patch files specific to their product.

~~~
jrockway
I'm imagining it. Posting a patch to your website is surely better than
rewriting ssh from scratch or licensing SSH.com SSH. (Sure, BSD requires less
effort on your part, but the community gets less in return. That's not good
for the continued existence of the project.)

~~~
jolan
Complete secrecy is the typical modus operandi of companies. You'd probably be
paying extra for SSL telnet.

------
tzs
One nice thing about the BSDs is that their users don't get annoying things
like this when they look for basic manual pages:

    
    
        The GNU folks, in general, abhor man pages, and create info documents
        instead.  The maintainer of tar  falls  into  this  category. This man
        page is neither complete, nor current, and was included in the Debian
        Linux packaging of tar entirely to reduce the frequency with which the
        lack of a man page gets reported as a bug in our defect tracking system.
    
        If you really want to understand tar, then you should run info and read
        the tar info pages, or use the info mode in emacs.
    
        Problems with this man page should be files as bugs against the Debian
        tar package, not submitted to the tar maintainers.
    

There is a fair amount of truth in the old joke that BSD is for people that
love Unix, and Linux is for people that hate Microsoft. As the name says, GNU
is not Unix, and that shows through in most Linux distributions.

~~~
avar
That's a bit like complaining that when I use the BSDs they don't have
documentation in Microsoft CHM format, or that they put stuff in /usr/local.

Different systems simply have different conventions, and GNU picked GNU Info
over man pages. That bastard GNU tar(1) man page was created because Debian
has a policy that everything must have a manpage.

I like Unix, but the GNU Info format solved some real issues with man. It has
built-in index and cross-reference metadata, scales to the size of entire
books (the FreeBSD manual would be a single info page), and is much easier to
write. I much prefer reading info pages to man pages for that reason.

A lot of people seem to dislike GNU info because they confuse the GNU TexInfo
/ info format with the info(1) program. I'm not a big fan of the default
reader (I use the Emacs one instead). But the TexInfo format can be exported
to multiple formats and read by multiple programs. Here's the exported GNU Tar
documentation for instance:
<http://www.gnu.org/software/tar/manual/index.html>

~~~
tzs
> Different systems simply have different conventions, and GNU picked GNU Info
> over man pages.

Sure, but that's no reason to be hostile to man pages. Ideally you have a man
page, which provides a standard quick reference for those how know the
command, and then other documents (such is Info) for people who need more
detailed information, complete manuals, etc.. In fact, that's how it was way
back in the Seventh Edition days of Unix, with the UPM providing the in-depth
documentation and the man pages providing the quick reference.

If the GNU people don't want to actually write the man pages, they could at
least not stand in the way of those who would like to provide them. Here's
another variant of the note from the GNU tar man page on some Linux systems:

    
    
        The GNU folks, in general, abhor man pages, and create info
        documents instead.  Unfortunately, the info document describing
        tar is licensed under the GFDL with invariant cover texts, which
        makes it impossible to include any text from that document in this
        man page.  Most of the text in this document was automatically
        extracted from the usage text in the source.  It may not completely
        describe all features of the program.

~~~
avar
> Sure, but that's no reason to be hostile to man pages.

They're not being hostile to man pages. They just don't maintain them. They're
no more hostile to man pages than FreeBSD is to info pages.

> Ideally you have a man page [...]

That doesn't sound very ideal. man pages and info pages are formatted
differently and take a different approach to explaining things. Having both
would mean that the maintainer of each package would need to expend effort on
maintaining both.

As an example. Here's the FreeBSD strlen() manpage: [http://www.gsp.com/cgi-
bin/man.cgi?section=3&topic=strle...](http://www.gsp.com/cgi-
bin/man.cgi?section=3&topic=strlen)

And the equivalent section in the GNU libc manual:
[http://www.gnu.org/software/libc/manual/html_node/String-
Len...](http://www.gnu.org/software/libc/manual/html_node/String-
Length.html#String-Length)

On FreeBSD I'd do `man 3 strlen' at the nearest terminal. On GNU I'd do `info
libc' followed by `m string<TAB>' to find that node.

You can't easily turn that documentation into a man page. E.g. on FreeBSD
you'd have one manual page for malloc(3), but in the libc manual the
documentation for malloc and other allocation functions is part of an entire
chapter on "Virtual Memory Allocation And Paging". You can't easily tear that
out into a man page.

> They could at least not stand in the way of those who would like to provide
> them.

Well, would the FreeBSD project stand in my way if I started sending them
patches to duplicate their documentation in some new format like GNU info or
perldoc? Probably yes.

Documentation isn't a one-off thing. It incurs a long-term maintenance cost.
So it's best to pick one system and stick to it.

And really, it's not too much to ask that you just familiarize yourself with
the conventions of the OS or system you're using. To stick to just ways of
reading documentation I use man, info, perldoc, rdoc, phpdoc, javadoc, online
tutorials etc. regularly.

~~~
tzs
But FreeBSD would not stand in your way if you wanted to take their
documentation and incorporate it into whatever format documentation you wanted
on your system. The GNU folks, on the other hand, will not allow people to
take text from Info pages and incorporate it into BSD or Linux man pages.

~~~
avar
Relly? When have they ever stood in someone's way if they wanted to do that?
And was that GNU policy or just some lone grumpy maintainer?

~~~
tzs
At least for tar, the info docs are licensed under GFDL with invariant covers,
which is not a free license, and so text from it cannot be incorporated in
free works. There's an explanation at the Debian site of some of the problems
with the license:
<http://people.debian.org/~srivasta/Position_Statement.xhtml>

------
strlen
To add to what cperciva said, there's also the difference between the base
system (/bin and /usr) and the ports subsystem (/usr/local). Most user space
software is in /usr/local, which makes is convenient in that you could always
solve nasty library/installation problems by removing /usr/local and starting
from scratch.

The whole of userland and the kernel can also be built with a single command
("make world"). The code is often beautiful and easy to read (my alma mater
taught a graduate OS Case Study class where the textbook was "Design and
Implementation of FreeBSD" and assignments involved fixing bugs in the FreeBSD
kernel) and you get a chance to play with some interesting things (DTrace and
ZFS).

It really depends on what you're looking for. If you're going to deploy a
production web app it may or may not be the best choice (I honestly don't see
a big advantage). FreeBSD once used to be lauded for network performance and
while it's still excellent, Linux has caught up. Depending on what you're
doing e.g., a distributed storage or processing cluster, it may well be worse
than Linux (but again, benchmark and stability test it yourself before taking
my word for it).

If you're curious about operating systems (or are interesting in building your
own custom OS without licensing issues e.g., what Juniper did with JunOS),
it's perfect.

------
may
I used to play the "what distro are we running this week" game. Most were too
big, others too small. Some had great communities, but lacked a killer
feature. Etc. etc.

Then I found FreeBSD. The learning curve was steeper, you had to know more
about how things actually worked under the hood (a plus, in my book) and the
system was elegantly clunky.

A cohesive whole -- more or less -- instead of endless re-packaging of the
same things.

I do a minimum install, then build my system up from the ports system. (Ports
is like apt-get, pacman, other package management systems. Compiling from
source can be a bitch, but only for big things -- Emacs, X11, Firefox etc. but
it allows unparalleled customization, or at least the option for it.)
Installing binaries is also an option if you don't want to compile.

It has had every piece of software I've ever needed (minus
<http://joey.kitenet.net/code/mr/>) already in ports.

I even recompiled my first kernel within three days of starting out (thanks to
Absolute FreeBSD, by Michael W. Lucas), something that seemed a dark art on
GNU/Linux.

I've had no stability problems in the last year or so, and I just upgraded
from 8.0 to 8.1 smoothly. Everything important on my laptop is supported.

If I want shiny stuff like webcam, usb auto-mounting, all that, I reboot into
Ubuntu. Not because FreeBSD can't (I'm mostly assuming), but because this is
my dev box and I'm not supposed to be doing anything shiny or distracting on
here, hehe.

In short, think of an older truck with a manual transmission -- it's
dependable, gets you there and back with minimum of frills and you can tinker
rather than a new SUV with bells and whistles. While FreeBSD is more angled
towards servers, I love it as a desktop OS -- at least for coding and light
web browsing.

And it's a single community, without the balkanization of GNU/Linux.

~~~
timtadh
really usb auto-mounting is _shiny_? that shit should just work.

~~~
may
Well, I meant in terms of "plug it in and it appears on your desktop". When
I'm coding, I don't _have_ a desktop, nor any wish for one. All I do on this
box -- by design -- is code and spend too much time on e-mail/HN/reddit/etc.

If I need to work with a digital camera or a flash drive, I just reboot into
Ubuntu and do it quickly there. FreeBSD is strictly for work (in theory).

I've only mounted stuff under FreeBSD maybe once in the past year or two, so
it isn't even on the list for me.

So, from my point of view as a software developer who lives in Firefox and
Emacs, it's shiny. Others differ. But for me, it's not required, at all.

~~~
nailer
> When I'm coding, I don't have a desktop, nor any wish for one.

How do you read docs without a web browser?

~~~
_pra
He probably means he's using a simple window manager (twm, fvwm, etc) instead
of the fancy everything-managers that include desktop functionality.

X alone doesn't provide that -- think back to Windows 3.1 days. You had a
background, but not a desktop.

~~~
nailer
I figured something like that. I generally avoid using the term 'Window
Manager' because none of twm, fvwm, blackbox, enlightenment, etc. only provide
window management - there's almost always some included app launcher.

------
alec
I used FreeBSD and OpenBSD for a while, and what drove me back to GNU/Linux
was package management. OpenBSD was OK at it even if it had a limited
selection, but I never had much luck with FreeBSD ports. Having a nice, stable
base system wasn't very useful when ports were always being updated to the
latest version; if I wanted a security fix, I had to take all the feature
changes and new bugs, too. I tried a bunch of different port upgrading scripts
but they always seemed to miss something. And upgrading ports took a long
time; I want to be using my computer, not having my work interrupted by
compiling in the background and occasional troubleshooting.

I have high hopes for Debian GNU/kFreeBSD - the FreeBSD kernel with the Debian
package management.

~~~
sigil
Binary package management in FreeBSD isn't well-advertised, but it's
definitely there:

    
    
      # portupgrade -rvP --batch foo-1.2.3
    

This will upgrade installed package foo and anything that depends on it using
binary packages from the mirror site, falling back on a build from source.

Installing a new binary package:

    
    
      # portupgrade -vNP bar/baz
    

If you're using portaudit to stay on top of vulnerabilities (it's part of the
default install these days), here's a nice way to upgrade everything:

    
    
      # portaudit -a | sed -ne 's/^Affected package: //p' | sort -u | \
         xargs portupgrade -rvP --batch
    

I'm like you, for some vulnerabilities I don't want to upgrade a ton of stuff.
FreeBSD is perfect for this though, you can just pop into the port directory,
"make extract," apply the patch, and "make reinstall." You can avoid full
rebuilds by always passing "-W" to portupgrade whenever you install / upgrade
stuff.

~~~
alec
That example of how to upgrade for security fixes is much more complicated and
less reliable than Debian's "apt-get upgrade".

For example, take a Firefox or PHP security vulnerability. Those projects
generally don't just release a new version with the security fixes; they'll
throw in whatever feature changes they've made along the way. I don't want to
sort through the various changes and patches to find the right combination;
trust me, it's no fun, I worked on the Debian security team for a while. It's
important to me to get just the security fixes because I don't have time for a
constant upgrade treadmill and there will be new bugs in with the new
features.

I really want my operating system to just work and get out of the way. If I
didn't need any packages from ports, I think FreeBSD would fit that bill.

------
ax0n
Die hard OpenBSD fan. ( <http://www.flickr.com/photos/kc-bike/2894306940/> )

The primary functional differences are a more mature code base (I didn't say
more technically advanced or superior) and in general a unified system. What
most people have come to know as "Linux" or "GNU/Linux" is a kernel mashed
together with the GNU userland. And most distributions then further pile
things onto it, kind of assuming they know what kinds of things the end-user
will want to do, and picking a few applications that will help the end-user
accomplish those tasks. Maybe it's Gnome, OpenOffice, Firefox and Pidgin.

The BSDs provide a system. The kernel and userland are maintained and enhanced
by the same group of people. There's a bit more control in what's provided in
the base system.

After installing Free/Net/OpenBSD Users are generally left with a text-mode
login console where a small subset of non-BSD-based things are installed but
often not active. X.Org may be ready to go, as may Apache, lynx and some
others. In the case of OpenBSD, these tools are often patched considerably
before packaged with the base OS.

Want something other than twm for your Window Manager? Want a graphical web
browser? An office productivity suite? You can install them easily via binary
packages, or use the ports system.

If you've used Gentoo or Arch Linux, you will probably find that the ports
system (/usr/ports/* if you installed it) is familiar.

I use OpenBSD quite a bit, even on the desktop. It's fast, free, and very
robust. It's also probably the most strictly audited operating system code
base in existence. Those guys (like me) are pedantic when it comes to
security.

I highly suggest you fire up one of them (OpenBSD or FreeBSD, I'd suggest) in
a VM and give it a shot. VirtualBox is free. NetBSD is primarily geared toward
maximum portability between hardware platforms. I personally think that's the
only thing it's got over OpenBSD.

I used to be a FreeBSD fan before 5.x. The team had a really rough time after
Jordan left for Apple. I became disenchanted and haven't really given it the
time of day for almost a decade now. It's probably a fine OS.

~~~
ams6110
If you want a desktop-oriented BSD "to try" I recommend PC-BSD. It's a very
painless install and the whole distribution is geared towards a fairly non-
technical user.

~~~
ax0n
This guy sounds plenty technical, though. Also, PC-BSD starts losing the point
of the unified system and kernel. It's essentially a FreeBSD fork with more
GNU stuff.

------
fjarlq
I've used FreeBSD continuously (as a server, no GUI) since 1995, with some
Linux use here and there, and I find myself leaning toward Linux lately,
mainly because Ubuntu has done a lot of great work recently to support Amazon
EC2. FreeBSD has fallen behind on Amazon EC2 support for some reason.

I was initially attracted to FreeBSD because I had first learned Unix on a BSD
system in the late 80s, and the more restrictive licensing terms of Linux made
it difficult for my company to use it.

So unless you have a specific need like ZFS or liberal licensing terms, I
can't think of a reason for a long-time user of Linux to switch to FreeBSD.
Similarly, unless you have a specific need like Amazon EC2, I can't think of a
compelling reason for a long-time FreeBSD user to switch to Linux. Both are
good, solid systems with some minor individual strengths and weaknesses.

~~~
danielrhodes
I think FreeBSD boxes are generally used as perimeter boxes by most sys admins
because of their reliability, therefore compatibility with virtualized
environments is not a priority.

~~~
sophacles
We once had some sort of explosion regarding mail-servers at a company I
worked for. I have no idea, what the actual problem was, other than too much
incoming mail combined with some settings goof. The mail server software ended
up eating memory and cpu cycles like crazy. This was on a FreeBSD box. I
remember the sysadmin saying "You know, linux would have just OOM-killed it at
this point, but its a BSD box so it's doing the right damn thing". Ever since
then I've carried around this idea that BSD is stable to a fault :)

------
sliverstorm
As a Linux user, OpenBSD feels to me like using my father's old tools. They
are old, have some funny practices, and aren't always pretty, but they are
phenomenally functional, simple, fantastic at what they do, and when used
properly virtually impossible to break.

Similarly, OpenBSD is sometimes trailing in features, and as a desktop with a
pretty UI and all the most recent packages, it did very poorly. But as a
server, IMHO it is fantastic.

To give you an idea of the beautiful simplicity; the OpenBSD install
environment is... a kernel. You download a kernel that's a couple of
megabytes, boot it as if it was any other kernel, it asks you for your install
source, and then continues with other questions. That's it.

------
Andys
They have a different development model which is not as Linus-centric.

The user-land and kernel ship together as a more tightly integrated package.

In terms of performance, I found that the linux kernel is often optimised for
bandwidth at the expense of latency.

eg#1, When the system is under heavy memory pressure, Linux tends to grind to
a halt and start killing processes randomly, where FreeBSD responds more
gracefully.

eg #2, In highly-threaded environments (eg, 32 or more cores), Linux doesn't
really work very well unless you pin processes to specific CPU cores. In
fairness, BSD doesn't perform much better, but at least avoids pathological
cases.

~~~
Andys
ps. I should add that I really don't use BSD much anymore. The reason is that
ease of administration and wider driver support is more important to me than
purity of development, and neatness of the user-land.

For that reason I'm using Ubuntu Server for many roles now.

------
kljensen
The BSDs always _feel_ beautiful to me. (I'm a mixed GNU/Linux, FreeBSD, Mac
OSX user. ) The kernel configuration feels more simple and the official
documentation feels uniform, informative, and almost always sufficient.

If more virtualized hosting providers offered BSDs (FreeBSD in particular) I
would choose them over Ubuntu for servers.

~~~
a2tech
I had the same dilemma when looking for virutal hosting-I ended up at
rootbsd.net because running FreeBSD was important to me. Not as
cheap/featureful as linode, but its good enough for rsync.net its good enough
for me.

~~~
avar
You can run FreeBSD on Linode as of FreeBSD 8.*. It can run in domU now.

~~~
lsc
is this true? hot damn, I am behind the times. do you know if it's the
paravirtualized kernel? last I checked it wasn't particularly stable... but
damn.

I don't see it in their 'distro manager' thing

~~~
a2tech
I emailed them about it after 8 was released-they have a 'non supported
install method' for OpenBSD that a forum member wrote. They told me it SHOULD
work for FreeBSD, but they're currently not devoting any resources to figuring
out how to make it go

~~~
lsc
huh. the paravirt OpenBSD stuff is pretty old and dead (Theo, uh, is obviously
not a fan of virtualization) I'd be interested to hear if anyone has gotten
FreeBSD running on linode or another paravirt xen host, though.

------
bl4k
I have been an OpenBSD and FreeBSD user, as well as minor contributor, since
the mid-90s. All the answers here are good, and I would like to add:

* FreeBSD is on the cutting edge of performance. Because it is a total OS (as opposed to just a kernel), performance improvements are made and integrated into the binary packages and ports build options of common packages. FreeBSD was one of the first operating systems to implement kqueue, which is now available on OS X. This was part of the reason why for years FreeBSD dominated high-performance web serving. If you asked this question 5-10 years ago, the answer would simply be 'FreeBSD performs a lot better than Linux with web serving', but that is not as true today since Linux has caught up in the 2.6.x branch (with epoll). For more info see the classic: <http://www.kegel.com/c10k.html>

The good servers like nginx and varnish take advantage of these performance
benefits that FreeBSD offers.

(there was a similar system here with the virtual memory manager, while the
Linux kernel struggled with this issue ~01-02 FreeBSD was miles ahead).
FreeBSD is the starting and development point for a lot of new technologies.

2\. Everything is done the BSD way, from directory layout to the rc.x startup
system. It is the same and uniform and integrated with the kernel and doesn't
vary across releases. There is a single reference handbook, and POSIX
compliance. I have always preferred the BSD way of file system layout, and
that is what I have become accustomed to. (ie. /usr/local/ really is usr
local).

3\. The BSD's are a monolithic kernel (which Linux is today, mostly, if you
choose to) which has performance implications. FreeBSD support kernel modules,
but the monolithic approach is preferred. It is very easy to build your own
custom kernel (I suggest you do for servers) and the defaults are include
nothing and build what you need from there, which provides a very small, fast
and optimized kernel image. Linux distributions tend to take a 'kitchen sink'
approach, since they are aimed at people who don't want to compile and load a
kernel module for device XYZ. FreeBSD places the onus on the user to know what
they are doing - which forces you to understand the internals of the operating
system and how it works. Linux usually has different distributions depending
on the target, but FreeBSD is flexible enough to only have a single distro
that can be customized from a 20MB install image through to a desktop system
that will support your Chinese webcam when plugged in. It can do this without
compromising on performance or bloat. I suggest you start FreeBSD with the
minimal binary install plus the ports tree (the ISO is 50MB, install is about
that).

4\. You can take this one 'distro' and way of doing things across a multitude
of architectures.

5\. jemalloc - a virtual memory manager for parallel processing that
outperforms Linux, see:
<http://people.freebsd.org/~kris/scaling/7.0%20Preview.pdf>

6\. The GCC compiler and toolchain are steadily being replaced by the less
bloated and much faster Clang/LLVM which are part of Xcode and BSD licensed.
It allows much better IDE integration, is modular and a lot lot faster than
GCC. Clang/LLVM are already at the point now where they can compile all of
FreeBSD

7\. The TrustedBSD event auditing, ACL, stack protection, other security
features and OpenBSM make FreeBSD orange book compliant in terms of security.
OS X also has this (it is the same security model). This is important if you
are in a corporate environment and need to stamp some certifications or meet
compliance regulations with the systems you choose.

8\. Zen and VMWare virtualization support available in kernel. Virtualization
support is very good in Linux, but the virtualization providers have been
supporting FreeBSD for a while now, and have hired core team members to
develop software. EC2 needs better support, but I am sure it is coming.

9\. Linux has abandoned the development branch approach (ie. 2.7.x) and
instead trails along 2.6 releases with releases candidates. With FreeBSD you
can be assured that STABLE is _stable_ and CURRENT is current. Releases are
taken very seriously, as can be seen by FreeBSD 5 (one of the best OS releases
every, IMO) took years to finalize. Point releases are binary and API
compatible with .0 releases (ie. 5.5 binaries are guaranteed to run on 5.0)

10\. You have linux binary compatibility anyway, at near-zero cost.

11\. A more liberal license to use in commercial environments (ie. if you sell
a firewall, or an embedded device, no need to release your own code - Apple
have done this spectacularly).

12\. ZFS (works)

13\. Excellent handbook that encompasses the entire operating system:
<http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/>

14\. Average knowledge of a FreeBSD/OpenBSD community member is higher than
Linux (personal experience) and since there is usually only one way of doing
things, you will find consistant answers and advice on your questions or
issues across the web.

15\. FreeBSD hasn't had a default install, STABLE security advisory in ~10
years.

In conclusion, if you like to know what is actually happening on your server
or machine so that you can tweak, optimize and better understand performance
and other issues, BSD will almost force you into understanding it. If you are
running linux and just downloading and installing binary packages, you are
simply unaware of what is happening on your system (no different to running
Windows, really). BSD will teach you the old school UNIX way of doing things,
is consistant throughout and through just using it it will teach you a lot
more about your system and operating systems in general than Linux.

~~~
forkqueue
A reasonable summary, but one that demonstrates some misunderstandings of the
Linux world. To deal with the issues point by point:

* FreeBSD has better performance than Linux? This is, as you almost concede, no longer true.

* Lack of kernel modules an advantage? Hardly. Linux loadable kernel modules produce no extra performance overhead, but make life a lot simpler for everyone. The only extra 'bloat' is having ~100MB of drivers of which you probably only need 10% or so. If this an issue for you (ie, you're running an embedded system) you can of course cut down the modules to only those required, or even compile into the kernel just as with FreeBSD.

* The GCC compiler and toolchain aren't optimal, and I fully expect a major Linux distribution to switch to Clang/LLVM in the not too distant future. If this is a success (and I expect it to be), I wouldn't be at all surprised to see most/all Linux distros switch. This isn't a Linux vs FreeBSD issue, this is GCC vs Clang/LLVM - a battle I believe Clang/LLVM will win.

* As far as I'm aware TrustedBSD offers no more features than SELinux, and the Linux ACL system, but maybe I'm showing my lack of BSD knowledge here.

* Xen and VMWare virtualization is there but not 100% in FreeBSD. They're rock solid on Linux, which also has KVM, a very viable alternative to the two.

* The development branch/stable kernel approach is irrelevant - people don't use Linux, they use a Linux distribution (OK, OK, a GNU/Linux disitribution :)). In most distributions point releases are binary and API compatible with .0 releases (RHEL 5.5 binaries are guaranteed to run on RHEL 5.0).

In conclusion, is FreeBSD good? Undoubtedly. Is it better than Linux? It's
hard to make a case for that. It has less device support, less software
support and a massively smaller user base.

FreeBSD is nice to tinker with, but it doesn't offer enough benefits to
justify putting production software on it. It's great to learn about the old
school UNIX way of doing things, but that's not what I want to be doing on a
live server.

~~~
loewenskind
>The GCC compiler and toolchain aren't optimal, and I fully expect a major
Linux distribution to switch to Clang/LLVM in the not too distant future.

Have you looked through the Linux kernel code? There is a _lot_ of gcc
specific stuff in there. I don't think the Clang change will be as fast as you
think.

~~~
rbanffy
The worst that can happen is porting GCC features over to a GPL-licensed Clang
fork.

~~~
praptak
It could actually be quite bad - maintaining a large featureset like this in a
fork would probably cause major problems. Fortunately GCC compatibility is
listed as one of the official goals of Clang.

------
kunley
I work on both BSDs and Linux boxes and this fact struck me recently:

for i in /bin /usr/bin /usr/local/bin; do ls $i|wc -l; done

Linux: 124 2155 67

FreeBSD: 44 430 1067

On BSD, you clearly see which programs are essential for your system to be up
& well, which are service additions and which are 3rd party stuff (yeah I
missed sbin but you see the picture). On Linux there's a big bag of /usr/bin
and a beginner can have no clue if some stuff is important or not.

And the sources. On BSD, sources of kernel all system programs are at your
disposal in /usr/src and that's it; they represent a coherent view of what
meat you have running. On Linux of course you can download the sources and
most probably your distro will help you with obtaining the right version. But
it isn't the same when you hit the problems, esp. on production. Well even
without the need of fixing anything or tracking problems, the sources serve a
great educational value with an immediate availability.

In general, the BSD approach seems to come from a longer experience of
establishing best practices. I'd say the principle is the same with Linux and
BSD, but the devil (pun intended) is in the details, and BSD details look as
better engineered for many.

[edited for clarity]

~~~
rubashov
That's a distro thing. A slackware or debian setup will not have much
superfluous stuff installed.

~~~
kunley
The Linux numbers were actually taken from Debian. On both families of systems
you can decide what to rule out and this is healthy thing to do. But, you
know, there's still a difference in thinking. On BSD I'm sure what constitutes
a core system and what belongs to the ports -- and that's what I was writing
about, not the sum of programs installed but splitting them into sub-
hierarchies in a sane way. Such distinction provides a subtle kind of hygiene
which occasionally can be a savior. But yeah well it can be appreciated when
you just use it for a while.

------
jacquesm
My main reason for no longer running FreeBSD (which we used for quite a few
years) is that since I've switched my desktop environment to Linux I got
caught time and again by small differences between the servers running FreeBSD
and my dev box. So I switched everything over to Debian or debian derived
distros. Ubuntu notebook remix for the laptop, Kubuntu for the desktop and
straight debian on the servers.

Other than that, my experience with FreeBSD is that it was absolutely rock
solid and bullet proof, uptimes of many years with machines pumping out data
at a pretty decent clip for the time we're talking about.

*BSD is not always as fast with supporting the latest hardware or adding a new feature or technology but what's done stays done. Linux tends to yoyo for a bit before settling.

------
bleepster
reading this [[http://www.over-
yonder.net/~fullermd/rants/bsd4linux/bsd4lin...](http://www.over-
yonder.net/~fullermd/rants/bsd4linux/bsd4linux1.php)] might give you a good
understanding of *BSDs -- written specifically for linux users ;)

------
dschobel
I've been using FreeBSD since the 8.1 release a few weeks back and as my first
*BSD experience it is fantastic.

The only thing which will keep me from committing to it is the absence of a
stable and/or official version of Google Chrome (the only freebsd versions of
Chromium I've found have been very much alpha software).

I (like a lot of people I suppose) spend too much time in my browser to have
this be a negotiable point.

I have been very much impressed by the cohesiveness of the platform (akin to
what Ubuntu has achieved on the linux side) and the documentation is fantastic
so if you're a FF user anyway, go for it.

~~~
Lammy
I'm using the official port right now with no trouble:
<http://www.freebsd.org/cgi/query-pr.cgi?pr=146302>

It's not in the tree yet due to some licensing problems that need to be sorted
out. The newest shar file as of this writing is here:
[http://chromium.hybridsource.org/chromium-
stable-125.shar.tx...](http://chromium.hybridsource.org/chromium-
stable-125.shar.txt)

~~~
dschobel
Thank you, I'll check it out.

------
16s
I like OpenBSD the best of them all. The project has principles and they stick
to them. It is simple and understandable and people like Stuart Henderson are
very helpful with ports and new developers. It's a much smaller and friendly
project than you may believe.

Theo and Ted and Marco and OGA and all the other devs are great and they are
all very open about everything they do. I only have one majpr concern with
OpenBSD:

* Multiple CPUs/Cores

With the lateral move by Intel and AMD to more and more cores rather than more
hertz the future of CPU processing seems very clear. The problem is that
OpenBSD has primitive SMP support, and is nowhere near FreeBSD or Linux. It's
hard to find single core servers these days and in a few years, 12 or 16 cores
will probably be entry level and 48 to 64 will be common... maybe more.

In short, I hope OpenBSD can keep up with multiple CPUs/cores. Otherwise it
will seem just wrong to load it on new servers.

If they do not keep up, I would still buy the CDs to support the project and
its many side projects (OpenSSH, OpenBGP, OpenNTP, the new smtp system, etc.).
Even if you, as a Unix user absolutely _hate_ OpenBSD for whatever reason, you
should still buy the CDs to support OpenSSH.

------
novel
I have an impression that FreeBSD are being strongly supplanted by Linux in
these days of virtualization. There were times where jails ruled the parties,
but now these days are over and Linux has a number of great virtualization
solutions like KVM or Xen while there is no much progress on jails.

Also, for some reason it's not very popular in enterprise despite of API and
ABI stability, i.e. one could hardly find enterprise products like e.g. IBM
WebSphere available on FreeBSD. One probably could use Linux ABI support but
I'm not sure how reasonable that is.

I used to work at ISPs few years back and FreeBSD was very popular in this
circles. At one place we had FreeBSD running on absolutely all servers and in
other one we had only one RHEL box which was a requirement for some VoIP
billing.

About two years ago I moved to a software development organization which is
quite close to enterprise and virtualization and I've seen 'live' FreeBSD only
once and the folks are going to migrate to Linux in the near future (I don't
know what their reasons are though). And that's quite sad because I really
like FreeBSD.

------
sigil
I've been using FreeBSD and Linux side by side for about 10 years. FreeBSD
appeals strongly to the developer side of me: a typical install puts the
complete kernel source code in /usr/src, includes a compiler and other build
tools, section 3 man pages, and Makefiles for 20,000+ software packages (the
ports system). On Debian-based systems at least, these are things I have to
ask for later, and there always seems to be a bit more struggle involved in
any given developer setup...it's almost like there's a velvet rope separating
users from developers.

Maybe other developer-centric Linux distros have caught up in certain ways;
I'm actually quite interested in hearing more about them. With FreeBSD though,
the low barrier to development has always been there, and when you dig deeper,
you'll start to feel like part of a great tradition.

~~~
caf
I quite like Debian for development - when installing a new system there's a
slew of packages I always add (eg "manpages-dev"), and after that it's plain
sailing.

------
dashr
Because it just works. Uptimes are counted in years. Low loads. Great memory
management. Ports are compiled for your system from source pretty easily. It
always seems able to stretch your hardware's potential. I'd never use it for a
Desktop, but as a server, and a dev server especially, it rocks.

------
CyberFonic
If you are using an Apple Mac, then you are using BSD (with bits of Mach and a
sprinkling of Apple fairy dust) !

I'm over simplifying, but with Linux or BSD it's really only about the kernel.
They both use the same collection of GNU tools and open sourced programs like
FireFox, Python, etc. Package management is more a distro issue, than a Linux
vs. BSD issue.

If you want to customize your kernel for a specific server configuration, then
one of the BSD's might be more optimal. However, if you just want something
that works with most devices, especially notebooks, then Linux has a larger
collection of drivers.

~~~
fs111
The apple statement is not true:

[http://events.ccc.de/congress/2007/Fahrplan/events/2303.en.h...](http://events.ccc.de/congress/2007/Fahrplan/events/2303.en.html)
<http://vimeo.com/6955695>

------
zacharypinter
Here's to hoping cperciva comments.

~~~
cperciva
Ask and ye shall receive. :-)

------
126
The FreeBSD Portage System kept me there, until ubuntu did something similar,
then the community got bigger and faster, then the portage feature + the
community was better... so I stayed with ubuntu. Plus, FreeBSD is an ex-
girlfriend type operating system now. Sure, you could go back and teach it...
but... (I too used FreeBSD since the '90s, for whatever it's worth. Still love
it, but cannot justify keeping it foremost. Besides, I use Mac OS X also, so
yes, I still use FreeBSD)

~~~
caf
Don't tell your current girlfriend that you still love your ex, though ;)

------
grammaton
Put simply, it's more integrated and unified than most Linux distributions.
Instead of packaging this thing from here, that thing from over there, and
ramming in this new toy from that place there, everything in each release -
tools, userland, ports, kernel - moves in lockstep. The result is an OS that's
very consistent once you figure out how it does things, and rock solid stable.
It takes a bit more tweaking to get, say, your compositing window manager
running - but once you do, you can be guaranteed it will _keep_ running - even
when you change or upgrade other things - with all the stupid consistency of a
rotating planet unless you screw up and do something very bad. Also, in my
experience, it's much more customizable than Linux. The kernel sources are
included in the distribution, right there for the building, and the process of
configuring and making your own kernel is fairly straightforward, even easy.
Contrast with the closest thing I've seen on Linux, Gentoo - which is
significantly more involved. That may seem like an obscure point, but if
someone walked up to me and told me I needed to put a *nix on a server
tomorrow and strip it down to get every last iota of performance out of that
server, FreeBSD would be the first thing I reached for.

------
silentbicycle
I've been using OpenBSD for several years (since 3.4...wow, that's almost
seven years), as my primary OS. I had been running Debian for 2~3 years, and
Red Hat (briefly, ick) before that. A lot has been covered already, but:

1\. The BSDs feel significantly more _cohesive_ to me. Other people have
mentioned this, but it deserves greater emphasis. The config files, man pages,
etc. are quite a bit more consistent, and my first guess about where something
is located is nearly always right. Red Hat, in particular, seemed to
cavalierly scatter things in /usr/bin, /usr/local/bin, /usr/local/sbin, etc.
(Around 7.0, IIRC.) The man pages & other docs are consistently _excellent_ ,
for everything from malloc to spamd, it's a cleanly and consistently designed
system for learning Unix / system administration.

2\. OpenBSD has a focus on security. While this isn't my top priority,
personally, I _really_ like its secondary effects - it tends towards
minimalism, so there are less dusty corners to harbor exploitable bugs, and
they pass security patches upstream. OpenBSD's malloc
(<http://www.openbsd.org/cgi-bin/man.cgi?query=malloc>) can also be configured
for very aggressive scrutiny. Not quite the same as running everything under
valgrind, but it has also much less overhead since it's better integrated. If
you're working in C, it's a great platform.

3\. I can install and configure an OpenBSD system in under ten minutes, easy.
Its installer is spartan and based on text prompts. Once you know what to
expect, it's a snap. Also, they put all recognized drivers in the kernel
(ostensibly since debugging weird custom-kernel issues would be tough with a
smaller community) - if the dmesg doesn't say "... - not recognized" at boot,
you're usually set. No rebuilding kernels or modules just to get things
working. I haven't dealt with much _really_ weird hardware, but any random
crappy old x86/amd stuff has worked fine. (Cheap old Thinkpads run BSD
brilliantly, by the way. I'm typing this on a T41.)

4\. The BSDs have less GNU stuff in the userland. This is probably a matter of
taste, but a lot of the GNU stuff seems really bloated by comparison - gmake
vs. BSD make, gawk vs. awk, etc. (That said, I'm also an Emacs user. :) ) The
BSDs also seem less political. It isn't Linux or GNU/Linux, it's just BSD.

5\. I really like source / ports-tree-based packaging. You can still use
binary packages (especially if you're installing KDE, doing that from source
is just silly), but ports+flavors works quite well. Some Linux distros (Arch
and Gentoo) have similar packaging systems, now. Of course, some programs are
hard to bootstrap - GHC, in particular, has lagged behind.

I've only used FreeBSD a bit here and there, but it also seems like an
_extremely_ solid OS, and most of the same advantages apply. It doesn't have
as much focus on security, but its community is much larger, and it's probably
more newbie-friendly.

~~~
sigil
> 5\. I really like source / ports-tree-based packaging ... Some Linux distros
> (Arch and Gentoo) have similar packaging systems, now.

FreeBSD user here. I've always been curious about the ports-tree-based
packaging systems found in these Linux distros. Is anyone familiar enough with
both to offer a comparison?

~~~
silentbicycle
While I've done very little with Gentoo, Arch's packaging seemed to me like
running OpenBSD's ports tree from cvs, but without the option of an updated-
every-six-months super-stable milestone release. It's inherently a "bleeding-
edge" distro, which is not necessarily true for OpenBSD. (I run OpenBSD from
snapshots/source and update a few times a month, but I also maintain some
ports.)

I've only experimented with Arch, though, and I'd also like to hear from
others who know both well.

~~~
nalbyuites
I have been an Arch user for about 6 months now. jumped the ship from Gentoo.
Since I like to stay bleeding-edge, on Gentoo that meant often-broken packages
that took a lot of time to fix. Arch has been very smooth till now, despite my
using a lot of AUR packages.

~~~
Daniel42
Arch user here. The great thing with a rolling release is that when something
breaks there is usually a lot of people trying to solve the exact same problem
at the same time. I think I learn a lot in problem solving because of that
since I switch to Arch! And now every bug is a fun thing that almost never
last long, you must be quick if you want to be the first to write the patch
who will solve it!

------
jtchang
My first unix like system was FreeBSD. I then moved to Linux because it is
more widely used and supported.

I still have a sweet spot though for FreeBSD. The main reason is that they
have figured out the perfect balance of how much to include without being
overwhelming. It is also a great learning system because FreeBSD forces you to
understand all the pieces of *nix.

------
Daniel42
I love OpenBSD's philosophy and documentation and enjoyed testing FreeBSD but
I always return to Arch for my desktop and laptop and Debian for my servers.
Except for two project that are on my todo list for years but never been
completed: a router firewall using OpenBSD (with the wonderful PF) and a NTP
server using FreeBSD and a GPS with time pulse signal.

I hope someday I will give them the time because I feel that I could have a
lot of fun with that.

------
masomenos
Doesn't look like anyone's mentioned another unique feature of a BSD: every
OpenBSD release comes on a CD with funky artwork, stickers, and an original
song. See <http://openbsd.org/art1.html> and <http://openbsd.org/lyrics.html>
for more.

------
RexRollman
In my opinion, operationally speaking, there really isn't a lot of difference
these days between Linux and BSD.

Personally, I like both OpenBSD and Arch Linux.

------
trunk
and if it comes to HPC, the world tends to think it's a Linux box, while we
still have this ( <http://people.freebsd.org/~brooks/papers/bsdcon2003/> )

~~~
rythie
That's 7 years old! I'm not sure it helped make your point.

------
malabar
Plain and simple, FreeBSD is the horniest OS around.

------
mkramlich
First of all, they only happen on Windows boxes and...

------
404error
I miss TechTV.

This question reminded me of this episode.

Pt. 1 <http://www.youtube.com/watch?v=91igg2UX7o8>

Pt. 2 <http://www.youtube.com/watch?v=oU88fQkwfws>

------
beej71
Wasn't BSD originally just another Linux fork?

I'm kidding.

The cathedral nature of BSD likely gives it a security edge.

