Pröper Gander

I Want My BSD!

Look at them hackers,
that's the way you do it
A used Thinkpad runnin' BSD
They ain't playin',
that's the way you do it
Software for nothing
and the code is free...

I'm a novelist you probably haven't read, I code for a living (using mainly Microsoft tech, for my sins), and I've been running OpenBSD on my personal computers since 2017. If you're familiar with the various BSD operating systems you might raise an eyebrow at my choice, since OpenBSD is the preferred OS of security-conscious system administrators.

One would think that it isn't an OS for long-haired metalheads who write crappy sf on their lunch breaks. Nevertheless, it's the OS with which I'm most comfortable. Nor is it my first Unix. My first Unix, if you're willing to count experience gained in a college computer lab, was SunOS 3.x on a SPARCstation.

Exposure to Unix while learning C was a revelation, and while I never became a systems programmer, I got familiar enough with Unix that I soon chafed against the limitations of the PC DOS that came with my first PC (a secondhand IBM PS Value/Point) and the various incarnations of Windows with which I had to cope at school and later at work.

Once I had left school and gotten a job as a software developer, I built a new computer and ran a variety of Unix systems at home. Before I finally got around to trying OpenBSD on a secondhand Lenovo Thinkpad, I ran FreeBSD for a while, used Intel Macbooks, and did entirely too much distro-hopping.

If I learned anything, it was the following:

  • GNU/Linux is mainly for people who dislike Microsoft and corporate
    Unix.
  • GNU/Linux + systemd is mainly for people who loathe Microsoft but
    miss Windows.
  • OSX is for people who dislike Windows and are OK with throwing money
    at problems.
  • The BSDs are for people who actually like Unix.
  • I'm not hardcore enough for Plan 9, and that's probably OK.

For a while I thought I was just somebody who loathed Microsoft. For a while, I was somebody who loathed Windows and preferred to throw money at problems to avoid spending time. It was only recently that I remembered how much I had actually enjoyed having access to an Unix system in college, and that memory came to me the first time I installed OpenBSD.

I was lucky; I had picked a laptop that had good hardware compatibility for little other reason than that I liked typing on it and that I could get a refurbished model for less than $300. Thus it was easy to just plug in a network cable so my Thinkpad could pull packages from the network and just follow the instructions on every step of the boot screen. The only point I lingered over was partitioning, since I wanted to use all of my drive's space instead of settling for the defaults and growing disklabel partitions later.

I had ``Money for Nothing'' by Dire Straits on the stereo while the installer carried out my instructions, and found myself singing along in anticipation...

I want my...
I want my...
I want my BSD...

Once it was done I logged in as root, read the afterboot(8) man page, set up doas.conf(5) so I could do admin stuff without logging in as root, and started breaking in my new system. The first thing that struck me was the breadth of documentation provided by OpenBSD man pages. The dev team does not do a half-assed job of documenting the system. If it’s in base, it’s got a man page, and that man page is comprehensive. Even config files have man pages (in section 5). I’ve never seen a GNU/Linux distribution as thoroughly documented as OpenBSD.

The next big surprise was the sheer generosity of the software included with the base system when you install every set.

Need a text editor? Take your pick from vi(1), mg(1) (an Emacs clone), or the venerable standard Unix editor ed(1).

Need simple version control for personal projects? Why not rcs(1)?

Want a graphical session? Just enable xenodm(1) in rc.conf.local(5) ; Xenocara (OpenBSD’s custom X.org build) even comes with three window managers: twm(1), fvwm(1), and cwm(1).

Want to run simple websites or send email? httpd(8) and smtpd(5) are there.

Need a software firewall? pf(4) is there and running by default.

Hell, if you’re old-school enough to still prefer music on CDs and have your computer hooked up to a good pair of speakers, try cdio(1).

Naturally, OpenBSD comes with the classic BSD games collection, with all your old favorites.

Like text adventures? Try adventure(6).

Fancy a dungeon crawl? hack(6) away.

Enjoy simulations? Try atc(6) for a taste of an air traffic controller’s duties (union-busting not necessarily included).

We’ve even got tetris(6).

There’s plenty you can do with the base system and its included tools and utilities. If the included public-domain Korn shell (ksh(1)) isn’t your cup of tea, you can always install bash, zsh, or fish using the package manager. Need a web browser? Pick a package. Need to do graphics editing? There’s a package for that. Musician or moviemaker? We’ve got packages for you. Setting up a industrial-strength home office PC? We’ve got LibreOffice, graphical email clients, and everything else you need. Want to typeset your own documents? TeX Live and groff are in the packages collection, and so are GNU Emacs, vim, and neovim if the editors in base aren’t fancy enough for you. If you’re a developer working with languages not supported by the dev tools provided in base, or you’re using a more recent SCM than cvs(1), then the package manager is your friend.

If you want something that isn’t provided by the OpenBSD base system, chances are there’s a package or a port available. If you want to build another machine and install the same packages that you have on the first, you can dump a list of installed packages to a file. If you want to remove all of your installed packages and start over with a clean base system, you can do that without reinstalling the entire OS.

However, it’s not the documentation, the robust and capable base system, or the package management that sold me on OpenBSD. It’s the fact that OpenBSD wasn’t made for me. The developers made it for themselves, and it just happens to be available if I want it and am willing to put in the time and effort to make it work for me. This isn’t to say that the community surrounding OpenBSD is rude or standoffish. I’ve found other BSD fans on social media friendly and patient–as long as you treat them like adults and act like an adult yourself. They’ll even help if you make it clear that you’ve tried to solve your problems on your own.

However, I don’t think you’ll see the core development team worrying about how make OpenBSD more appealing to the general public. It suits me because the system doesn’t cater to my ignorance or try to anticipate my requirements. It’s a rock-solid general-purpose toolkit, and what I do with it is entirely up to me.

Admittedly, my life as a writer would probably be easier if I were content to run Windows or use a Mac like the vast majority of authors, but I can’t help it. I want my BSD! It’s not like Unix hasn’t leaked into my writing. For example, in my novel Silent Clarion the computer controlling an orbital weapons platform codenamed GUNGNIR is powered by OpenBSD, and its protagonist runs into a bit of trouble because she’s familiar with POSIX shells, but not Multics.

Rather than take the easy way out, I run OpenBSD on a Thinkpad T430s, a Thinkcentre M92P, and an Apple iMac G4 because I can. I do it because Unix is fun to run on secondhand hardware, and because I don’t think it’s a coincidence that both Unix and heavy metal date back to 1969.

Update for March 2020 #

While I remain a BSD fan and continue to admire the efforts of the OpenBSD development team, I've switched to Slackware GNU/Linux on my more modern machines so that I can contribute to the fight against COVID-19 by running BOINC and contribute to distributed computing projects like Rosetta@Home. However, my G4 iMac still runs OpenBSD 6.6 (because it's metal).