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/pull
Early 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.