Farewells to personal OpenBSD
it was a great ride, and I hope to come back in the future.
I've been daily driving OpenBSD on my laptop for 3 years, and I don't think I've ever felt so attached to an operating system (I'm so normal about computers). I agree with most design decisions that the devs chose. The most important parts of the OS are designed really well, and I don't think I've ever had a problem with the base functionality. Here, I'll write about some problems that unfortunately led to my decision.
Speed
I don't have a fast computer. My OpenBSD laptop was a Thinkpad x260, so not a really old thing, but not the newest piece of technology too. It's a great choice, as all of the hardware is old enough to be fully supported by the OS, but the oldness comes with a downside. OpenBSD seems to be slower than Linux distributions. Sometimes noticeably. I don't have any data to back that up, it's purely feel based. One is encouraged to admire every computation done by the hardware, as every clock cycle is noticeable. This is, of course, hyperbole.
Compatibility (software)
Some software just doesn't work. Here's a non-exhaustive list of software I had to fight.
Spotify — solution: patch
spotifydto compile and run correctly, usespotify-tuifor the client instead. I don't think I've ever shared my patches, and I think OpenBSD now has a streamlined port in the package repos thanks to kn@ (I believe). There also seems to be aspotify-qtport in the repo for GUI aficionados. There's alsoncspot, but I recall having some troubles with it.Discord — solution: run web client in firefox. Don't try sharing desktop, as it crashes firefox. I think it's not an issue in chromium, but I don't use chromium.
Steam — no solution. Well, I've managed to tunnel it from an alpine vm (via
vmd), but it was running at the constant speed of around 2 SPF (seconds per frame), so I wouldn't accept that as success.Minecraft — Oh dear. (State as of ~2023)
minecraftfrom the repos does not work,multimccannot authenticate to Microsoft accounts.- solution 1: I have a shell
script that uses
portablemcto authenticate and download versions, and some ungodly java invocations to run it. - solution 2: I've been informed lately that prism launcher has been ported and is really good at launching the game, so this shouldn't be an issue anymore. I haven't tried it yet, but it has compilation instructions for current OpenBSD on its website.
- solution 1: I have a shell
script that uses
Make. BSD Make is the default. I really like BSD Make, and I use it for personal projects even on Linux. The Linux-oriented world seems to not realize that GNU Make is not the only one. The Linux-oriented world seems to not know about the
MAKEvariable inside of makefiles. The Linux-oriented world also tends to invoke Make recursively. Dear Linux-oriented world, please use$(MAKE)instead ofmake. The Linux-oriented world seems to not know aboutcc, which is usually symlinked to the default c compiler. Dear Linux oriented world, not everyone hasgccnamedgccon their os. Dear Linux-oriented world. Please don't callgccdirectly in a makefile. If you need to use it, declare it in a variable. Also name itCC, so common sense can be used to compile your software. Thank you. solution:s/\t+make/gmake/g+ some emacsing. also some yelling at maintainers.Autohell. This probably just works as intended.
Perl, the fifth. This is a scary one. If I'm sloppy about my perl installation, it's easy to Bork everything. Every minor version upgrade i get this error, which is fine. What is not fine, that the package manager is written in perl, and when perl is Borked, package manager is Borked. Do you see the issue now? Also, pkg_add did once ran out of memory while upgrading Everything on a small server. Also, pkg_add did once fail miserably to
-upgrade all of my packages — no matter how many times i restarted it, it couldn't resolve dependencies.GDB in Emacs just seems to die, sometimes.
Firefox. It's a great port. It works, mostly, though it does sometimes die & dump core all over my
/homefor some reason.No binary compatibility between minor OS versions.
Compatibility (hardware)
This is a non-exhaustive list of hardware i had to fight to get to work.
Bluetooth. Solution: none.
A drawing tablet. I own a cheap
huiondrawing tablet. It requires hexes to work on OpenBSD, please let this irc conversation speak for itself. I did try "real solutions" before discovering that. Nothing worked outside of magic.
21:25 < krzysckh> the only way i found to make my huion drawing tablet to work on openbsd is the following:
21:27 < krzysckh> 1. connect it; 2. restart X; (now it maps half of the tablet to the full screen); 3. run ZZZ in the shell to enter deep sleep mode; 4. wake up computer from deep sleep mode
21:27 < krzysckh> after all these steps my tablet works correctly
21:29 < pragprog> that sounds.... cumbersome
21:30 < krzysckh> i only discovered this by accident
21:30 < krzysckh> i hoped this would be a "fuck i need to edit xorg.conf" problem
21:30 < krzysckh> but nope
21:31 < krzysckh> then i hoped this would be a "fuck i need to edit the coordinate transformation matrix of the device" problem
21:31 < krzysckh> also nope
21:31 < krzysckh> magic was the answer
- Any thumb drive. They work. Pcmanfm will not mount it for you. This is fine, just different than Linux.
$ sysctl hw.disknames
hw.disknames=sd0:42f84245ea57645c,sd1:57f5462fb8fc54be,sd2:
$ doas disklabel sd2
[blah blah, use `i` for MSDOS]
$ doas mount /dev/sd2i /mnt- My wireless network driver. This is a weird one. It worked until
7.7. Now
iwm"fails to load driver" after waking up from sleep. This means that I have to restart my laptop for wireless, or usemachdep.lidaction=0, which drains battery fast.
What I'll miss
Enough rambling. This is a non-exhaustive list of what I will miss. I'll skip everything I'll still be using on my servers (httpd, relayd, pf, ... — I love them all).
vmd. It just works good enough. It can run alpine, it can run openbsd, it can run 9front. This is enough for me. Configuration is dead simple.sndio. It works. I didn't need to do any configuration for my sound buttons to work.sndioctl -mis great. C API is simple.x11works better than on my Linux machine.- Peace of mind. Stillness of knowing that everything will be fine.
Waiting one quintillion years for
ls -lato finish writing out 3 files in pwd. You know, there's some beauty to it.
Well, simplicity in general. I really like how the system works on its own. It cannot bear too many moving parts, but alone, it's a beast.
epilogue
As mentioned before, I'll keep using OpenBSD to run my servers, because i think there's no better OS for server use. I'll also try to keep software I write working on it.
It was a great ride. Thank you.