As die-hard FreeBSD user and admin I'm interested to know why FreeBSD hasn't been used more often (yeah I know about Netflix and Yahoo but still)?
I'm not sure you're going to find one unifying answer, so I'll just contribute my own experience.<p>- FreeBSD lost the desktop battle to Linux. All joking aside about Linux on the desktop, if you want a *nix environment (and not Mac), Linux distributions are just a lot easier to set up and have traditionally enjoyed better packaging of proprietary software (graphics card drivers, RAID card drivers, applications, etc.). While FreeBSD has some very compelling advantages on the server, for those in my circle, it's not not so much better as to justify the cognitive overhead in switching between two similar, but different, OSes.<p>- FreeBSD wasn't a first class OS on EC2 for years. This allowed an entire ecosystem of devops tools to evolve with essentially Linux-only support.
I used to run everything on FreeBSD. It's a great operating system and incredibly stable and I loved every minute of sysadminning a FreeBSD box. Honestly, what changed was Ubuntu. Being able to have a fairly robust server on the cheap and maintain it fairly well with just a few apt-get commands was a huge game changer.<p>Admittedly I haven't tried running FBSD since 4/5 timeframe and I'm sure quite a bit has changed since then, but I used to spend hours trying to patch and compile upgrades to software. The ports system that they used at the time (and might still use for all I know) was great for installing stuff, but if something didn't exist in ports or was a few version behind, you were compiling and installing from source.<p>aptitude has 99.99% of everything I've ever needed to install and manage and some of the newer package management systems like npm and the like cover everything else. What used to be hours each week of administration work has become minutes a month. It might be less secure, it might be slightly less robust, but overall I don't even think about systems administration anymore and (to me) that's such a huge savings in time that it's just not worth trying to go back.<p>And as emersonrsantos mentioned, I can almost guarantee that every hosting provider has Ubuntu in some form or another. If I need to move to a new host, I can have the system set up and be in business in probably less than an hour. What used to take a few full-time sysadmins has now been replaced by a handful of devops guys that not only manage the systems, but also help my engineers automate and improve our development workflow and pipelines. And, as he also mentioned, I can throw a rock and hit a Linux guy. Finding a FreeBSD expert is nearly impossible and they always cost a lot more.<p>But, it was my first unix and I've got a lot of love in my heart for the BSD way of doing things. (NetBSD and OpenBSD are other fond loves of mine). I ran a hosting company in the early 00s that was powered entirely by OpenBSD off cheap commodity hardware. And NetBSD runs on everything, which is also a pretty cool plus.<p>These days, I'm content knowing that my kickass Mac desktops owe their existence to the OS I grew up loving.
Community support. More like community derision from the FreeBSD world.<p>In the early 2000's, I had to set up a dedicated CVS server for my 10-person startup. I was the dual hat "dev & admin" guy. We were small, but had good desktop machines with good SCSI disks in them (top of the line Seagate, if I remember right).<p>I set up both a Linux and a FreeBSD dedicated CVS server. We were all happy to try one server for a day, copy the repo to the other one for a day, and try things out.<p>Well, FreeBSD was a bitch to set up compared to Linux and was easily 10X slower in every way measurable. Like, "cvs up" would take 5 seconds from the Linux server compared to a minute on FreeBSD (yes, same repo...). Hopping on to the FreeBSD box locally showed that every kind of disk activity was way slower than Linux.<p>I went to the FreeBSD newsgroups and got laughed at. Not a single piece of helpful info. I did get several large words thrown at me about how I didn't understand the benchmarks and the performance shouldn't be noticeable to the end users. At least one guy took to emailing me directly about how I shouldn't be comparing Linux to FreeBSD.<p>After 2 or 3 days of wrestling, I powered off the FreeBSD box, installed Linux on it, and never considered FreeBSD again.
After 18 years of running FreeBSD on my servers, my $0.02:<p>Politics/marketing:<p>* Most "unix" admins only know linux and will advocate for it vigorously because it is so much better than.. "what do you use again? Fedora? Ah, FreeBSD, something with F, I knew it!"<p>* Management not always listens to reason but just wants a discussion go away, so they listen to the loudest advocates.<p>Knowledge/Community:<p>* It is easier to copy a solution to a linux problem from stack overflow than to read the FreeBSD handbook, understand the problem and fix it.<p>* FreeBSD only is fun when one has a higher level of expertise: Knowledge of <i>sh</i> and at least a basic understanding of <i>make</i> are required, being able to at least read <i>c</i> code makes life much easier.<p>* Reading docs is hard. FreeBSD forces one to understand the standard unix tools that come with it. That means one has to spend some time reading the docs (or at least skimming over them so one knows where to look when the need arises). If one does not understand the tools, even simple init scripts are black magic.<p>* No exposure to FreeBSD at all: most hosting companies won't even list FreeBSD as an option (though in most you'll find some unix geek who'll happily connect KVM or IPMI and insert the install-CD for you).<p>* The FreeBSD community is much less forgiving than the linux community: Ask a question that can be answered easily by reading the handbook or some man-page and the response will probably be silence (rarely flaming, just silence).<p>And finally also some points where one could argue that it makes sense not to use FreeBSD from an economic point of view:<p>* When using FreeBSD one is regularly forced to clean up linux-BS when venturing outside what /usr/ports provides: #!/bin/bash - or even worse #!/bin/sh that actually wants a bash - is one of the most common problems.<p>* When compiling software from source that does not come from /usr/ports one regularly has to do research what $leenox-distro-package XY provides because documentation just gives command lines for the most common linux distributions. "Soo.... what exactly does that software need to compile when the docs tell me to <i>simply apt-get foo-23.5 and bar-42.666</i>?"
Simple answer - knowledge share. Many more people know and are familiar with Linux than FreeBSD. Throw in companies like Red Hat, etc. and that makes it more compelling for those wanting some sort of support backing.<p>Personally, I've been running FreeBSD (including some commercial installs -- years ago) for about 16-17 years.
It's kind of a virtuous cycle (or vicious cycle, if you prefer BSD): more people use Linux; more guides are written to help others, more software is readily available, and more testing is done by virtue of having a larger user base; so more people use Linux. I don't think there's much to say about qualitative comparisons between Linux and BSD that hasn't already been said to death, but I do think the two are borrowing from each other in healthy ways and approaching parity, at least in an "on paper" sense.
I have vendors that require a certain OS. Often, its not even "Linux", its "Red Hat Enterprise version 6.x". If you've ever dealt with an Enterprise Software Vendor, you know the added level of fun of using something other than the strict requirements given. Red Hat is the new Windows for government vendors I've had to deal with.
I read / "think" Yahoo is not using FreeBSD any more. The move to Linux started before Marissa era. And I think by now they should be 99% Linux.<p>Netflix I "think / read" is only using FreeBSD with their Storage Appliance. So that is relatively small parts in number of Servers. Most of their operation, those Chaos Monkey killed machines are all EC2 and Linux.<p>Whatsapp is Erlang and FreeBSD, a real rare bleed. But i read Facebook is hiring Engineers to make Linux Network Stack better then FreeBSD. Bold claim on the Job Description, then there were rumours Whatsapp moving to integrate with Facebook, i.e moving off FreeBSD to Linux. I doubt thats an coincidence.<p>Despite the many / some similarities between FreeBSD and OSX, even Apple aren't using any FreeBSD on their Servers. At least there hasn't been any evidence in hiring.<p>So really, which large, Internet Company is actually using FreeBSD?
I think it was a network effect. Around 1992 The free PC-based BSD distributions like 386BSD were at around the same level (if not slightly ahead) of Linux.<p>However in 1992 and 1993 there were some internal political problems in BSD land (which eventually led to FreeBSD spinning off) and the "USL v. Regents of the University of California" lawsuit also cast a shadow on the legality of the BSDs.<p>During those two years Linux kept developing, jumped ahead and basically grabbed all the mind-share and marketing share.<p>The BSDs have been playing catchup since. For instance with fewer developers they had problems supporting a wide range hardware so were not even an option for many.
Some reasons I could think:<p>- It's easier and cheaper to find Linux sysadmins than BSD ones<p>- There's more commercial software supported on Linux<p>- There's more companies offering support for Linux<p>- Linux is more portable than BSD<p>- Linux is one of the standard server OS offered by providers, BSD isn't
Thanks everybody for answers!<p>From what I gather from all these replies people's main concern is that FreeBSD is generally harder to use/configure and management is hard to persuade into supporting it because it would make DevOps less productive.<p>From the standpoint of a person who run FreeBSD in production on both bare metal and VM's and manages several commercial applications and websites, I must say that plenty (if not all) of these phobias are unjustified. Yes, there are some edge cases but 95% of the time, there's nothing new to learn you already don't know, except new package manager commands and slightly different file system layout.<p>Not using awesome technologies like ZFS, Boot Environments, Jails, Qjail, Poudriere and awesome PF is just a plain missing out in my opinion.<p>I personally don't care about desktop, there are already 2 awesome OS's that majority of people use for a reason and that's pretty much enough I think.<p>I personally heard nothing but praises from people who are long term Linux users/admins who tried it.<p>Once people figured out couple of OS specifics its all breeze :)
In my experience, the BSDs used to be trusted for their reliability and performance. Linux has come a long way in terms of reliability and configuration cost - though performance is harder to tune for. Docker has enabled a lot of trusted deployments. 6-8 years ago I remember the question "Why don't companies use Linux as much in production as FreeBSD?"<p>Maybe I'm sheltered.
Personal anecdotes:<p>About a year ago I wanted to replace newlines in a file with "sed" on FreeBSD. I couldn't.<p>At first I thought there was an error on my side. I was very surprised to find out that you could not do that at all, it said so right there in "man sed".<p>Dirty hacks to work around this problem posted on stackoverflow did not work on that machine either.<p>Tried to mess with newlines with python. Turned out there was some kind of other problem if you open files in 'wb' mode under FreeBSD.<p>This experience with some of the most basic tools not working as they do on GNU/Linux made me want to avoid FreeBSD if possible.
Lowest common denominator.<p>Those people who are familiar with a Unix variant are more familiar with Linux. Linux is different enough from *BSD that what people do learn about Linux doesn't translate.<p>Linux entry level is actually easier than Windows these days. In fact when I look for candidates if they only have Ubuntu / Docker on their resume its trash.<p>What used to be considered entry level skill sets are now called "Michael Jordan" level skillsets ( kernel compile / tuning , C debugging etc etc )<p>Currently I use Linux because it makes me money. I use the BSD's because I like them
I can tell you my experience as to why Linux won out in production. Many years ago when I was doing enterprise systems administration, we were using both Linux and BSD equally in the beginning. But what eventually gave Linux the edge was hardware support and package management. Linux had solid SMP support first, which meant we could replace expensive UNIX servers like Suns and AlphaServers with much cheaper Intel based multi-processor servers. PLus Linux had more drivers for hardware like RAID and network cards. We didn't have to hunt down specific, often older, hardware like we did for our BSD servers. Also IBM ported Linux to it's z series servers so Linux had a (what we used to term) "big iron" server solution first and could replace proprietary solutions like the high end HP9000's. Package management was a huge plus. It greatly reduced administrative time. Major software upgrades, like when we had to replace libc6 on all our *NIX servers because of a major security bug, would take hours on the BSD servers but minutes on our Debian servers.
Keeping software up-to-date on FreeBSD sucks. That's my one and only complaint. If that got comparably easier, I'd be switching from Ubuntu/Debian on servers back to FreeBSD.<p>I still run FreeBSD 8.4 on one production system, and recently decommissioned a FreeBSD 5 box that had been happily humming away in a colo for 10 years. I learned FreeBSD before Linux and prefer almost everything else about it...except that part about updating software.<p>If you take security seriously, you apply security updates in a timely fashion. For a while I was diligent about it on my FreeBSD boxes, monitored vuxml, and updated vulnerable packages regularly with this:<p><pre><code> portaudit -a |
sed -ne 's/^Affected package: //p' |
sort -u |
xargs portupgrade -P -rv
</code></pre>
When things go well, and binary packages exist for everything, this is almost as good as `unattended-upgrades` on Debian. But things don't usually go so well. Building packages from source occasionally doesn't bother me. Random breakages in ports and their dependencies bothered me a lot, and became the rule rather than the exception.<p>Near as I can tell Ubuntu/Debian wins here because it freezes packages alongside the OS release, except for backported security patches if you're on LTS. FreeBSD has only one ports tree. It's in constant flux, and (in my experience) is constantly broken. Why can't ports be branched off alongside the OS release and receive security backports? Maybe FreeBSD doesn't have the manpower to do this, maybe it's cultural, I'm not really sure. What I can say is it's relatively easy to check out, tweak, build and install ports on a case-by-case basis if for some reason you need the latest and greatest of something. I don't see the value in constantly having the latest and greatest of <i>everything</i> though, and it even seems a little antithetical to FreeBSD to me.<p>Anyway, so port upgrades suck, but base upgrades also suck. Doing an `apt-get dist-upgrade` to go from Ubuntu 12.04 to 14.04 "just worked." Rebuilding world to upgrade from FreeBSD 7.x to 8.x worked, but just barely, and the whole process scared the shit out of me. Random incompatibilities continued to crop up for some time after.<p>I think this one comes down to the integrated base userland + kernel in FreeBSD versus the "everything's a package" approach in Ubuntu/Debian. Kernel upgrades are much more common on Linux. Not that this is an objectively good thing, but rare events don't tend to get tested and optimized like routine ones do.<p>Note: if you're a diehard FreeBSD user and you've figured out how to keep your system up-to-date with minimum fuss, please school me.
Perhaps they have some security concerns. <a href="https://vez.mrsk.me/freebsd-defaults.txt" rel="nofollow">https://vez.mrsk.me/freebsd-defaults.txt</a> - more admin time spent tweaking poor default security == more money being spent.
It comes down to the fact that there are more people familiar with linux than BSD. Orders of magnitude more in the US. Unless you're working on something where the GPL is a concern, it's easier to default to linux.
It's easier to find Linux admins and it's easier to look up Linux stack traces on SO. "Nobody ever got fired buying IBM," updated for the modern age.
Early companies like IBM threw a lot of weight and money behind linux around 2000 or so. From there, Google and other big companies chose Linux as well. This is a large basis of engineering talent and knowledge to build upon.<p><a href="https://www.youtube.com/watch?v=sOtKZA9ri7M" rel="nofollow">https://www.youtube.com/watch?v=sOtKZA9ri7M</a>
These days mostly because of the network effect.<p>People both get more value from Linux and add more value to it by using it and writing software for it. Take docker or nix for example, huge value for Linux and not so much for systems, where they don't work or aren't first class citizens.