Every Decision Results in Technical Debt

I'm tired just thinking about it.

In the dark ages of a little more than decade ago, I used to have a physical server in a rack in a colocation facility in Baltimore. (I had access to the rack because a paying client didn't need the whole thing, but they needed just slightly more than half a rack so a whole rack was what we had.) I started out with a Compaq DL360 that I'd bought on eBay that turned out to have a LOM board that was worth more than I'd paid for the server, and even though we had Fedora on all the client servers I wanted to see what Debian was all about so I put that on my own server1.

One day that DL360 just decided to lock up. I think the disk controller was failing, because I could get it to boot and run for a bit, but the console would be full of errors, and eventually it would lock up again. In a hurry, and thinking that standardizing on an OS I actually ran at home might be useful, I bought a Mac mini Server. It ran Apache! It ran a Calendar server that worked with all my Apple devices (-1 for technical debt)! I could get Postfix to run on it (+1 for technical debt)!

Eventually I brought that server home and got a VPS3 for the stuff I couldn't just let Apple host for me. Once again I opted for Debian, but then systemd happened.

I didn't follow Linux kernel development then, and I still don't now. From where I sat systemd mostly seemed like a problem I didn't want to have, and when I looked into it to see if I was going to have to learn use it anyway, the rollout seemed so badly handled that it put me off Linux, seemingly for good4.

I already used pfSense5 at home so I wasn't entirely unfamiliar with FreeBSD, and Digital Ocean could deploy FreeBSD to a new droplet automatically, so when Debian started using systemd by default I made the switch.

Switching from Linux to FreeBSD6 meant learning another new package manager, different command line options, different standards for partition layout, different syntax for rc scripts, and however many other paper cuts I've forgotten or blocked out. I switched from Debian, but unless you've been using a Linux that tries to be BSD-like, these tripping hazards will be common across the board. It also meant that I needed to relearn when I actually needed to compile something rather than run it from packages7.

But oh, compiling things from source. You want to talk about debt? Because this is some debt, and it's made worse by not using Linux. Wanna use clang instead of gcc? More debt! Is the documentation up to date? More debt!8.

I like FreeBSD, but using it instead of Linux (and especially instead of something like Docker) is a choice that carries a bunch of other work along with it. Could I switch back to Linux? Probably. Would my distaste for how systemd happened matter in the end? Practically speaking, probably not. For now, I'm OK with my own choices. That won't stop me from complaining when I run into somebody else's debt because they haven't tested compilation on anything but Linux, or because they made a critical change without also changing the documentation to reflect it.


  1. This was a habit. My first Linux distro was RedHat 42, installed when that meant ordering CDs in the mail, although RedHat 5 was the first one I spent any serious time in. Eventually I got annoyed at RedHat and switched to S.u.S.E., including the time I installed it on a Sun Ultra 5 at work, to the chagrin of all the sysadmins I worked with. (I gave Solaris a shot for like two weeks, but I could waste time getting over everything that was unfamiliar about it, or I could install the thing I didn't have to fight with and just do my job). When I have the time and the wherewithal to deal with experimentation, I can sometimes find out that a switch is worth it. But sometimes I have neither the time nor the wherewithal.

  2. That RedHat 4 CD is the main reason I use vi and not emacs. When I was selecting which configuration to install the “developer” configuration that included emacs was larger than the amount of disk space I had free. I don't really get into fights with people about which text editor is best, but I do always remember that in 1997 emacs already included too much stuff to fit on what I thought was a reasonably sized test partition.

  3. That VPS was at Digital Ocean because their pricing was good, the options were many, and their documentation was extensive, so it solved a lot of the “wait, how do I do this here?” that happens whenever you land on a new platform. They may not be the best choice anymore, but moving to another provider would be more work than I care to do.

  4. If you feel like you need to read up, systemd has been covered, and argued about, endlessly. For me it was a combination of not feeling completely on board with the idea in the first place, not trusting some of the specific choices, and really not trusting the people who made those choices and behaved the way they did when dealing with people who disagreed.

  5. Turns out that pfSense and its owner have a history of bad behavior so I don't run pfSense anymore. Coincidentally, when I migrated to OPNsense I also got IPv6 working at home where it never had before, but I think this was less about the capabilities of the software and more that I was reading enough documentation that I spotted how to fix it.

  6. I don't love what we learned about FreeBSD's release management from that WireGuard fiasco, and if I were migrating again I might move to NetBSD, but this post is about technical debt and at some point I have to stop adding more of it.

  7. Packages are just somebody else's technical debt instead of your own.

  8. In fairness, WriteFreely did turn out to have a current package. I hadn't thought to check for it. The documentation is still outdated, though.