The slightly over-simplified version goes like this:
OpenBSD is for firewalls, specialized routers, traffic management, and other internet-facing security applications.
FreeBSD is a reasonable general-purpose server BSD. It was among the first to have support for "really big" filesystems, but Linux has since caught up a bit. ZFS on FreeBSD is pretty rock-solid though.
There's a lot of overlap, and advocates for each will probably point out other things their OSes are good at.
In general, Linux has won the race towards user-friendliness. The recent systemd thing has caused (or will cause) the BSDs to fall even farther behind, because it is fundamentally incompatible with BSD (see point 15 on http://0pointer.de/blog/projects/the-biggest-myths.html), and more upstream software will begin to develop dependencies on systemd.
And, in general, Linux enjoys a greater amount of developer participation, which makes it faster-moving.
But, in general, the BSDs have produced more stable operating systems ideal for set-it-and-forget-it servers.
I have to regularly work with Debian, FreeBSD, and OpenBSD systems (and irregularly work with just about everything else, even the occasional Solaris). OpenBSD and FreeBSD kick the crap out of Linux when it comes to managing network traffic. But, for my personal machine, it's gotta be Debian.
The desktop experience on Linux has actually got worse over the last few years though, at least for me, to the point that I'm seriously considering switching back to Windows. There's just too many regressions in fundamental things like audio support. I dread to think what the PulseAudio development methodology would bring to init-land, where bugs and crashes have a much bigger impact.
(Did you know that there's no such thing as an official stable release of PulseAudio anymore? The latest release, 4.0, includes stuff like a patch that's literally incomplete and breaks audio resampling in some circumstances. This is going to be reverted in 5.0, but that'll come with more major changes and no doubt more breakage from those major changes. Lennart Pottering works for Red Hat and maintains a set of patches for Fedora that fix some of the problems - I've even encountered one major issue that was only patched there by him and not fixed upstream at the time - but from what I've heard Fedora's still not much better.)
Part of the reason I'm on Debian for my daily machine is because the Debian team really seems to make an effort to tread carefully around a lot of that. I'm on the testing branch even, with KDE, and for the most part things work well. The stable branch would probably be better.
I can't agree that the desktop experience has gotten worse in recent years. KDE 4 is a huge improvement, and other distributions and window managers are pretty OK too.
But ... yeah. I'm not a big fan of HeisenAudio, and I'm really not looking forward to what seems to be the inevitable switch to systemd. My first experience with systemd, a couple of years ago, was horrible, and I altogether abandoned the distribution I was on at the time and fled to Debian. When Debian switches, I'll try it out again for a little while and then maybe give the BSDs another try for desktop use.
Lennart is really not my favorite character in software, but mostly I think he's just a symptom of a growing trend in modern software development that's only starting to make real inroads into operating systems: as long as you can argue that the thing you're building is somehow technically better, and as long as you release frequent updates (and don't forget to blog about it!), then it's totally acceptable to break early, break often, and just when users think it's working for good, break it again.
The first un*x I've ever installed was FreeBSD. At the time I didn't have internet at (my parent's) home and had to rely on the CDs and the user manual.
To this day I think it's the best introduction to the Unix world I could've had.
All the documentation is great and since the BSDs are somewhat more monolithic than GNU/Linux distributions it's very well self-contained and coherent.
After a day of work I went from formating the hard drive, bootloaders etc.. to having a full blown KDE environment.
And I knew how everything worked underneath. It truly felt like an achievement. And that's how I became a loyal FreeBSD user.
I've used OpenBSD on and off for years, and have even donated to the project, but I personally use Linux (Debian or Arch Linux) these days.
Specifically influencing my decision is that OpenBSD has issues on my current computer. Wireless networking drops after a certain amount of inactivity and with the most recent release, the mouse keeps disconnecting with a "wsmouse0 detached" warning.
More generally, OpenBSD has always felt slower to me than Linux on the same hardware. It does not have a modern journaled file system and OpenBSD faces a free Unix software ecosystem that increasingly Linux specific.
All that said, OpenBSD gets so much right. They care about security and documentation. They care about creating a good version of Unix. They care about software freedom. I could never fault someone for choosing it.
The biggest difference for the user, in my opinion, is that the BSDs serves both as OS and distribution, in Linux parlance.
It comes with a base system that is fully operational, whereas Linux is a kernel that someone needs to pack up with gazillion userland utilities to provide you something bootable/usable -> Debian, RedHat etc.. (or 2nd, 3rd level distributions that are based on these).
A result of this, from this Linux using guy here, is that BSDs often feel more consistent and well thought out (people often speak about the great documentation for example). You get everything from one 'vendor'.
All the BSDs emerged from the BSD (Berkeley Standard Distribution) Unix tradition. All offer a generally monolithic "cathedral" style development approach to the OS as a whole (kernel, libraries, utilities, applications), rather than the more piecemeal "bazaar" style favored by most GNU/Linux distros.
The BSDs in general have fragmented rather less than GNU/Linux development has, though the latter have also captured a far larger deployment base, by most estimates. Adding Android to the mix, Linux competes with any end-user platform. BSD is also the root of many proprietary Unix variants, an intentional characteristic of its licensing model.
FreeBSD in general is aimed at the server and desktop niche with a particular expertise in networking. FreeBSD originated in the "UNIX Wars" of the early 1990s during which AT&T attempted to assert its trademark and copyright over the increasingly popular BSD and 386BSD ("1-800-ITS-UNIX") operating systems. That case was a landmark, with AT&T substantially failing to assert its claims. The ruling was largely sealed, but much of it was subsequently unsealed during the SCO v. IBM trial, greatly damaging SCO's case (also based on copyright claims over UNIX). Arguably the uncertainty generated by the lawsuit provided a toehold for Linux to gain in early critical popularity, though the openness of its development model also likely contributed to this.
NetBSD forked from FreeBSD with the aim of providing as broad a range of hardware support as possible, though arguably some GNU/Linux distros such as Debian have trumped it.
OpenBSD forked from NetBSD with the aim of providing a very high security platform. OpenBSD lags in many high-performance and scalability characteristics, but offers an exceptionally robust security profile and default deployment security characteristics. The project website has long bragged about its security record (presently "Only two remote holes in the default install, in a heck of a long time!"). Notable OpenBSD projects include the pf firewall suite and OpenSSH. There's also been a project to remove all GPL'd code from the OpenBSD release, though attempts by the original pf author to write a specific exclusion into his license for use in GPLd projects (which the BSD license otherwise allows) resulted in that codebase being removed and the suite rewritten from the ground up. Theo's ideological purity is different from Stallman's in bent, but no less strong in my opinion.
There are a few even smaller distros (notably DragonflyBSD), I'm less familiar with these.
Underlying all of the BSDs is the BSD license, which is "permissive", requiring only that the license text be included in derivative works -- those works themselves need not carry source distribution obligations as most of the GNU licenses (GPL, LGPL, GPLV2, GPLV3) do. The result (intentional) is that the BSDs are used in a wide range of proprietary products, not merely dedicated servers. I've found BSD in routers, load balancers, printers, fax machines, settops, and other devices, usually identifiable by nmap fingerprinting scans.
All offer a generally monolithic "cathedral" style development approach to the OS as a whole (kernel, libraries, utilities, applications), rather than the more piecemeal "bazaar" style favored by most GNU/Linux distros.
This has gotten a bit less true, though not entirely. The classic Unix model really did develop the entire system in the unified development model: kernel, userland, servers, major application software, etc. You could then also install third-party packages for specific application software (e.g. Matlab), but it wasn't the norm, and didn't handle core functionality.
But some components have gotten to be big enough that they're entire projects in themselves, usually cross-platform and not integrated with any one OS's development. Some of these are adopted into the BSD core respositories and customized so they form part of the integrated offering, but a number are just left in ports and run mostly unmodified. Webserving is one example: when used as a webserver, the BSDs, just like Linux, depend for a core part of the functionality on Apache or nginx. A few of the commercial unixes do follow the more traditional "everything included" model, e.g. Oracle and IBM have in-house customized versions of Apache as Oracle HTTP Server and IBM HTTP Server respectively. But the free BSDs generally run this kind of software un- or very lightly modified. The compiler is another example; the BSDs all ship basically a stock GCC or LLVM, rather than having an in-house compiler developed with the system, like the old commercial Unixes did.
Windows Server might be the purest descendent of the old Unix cathedral model, shipping integrated, Microsoft-developed software for all core functionality: kernel, userland, windowing system, webserver, compiler, etc. GNU also had such ambitions at one point, which explains some of their integration-oriented policies (some of which are disliked, and some of which have been dropped). For example, a unified style of command-line options (now packaged into getopt), a standard in-house-developed configuration/scripting/extension language that all applications were supposed to use (Guile), a unified compiler suite handling all languages (GCC), etc.
> But some components have gotten to be big enough that they're entire projects in themselves, usually cross-platform and not integrated with any one OS's development. Some of these are adopted into the BSD core respositories and customized so they form part of the integrated offering, but a number are just left in ports and run mostly unmodified.
I think this is pretty much what OP was trying to say, but his choice of words didn't make it obvious. The major difference between *BSD (OpenBSD is particularly picky about this) and Linux is that the "base" system is supposed to be fully-functional and well-integrated, from kernel to userspace, whereas Linux is "just" the kernel.
There are good uses to both models. I found the latter to be very useful in embedded systems, where you often need that kind of flexibility. I found the latter to be, frankly, a lot more useful on the desktop. To this day, I have to consult my notes every time I need to set up wireless on a Linux box without wicd or NetworkManager. The fact that a system with OpenBSD's reputation actually gets to do that easier is a good testimony to the merits of well-integrated userspace tools.
Sure. And that's always been the case. There's a question of what constitutes the "core OS", though in the case of the BSDs there's also a pretty strong tradition that this conforms largely to the state of BSD/UNIX in the late 1980s / early 1990s: kernel, libraries, userland, mail, DNS, lpd. While you can add a webserver to a UNIX system, it doesn't require one in the same way that, say, mail and cron are pretty much required to get basic tasks done.
I suspect Oracle's PoV is that a crappy 1970s proprietary database server and security-negative Java runtime are integral parts of every operating system and should be included by default, as well as the license compliance system required to manage them.
Windows Server is absolutely a Cathedral, though Microsoft has had its own reign over the system tempered by both legal and marketplace / partner considerations -- hands tied in the first case, business reality requiring they toss some scraps to their vassals in the second.
Drawing ideological boundaries is always a fraught process.
Traditional GNU/Linux systems include a great deal of BSD/MIT licensed software. Locally, I've got over 3100 packages installed on a Debian box. Running grep over /usr/share/doc/*/copyright I find:
2555 of these are GPL licensed, 774 BSD, 1462 reference MIT (this may include non-license references, "MIT License" nets 28 entries), 139 Apache, 25 Python, etc.
Stallman's argument is over the core of the OS, which he makes a fair case for being kernel + compiler + core libraries. In the case of Linux, that's straight up GNU for #'s 2 and 3.
FreeBSD 10, newly out, actually makes huge gains on OpenBSD's firewall, pf [1]. pf, by default, is not very thread-friendly, and uses a central mutex for packet processing. glebius has done some fantastic work that's unlikely to ever get ported back to OpenBSD's pf.
Now that FreeBSD 10 looks like it supports EC2 out of the box, I'm eager to toy with it again.
"As far as I see it: FreeBSD is the big one. Could replace Linux in pretty much any server situation. ZFS is amazing. OpenBSD is a bit more bare bones, but because of security might make a good router or firewall. What I've read about NetBSD is mostly research stuff. NetBSD is like a playground for OS researchers. (They have Lua in the kernel for example.)"
> What is the relationship between OpenBSD, FreeBSD, and NetBSD?
>
> And why would one choose one of those over Linux?
The BSDs each are a complete system (as opposed to just a kernel) so if you rephrase your question like "why would one choose one of those over Debian, or Ubuntu, or RHEL, or Slackware, or Gentoo, or Arch...", then maybe you begin to see some parallels.
There are all kinds of reasons that make people prefer one Linux distro over another, and similar reasoning would apply to the BSDs. However, the differences between the BSDs tend to be larger than the differences between select two Linux distros.
Just to give you a glimpse of my personal reasons for using OpenBSD (both on notebook/desktop as well as on servers), it's probably got something to do with the 30 years of evolution and turd polishing that has resulted in a really really consistent and well integrated system. The OS is reasonably simple, requires little configuration & maintenance, it's well documented, it does what I want and it does what I expect it to do. It's predictable. It's easy to live with. It helps that everything is documented in a man page, and the same group of developers is in charge of integrating and documenting everything (even if not all parts of the system originate from the OpenBSD project).
It's hard to be more specific than this without pointing at the thousand little things it does right but which you don't notice until you're accustomed to them and then try any distribution of Linux where everything feels a little bit "off", everything is constantly changing (how many init systems and audio systems and daemons and configs and package managers have been invented or re-imagined beyond recognition in the past 10-15 years?), documentation is spotty, and all these groups of developers with different backgrounds and different goals make their own different things that aren't integrate in a way that masks all these differences..
OpenBSD is very consistent, and remains "Unixy". It hasn't been influenced by ex-Windows users trying to turn it into a Windowsy desktop OS, or by ex-Windows enterprise users trying to turn it into a windowsy enterprise server, or by corps turning it into an embedded router/PoS/whatever OS, or by hipsters trying to turn it into a next gen smartphone OS, or by hipsters trying to turn it into a cool must have Awesome OS X desktop, or by overzealous programmers trying to turn every little thing into a not-so-little programmable & scriptable monster that communicates with other programmable & scriptable monsters so (in theory) the thing can be made to do anything and everything (if you can program it and it's overcomplicated design & flaws allow for it...).
That's not to say it cannot be tasked with much of the tasks people use any other OS to complete; it just does things in a rather specific way. If you happen to like a traditional Unixy way, then OpenBSD is a good choice. I cannot speak of the other BSDs because I haven't used them, but I hear their strengths are quite different.
NetBSD and FreeBSD were the original ones derived from BSD. OpenBSD forked from NetBSD. DragonflyBSD forked from FreeBSD. The forks are the only ones that are interesting. You use openbsd for firewalls, routers, loadbalancers, etc and dragonflybsd for servers.
And why would one choose one of those over Linux?
Edit: Here's a link I just found: http://en.wikipedia.org/wiki/Comparison_of_BSD_operating_sys...
And one more: https://www.freebsd.org/doc/en/articles/explaining-bsd/compa...