Why BSDs?
Every week or two, a post seems to pop up on one of the BSD-related sub-reddits where I hang out (FreeBSD, OpenBSD, NetBSD, & BSD) asking why folks would choose a BSD over a Linux distribution. Having answered the same question multiple times, I figured the time had come to post my "why" here.
Skip the history and jump to the push/pullEarly Unix experiences (1987–1994)
I'd grown up on Apple DOS 3.3 & ProDOS, then moved to MS-DOS 4.x and following. But then I had taste of Unix via our local college's dial-in shell servers and Unix labs. Using a Unix command-line felt similar, but as if crafted with design and intent. Pieces played together nicely. Programs multitasked in ways that made sense (and I could never do on DOS). Countless late nights via 1200 baud dial-up. I became hooked.
Initial installation & exploration (1995–1996 school year)
After downloading umpty-gazillion 3½" floppies and schlepping them back to my dorm, an older CompSci classmate helped me install Slackware on my computer. That powerhouse 486DX/100 with 32MB of RAM and two 512MB hard-drives (a whole GIGABYTE, baby!). To this day, I still have a dislike of Emacs that might stem from the E-series Slackware floppies getting corrupted, driving me back to the lab to download and write fresh disks just so Emacs would install.
Meanwhile, my favorite campus computer lab held networked DEC Ultrix workstations running X at mind-blowing resolutions and color-depth compared to the 800x600 SVGA graphics on my personal computer. A real Unix.
While I enjoyed having Slackware,
the lack of internet access in the dorm room
made it a challenge to make productive use of it.
DOS (with Windows 3.1 on demand) at least
let me write papers in WordPerfect 5.1
and take the files to labs to print them out.
But then I discovered HTML.
It felt like WordPerfect's
Reveal Codes
functionality,
letting me clearly see what my document contained under the hood.
No hidden stray markup,
causing images to misalign
or change the spacing
or bold/italicize/underline the wrong thing.
I could also write it in a normal text editor,
whether on DOS,
in Windows,
or in my Slackware install
(modulo line-ending concerns),
letting it become more useful.
In addition to those benefits,
while the computer labs charged
$0.07 per page to print,
I discovered that the college library
let me print "web resources"
for free.
Guess who could point the web-browser
at his paper on the floppy drive,
open it as a "web resource"
and print it for free?
College experimentation
As college progressed, I tried installing and reinstalling other flavors of Linux. Red Hat 8 ("Psyche") & Mandrake had a great install experience, but RPM had issues that required me to manually install package dependencies. Download the .rpm file, try to install it, discover missing dependencies, download those .rpm files, install, rinse, repeat until things finally installed.
I also tried installing FreeBSD (Walnut Creek CD-ROMs, around version 2.x) in this time-frame. However I failed to figure out the installer. With the benefit of hindsight, I know the primary issue stemmed from "partition" meaning one thing in DOS & Linux, while meaning a different thing in FreeBSD (where "slices" referred to what I knew as MBR "partitions" in DOS, while FreeBSD referred to subdivisions of one of those "slices" as "partitions"). Had I understood the differing terminology at the time, I might have successfully installed FreeBSD.
Post college Linux
Now out of college and married, we ordered a new Gateway Solo 1200 laptop. An 800MHz Celeron processor, 128MB of RAM, and 10GB of disk-space! It came with Windows ME, a horrible OS, but with WinModem drivers that worked where Knoppix and other attempts at Linux refused to get online. Once we had a DSL connection in the apartment, I maxed out the RAM to 320MB, swapped in a 120GB hard-drive, and installed Debian which served us well for many years.
Curious about Apple hardware & operating systems, we picked up an Apple iBook G4, the last of their PPC line, running at 1.3GHz, maxed out with 1.5GB of RAM, and a 30GB hard-drive.
The Mac drove me bonkers.
I imagine that folks exist who think the way Apple does. And I imagine that OSX works fabulously for them. I am not such a person. Without support for new OS versions (PPC support stopped with 10.4 or 10.5), the laptop rapidly became a useless brick, unsafe to use on the open internet.
I found a good deal on some Lenovo laptops at (the now-defunct) Fry's. I installed Debian on mine, and Ubuntu on my sweetheart's. They served us fairly well for years of web-browsing, email, light gaming, remoting into machines at work, and software development for me.
The Push: the slow decline of Linux
However, grey clouds started rolling in. Debian started introducing changes that drifted farther and farther from the Unix I started with, and I did not care for it.
Sound systems churned leading to frustration. I lived through OSS, libao, ESD, aRTS, ALSA, Pulse, Jack, and now Pipewire. Each one promised to fix all the problems of the previous standards. Similarly, I lived through a plurality of firewall tech.
Then programs I'd used for years/decades
began to issue deprecation warnings.
"Don't use
ifconfig
to manage your wireless connection use
iwconfig,
and to manage your bridge devices use
brctl,
except don't use either of those, use
ip
instead.
Fresh installs of most popular distributions lacked
ed(1)
in the base system,
so when things went sideways,
you might not have a
$EDITOR
to rescue your system.
I would open a
man
page to read documentation,
only to find a useless placeholder stub
redirecting me to a GNU
info
page where you had to navigate to different parts to see them,
and you couldn't read the whole thing in one place.
I've since learned to use
info program | less
to force
info
to render the entire document into
less
where I can comfortably read the whole thing.
I'd reach for
netstat
only to hear that I should use
ss
instead.
Or that I should stop using
nslookup
that I'd used for years on *nix and Windows
and instead use
host
or
dig/drill.
EDIT: A
note
from author Michael W. Lucas
informs me that the
developers
of
nslookup
deprecated their own application,
not Linux distro-builders mandating change.
Then came the big ones:
systemd
and the threat of Wayland replacing Xorg.
systemd
broke detaching in tmux
and rudely expected the
tmux
team to fix the problems that
systemd
had caused.
I would issue shutdown/reboot commands
with the power of root
(sudo shutdown -r now)
only to have
systemd
balk and refuse to actually shutdown/reboot,
hanging indefinitely on some process
over which I had no control.
Thank goodness for the ability to hold down the power-button
and kill it properly.
No choice whether I wanted
systemd
vs some other init system.
I could no longer
grep
my log files because
systemd
kept them in binary formats.
Meanwhile, I've heard strong rumblings that Xorg will get supplanted by Wayland in most Linux distributions. My window-manager of preference (fluxbox) does not work in Wayland. Many of the GUI applications that I use do not work in Wayland. I continue to hear that a lot of things don't currently work in Wayland. Maybe it will meet my needs someday, but not any time in the imminent future.
The Pull: the BSDs (2012–)
Meanwhile, amid all those pushes in the Linux world I found myself drawn to features that FreeBSD & OpenBSD offered.
While FreeBSD does offer several firewalls,
those choices include
pf
which quickly became my favorite firewall syntax.
Originating in OpenBSD,
it gives me
one
sensible syntax
to manage my firewalls
on all my machines.
ZFS frees me from getting locked into a particular partition layout,
pooling my available storage and making it available to all datasets.
It checksums my data before writing and after reading
to ensure that my data hasn't bitrotted.
It gives me transparent compression.
I can do instant snapshots of my data.
I can clone datasets and send/receive that data efficiently across to other machines for backup.
Copy-on-write meant that
even if my system experienced abrupt power-loss
the file-system remained consistent
and didn't require a
fsck
upon reboot.
FreeBSD gives me jails which make a lot more sense to me than containerization in Linux-land. As an added benefit, FreeBSD has offered jails far longer (March of 2000) than Linux containers, giving them more time to bake.
Meanwhile, OpenBSD gives me a system that feels good.
Applications and services play well together like
dhcpd
talking to
pf,
unbound,
or
relayd.
And it includes
xenodm/xenocara
with a base install,
and includes three window managers:
fvwm (the default),
twm (old school),
and
cwm (my favorite of the three).
Finally switching from Debian to FreeBSD/OpenBSD (2019)
The final nail in the coffin
came from a Debian upgrade where
systemd
took down my audio subsystem completely
and started having problems booting reliably.
I backed up my data to an external drive along with a list of the major software I use, sent a copy to my VPS, and installed FreeBSD on my daily driver. I copied all my data back, installed the major software on FreeBSD, and went on with life largely as I had before.
I also set up some other junker laptops with OpenBSD, including that now-dead Gateway Solo 1200, and that iBook G4, as well as my writer-deck, a Dell Mini10 netbook. Additionally, my VPS instances run a mix of FreeBSD & OpenBSD.
Epilogue
Is everything perfect? I still experience minor issues, most notably the audio on FreeBSD doesn't automatically cut over between speakers and headphones when I plug/unplug headphones.
But it feels like the Unix I grew up using.
It feels like home.
A few such sample posts: here, here, here, here, here, here, here, here, here, here, here, here, and here.