Kinda feel bad for not being able to articulate it. It's not like I can point at one thing, e.g. the system call function foobar(2) is better. I either don't have enough FreeBSD experience or I'm not smart enough. Here are some things I've enjoyed:
- I didn't realize how terrible iptables was until I used pf on FreeBSD
- I didn't want to master yet another networking abstraction that docker introduces for configuring containers. Granted, I have not used VNETs on Jails.
- I like to _invest_ in the tech stack that I learn and not have it change the next release. I have more trust in the stability of FreeBSDs choices and roadmap.
- I like how light-weight the base OS install is.
- I like that FreeBSD doesn't use systemd and I like the simplicity of rc(8).
- I like that jail has stronger integration with the OS, like installing packages into a jail.
- I like that the book, "design and implementation of freebsd o/s 2nd edition" is available and my hope is that it's still relevant.
Something things I don't like:
- There are subtle differences in tooling and outputs that surprise me. Nothing I haven't been able to work-around. E.g. I learned that GNU Make has made _vast_ improvements to make that's available on BSDs. Not a big deal but had to install gnu make and invoke it as gmake.
- I miss cgroups.
GNU/Linux is an amalgamation of 2-3 of the highest quality IKEA sets. It's more up-to-date, with more bells and whistles. If you don't like one component from one set, you can (with enough elbow grease and fuckery) replace it with the analogous component from another set. However, there are bespoke seams everywhere, and the theoretical flexibility is often more trouble than its worth (just try using a mainstream distro but replacing systemd, for example). Also, the documentation is sometimes out of date, causing things to fail in utterly inexplicable ways, forcing you to resort to online forums and mailing lists.
FreeBSD has somewhat fewer features, and doesn't work as well with the latest hardware. But the things that are supported largely Just Work(tm). It is, by and large, just less hassle to run FreeBSD and you don't have to tinker as much.
Depends on the distribution :)
The only other big thing holding me back was the tooling but now that I've switched most of my workflow to Emacs, the option of choosing FreeBSD is becoming more and more appealing.
EDIT: Just be clear, I have been using Ubuntu as my daily driver since 2012; however I don't love all the decisions Canonical has made, I don't like how the entire ecosystem has grown to a level of complexity that makes it hard to understand what the hell is happening under the hood, and I am beyond peeved about the havoc systemd-resolver has wrought on my system.
EDIT 2: If anyone has any other suggestions for a better more free distro that I can use I'd love the advice, the thing keeping me form Hurd is worrying that it won't have full driver support.
Even choosing to ignore any blobbed drivers, Linux will still have better software compatibility, and still generally superior hardware compatibility. Certainly not worse hardware support. Linux supports more classes of hardware like wifi adapters, while FreeBSD is stuck trying to bring up newer standards. It also requires the same firmware blobs that Linux does -- in the end, whether on Linux or FreeBSD, if you dislike binary blobs in your drivers, you just have to limit yourself to hardware that doesn't require them.
[0] https://docs.freebsd.org/cgi/getmsg.cgi?fetch=284199+0+/usr/...
BTW: Darwin is opensource:
And how is upstreaming things an attack?
But that won't keep your system up to date with security patches, because OpenBSD does not rebuild binary packages.
Binary packages for -stable are rebuilt only for security issues or other major fixes. Simply call pkg_add(1) with the -u flag to get the new files.
https://ftp.openbsd.org/pub/OpenBSD/6.8/packages-stable/amd6...
firefox-esr-78.8.0.tgz
+zfs +(poudriere & /usr/ports) +(helpful mail lists) +bhyve !systemd
FreeBSD since 1994, Debian since 1998.
But underneath it all is a philosophy about how to live your life. If you want Big Corps deciding your computational experience, good for you, even Linux can provide that for you now. I don't. I don't care if I'm irrelevant. I approach cooking, reading, travel, etc the same way. And there are ranges. OpenBSD goes even further. I respect that.
My partner lives in Big Corp IT land during the day and she loves the in house experience of our rather extravagent mostly FreeBSD "cloud". Some Debian in there too; got to run some appliances like unifi-video.
Writing this on a FreeBSD NVIDIA desktop. Which I'm going to use to do my own taxes myself, with org-mode, and I'm going to file here shortly. For that I need chromium, which works fine. Otherwise I use Firefox, which ports tracks releases quite closely.
All this unnecessary effort! Why would anyone do such a thing. Mysteries.
Guide at http://us.download.nvidia.com/XFree86/FreeBSD-x86_64/460.56/... and driver at https://www.nvidia.com/Download/driverResults.aspx/170806/en... for the currently latest one.
Why we went with FreeBSD in the early 2000s? If memory serves, the ports tree and the package management were completely blowing away anything else at that point. Nowadays it is considered given for any platform, but it was a great advantage to be able to compile packages reliably with your own options back in the day!
The fact is, FreeBSD is (and was for a very long time) a trustworthy and very stable platform to run services in. FreeBSD has a very deep philosophy of trying to minimize surprises, which means that most of the time you can focus on your real tasks instead of fighting what has changed in the last version. And Jails are still a major plus, at least from a certain point of view, since they are very easy to manage, copy, install, administer, etc.
Even today where Linux has catch up in all aspects, if you have a large set of services on FreeBSD, you'll invariably have to pay a huge upfront cost to switch everything to Linux and re-learn stuff all over again. It's not a question of freedom or open-source (FreeBSD and Linux are totally free and open-source, in their own way each), it's a question of overcoming the mountain to get across to the other green side. I'm sure it's exactly the same for Linux shops that would like to try out FreeBSD. Why should they pay the cost, if they cannot really get any significant advantage or profit out of it? So one basically sticks to what's known and trustworthy from before, since the investment has already been made and most people don't like doing the same stuff all over again.
Everything does "just work" and I have a development environment that mirrors my production environment because of it. All of the dev tools run smoothly with Linux. As a bonus, I can run it on any laptop I like regardless of whether Apple decides the configuration should exist (RIP 17" MBP).
Corporate environments or personal stuff, I haven't found anything that I personally need that I can't do.
Legitimately, the only tool that I miss from OSX is OmniGraffle for making diagrams. Draw.io is good, but Omni was a special kind of polished. If they ever decided to release a cross platform version I'd buy.
There was an initial learning curve the first month when I committed to it, but I don't spend time having to get into the weeds of the system unless I just want to do something complicated.
All that said, this is something that I'm personally happy with and love. I won't recommend it to family and friends.
I'll recommend Apple for them because I know I can count on Apple Care to handle all of their problems, which keeps me from getting those same tech support calls.
For me though? I'll never go back if I can avoid it.
I made the switch from Windows almost 8 years ago, i actually loved the Uinity DE, these days i'm rocking Kubuntu on my work laptop, somehow Gnome 3 doesn't feel the same...but i reeallly like Plasma.
Somehow everything just works, my hardware is probably running on blobs of proprietary software but i really don't care ( i care about getting my work done tho).
I actually recommend Ubuntu/Linux to family and friends (granted that they don't do any kind of specialized work), my 8-yo nephews have been using KDE since the beginning of the pandemic and after a week of getting used to it i haven't received a support call.
Totally understand the appeal of configuring/tweaking every single detail of the OS to one's desire (been there,done that), as times goes by and life happens i rather spent that time with my family or hobbies
For me, I miss OmniGraffle and also OmniPlan. OmniGraffle lets one make nicer-looking drawings more quickly than anything on Linux that I've seen (xfig, ImageMagick & co.), and OmniGraffle is a slick and much simplear and cleaner project management software than e.g. MS Project and even Merlin.
(For the record, I never "moved" from MacOS to Linux, but I've been using Macs on and off at work as secondary machines in parallel to Slackware Linux, SuSe Linux, Red Hat Linux and eventually the Ubuntu LTS Linux of the day).
For family that uses their computers to access the internet and their email, Ubuntu LTS releases have been great. I'm of the opinion that if someone's use-case can be addressed with a Chromebook, then Ubuntu with Firefox or Chrome would serve them just as well.
The only "reason" to use any BSD over another system is because you want to. That's why you never get a good answer.
OpenBSD's documentation in general is very high quality, and FreeBSD to a lesser extent. Other distros are not really documented as well, so I have to rely on adapting information from the arch wiki most of the time.
For FreeBSD, jails are nice but I prefer docker. (which I have to use anyways for work).
Both FreeBSD & OpenBSD have a nicer user experience in general, in my experience. That said, I can't use them as daily drivers due to not having docker and other tools, and gaming. Linux isn't stellar for games but I can at least run a lot of games these days through Proton, etc.
Pro FreeBSD:
- ZFS, the best file system. Its fully integrated into the OS so it always works and its always there. I've always run into issues using ZFS on linux like cache not getting freed causing processes to get killed when I should have had ram available.
- VNET Jails. I can give each light container (FreeBSD would be jails, Linux would be docker/lxd/nspawn...) its own networking stack so it can bring its own network interface up and down, assign its IP address, get an address from my router over DHCP like any other computer, and run its own firewall. The firewall bit is particularly helpful for running brute force protection like fail2ban/sshguard/blacklistd.
- Additionally, I can delegate a ZFS dataset to a jail and let the jail manage it itself. This lets the jail create sub-datasets with control settings like transparent compression.
- After using pf (its a firewall) on FreeBSD, using iptables on Linux makes me want to walk into the ocean.
- Its really trivial to build everything from source on FreeBSD. The base system comes with everything you need to build the operating system so rebuilding FreeBSD and installing your new build is just a couple of make commands away. For packages, FreeBSD has a tool call poudriere which is the best package builder I've ever used. I use that to compile packages with custom options and CPU optimizations enabled for the specific processor in each of my machines for multiple versions of FreeBSD. It also makes debugging and modifying FreeBSD a breeze. For example, at my previous company we had 802.1x authentication for our ethernet, but I wanted to run a container directly connecting to the network so I had it behind a bridge. Turns out in the 802.1d spec it specifies that the ethernet frames used for 802.1x authentication should not be passed over a bridge, so I found the part of the code that did that filtering, commented it out, rebuilt FreeBSD, and everything started working!
- Bragging rights
Pros for Linux:
- The Arch Linux wiki is really top-notch. The FreeBSD man pages are better than the man pages on Linux but I much prefer the Arch Linux wiki over the FreeBSD handbook.
- You get a lot of features from systemd that aren't in widespread use in FreeBSD. For example, you trivially get process monitoring/restarting and stdout/stderr capture for every service. You can get the same functionality with a built-in tool called "daemon" in FreeBSD but its up to each service to call daemon as opposed to being built into the init system so its a lot less common. Essentially, I have to write custom service files a lot more often on FreeBSD.
- systemd user services
- steam
* http://jdebp.uk./Softwares/nosh/
* http://jdebp.uk./Softwares/nosh/worked-example.html
* http://jdebp.uk./Softwares/nosh/guide/converting-systemd-uni...
* http://jdebp.uk./Softwares/nosh/guide/per-user-user-services...
Super sad to do that, I loved my BSD jails back in '98 or before :-)
Now for the full answer, with more than a bit of historical perspective ...
It is a subjective topic of course. In "theory" there are 2.5 forms of mainstream operating systems; Windows, UNIX, and Microkernel UNIX (Mach derivatives).
Microsoft has invested in Windows.
Apple has invested in Mach/UNIX in the form of MacOS after the purchase of Next. (prior versions of MacOS are essentially dead).
Then there is UNIX.
UNIX was a product of AT&T, later it became the property of Novell and then the OpenGroup. Because it was a research OS originally (before System V was released) its source code was shared to other researchers and the folks at Berkeley Computer Science Research Group (CSRG)) created a their version of UNIX which they called the Berkeley Standard Distribution (BSD). Sun Microsystems worked with CSRG to turn BSD into a commercially successful OS (SunOS) while AT&T struggled to turn their distribution into a commercially successful OS (System V). This got ugly and legal fights ensued and AT&T paid Sun about a billion dollars to merge their successful OS with the unsuccessful OS. It also resulted in the Regents of California working to rewrite/remove any "AT&T proprietary code" from their distribution which left them with a research OS that they controlled and didn't have to worry about getting sued over. That OS, called FreeBSD, is pretty much as close as you can get to being a UNIX OS without owning the trademark (which OpenGroup now owns).
Then there is Linux. Andrew Tannenbaum wrote a "toy" OS that could be used to teach operating systems principles to college students and based it loosely on UNIX. He called it "Minix" for "minimum UNIX". Tannenbaum is, and this is putting it nicely, off-putting. He is one of those people who seem to rub people the wrong way. He got into an online fight with a teenager named Linus who had written his own "toy" OS that ran on the PC/AT computers at the time. He called it "Linux" and in his Usenet post suggested he didn't think it would amount to much.
A satellite player, who becomes important later, is Richard Stallman. Who was so affronted by the legal shennanigans that AT&T was pulling, the increased restrictions on access to SunOS that Sun was pulling (mirroring DEC before them) that he decided he was going do his own thing and nobody would have any way of hiding any of it. He called it "GNU" for, "GNU is Not UNIX." He took a lot of pleasure in the recursive acronym, it is the kind of thing folks in the MIT AI lab would chortle at. He was explicitly calling out "Not UNIX" not because UNIX was bad, but because everyone wanted to run UNIX and AT&T was being a huge pain about people calling things UNIX when they weren't paying taxes to AT&T. So the joke was it is EXACTLY LIKE UNIX but we're "saying" it is NOT UNIX. See? Fun joke. We get to use all your cool OS abstractions and knowledge and you can't sue us, nyah, nyah, hee, hee! Step one was "We need a C compiler" and so that was the first thing they built, gcc, binutils, and make.
At the time it was created, Linux, and the people who contributed code to Linux, were all UNIX fanbois. That is they loved "sticking it to the man" by building their own version of something that they wanted that someone else told them they couldn't have unless they paid them. At the same time Windows was a computer science joke. It was for "stupid people who didn't understand multi-tasking" and only lived in a single address space where random things could crash the system, and every tiny change required you reboot the thing from scratch. The joke was "did you try rebooting it" and used with much derision.
Now here we get to an interesting fork. The Regents of California could not abide the "copyleft" ideas of Stallman and the nascent Free Software movement. It wasn't because they wanted things to be proprietary, rather it was because they had gone through a protracted legal battle and knew their their licensing had been litigated and would hold up. As a result, the CSRG was not going to use anything like gcc with its GPL license and stuck with their portable C compiler and later variants. Meanwhile the rebuffed Stallman found a lot of people who were willing to use their stuff and contribute to Linux[1]. Writing as user land to mimic the UNIX tools was "easy" and done quickly, X was already open source from MIT and so that came too, and many people started writing the myriad of small device drivers that were needed to have this new OS boot on different systems. Many hands make for light work, and it flourished.
In 1996 I had to choose between using FreeBSD 2.x or Linux 2.x in an Internet Appliance our company was building. While we loved that new drivers were appearing regularly for Linux, the entire environment churned with change. There was no discipline in the userland between release to release. Command line options changed or were added, behaviors varied, and every new release had to be scoured for random "wouldn't it be neat if ..." kinds of change that someone had thrown in. FreeBSD on the other hand didn't get drivers as quickly but it evolved in an easy to comprehend way that didn't involve a lot of churn and it never changed important things in a "dot" (or worse dot dot) release.
So the environment was that the "cool" companies, Sun, SGI, Next->Apple, HP, were using UNIX so the open source community worked to make Linux as UNIX-like as possible. And of the UNIXes (BSD 4.x, FreeBSD, NetBSD, OpenBSD) moved along more slowly but with a very UNIX direction.
Jump ahead now 5 - 6 years. And Sun, SGI, and HP are all dead. The "cool" companies (FAANG) are using Linux in their data centers (or as in Apple's case still a UNIX derived OS) but Microsoft has upped their game and now they have a fully multi-tasking OS that a bunch of teenagers spent their formative years using and learning to tweak. Those same teenagers would love to have an "open source" version of Windows but Microsoft is not going to accommodate them.
So once again, you've got the "BSDs" which have a disciplined, ordered integration schedule. And you have Linux with its free-for-all user land. And these same folks decide they are going to start integrating features that they like about the Windows OS into Linux, in part because they can, and in part because Windows is no longer the lame besmirched OS that "only losers" use. And as a result of that activity, Linux begins to turn toward a new "north star" which is now Windows rather than UNIX.
We can argue all day and all night if operating system configuration is best done with a registry or a series of text files, and never get anywhere. They are subjective choices and so, like policy choices, arguing them is not going to get you anywhere. There are a lot of such choices that go into OS implementation. But as a result of the new influx of contributors to the Linux user land, and their early computer experiences, Linux is now mimicking Windows design philosophies rather than UNIX design philosophies.
So to answer your question about "Why should anyone use them?" the answer is to broaden your understanding of OS design philosophies so that you might better understand the tradeoffs and make better choices about which OS you might choose to support or not support in the future.
Phew.
[1] Linus has a similarly cautious attitude about the GPL as evidenced by his messaging over the years.
For a desktop/laptop computer, I do not use it.
I've read some other stuff, too, though, such as praise for the ports system and FreeBSD's "jails" feature.
But I imagine it's a little like Linux distros. If you don't already use Linux, it's kind of hard to understand why anyone cares about the minor differences between distros.
* https://www.freebsd.org/cgi/man.cgi?query=ps
ps has one set of options and has used getopt() since April 1990.
* https://www.freebsd.org/cgi/man.cgi?query=inittodr&sektion=9
Documenting the operating system encompasses documenting the kernel as well.
* https://docs.freebsd.org/en/books/handbook/
"Part of the o/s" is not the best description. The idea is that there is a clear demarcation between all of the programs that come as part of the operating system, and all of the programs that are applications softwares that are installed on top of the operating system.
At some point you just have to commit enough effort to try it out and experience the difference, or just be happy with Linux. After all if you're happy with Linux, then BSD's userland is part of the OS isn't a fix for you. But if working with Linux leaves you with this weird itching sensation in your brain that there should be a better way, give BSD a shot.