Dec 10, 2018

Steve's Operating System, or How I Learned to Stop Worrying and Love Linux

I don't like using OSX, and I definitely don't like using Windows. I find them bloated and full of things I don't want or need. The obligatory graphical interfaces are needlessly complex and full of visual clutter, bristling with sleek animations and distracting effects. I don't want to be entertained by my operating system. I just want it to manage my applications, processes, and windows. And I want it to do so quietly, unobtrusively, with a minimum of glitz and fuss. Where can a poor developer turn?

A way out

With the exception of a few brief excursions into BSD, I have turned to Linux. Linux is the most widely used "alternative" operating system, so there's plenty of relevant documentation and online discussion. And because the Linux kernel is relied on so heavily for such a variety of devices, it seems to be able to handle most hardware, young and old. I've installed Linux successfully on numerous machines, from aging towers to a brand new laptop, and it's rarely failed me. I've tried many of the popular distributions, including Ubuntu, Xubuntu, Fedora, Mint, Arch, and Debian.

I've also experimented with many desktop environments: Gnome, Cinnamon, XFCE, LXDE, and Mate to name a few. Some of these environments I liked, but let's face it, Linux often doesn't look great, at least not without a lot of fine-tuning. Gnome and Cinnamon are exceptions, but they tend toward the bloated, distracting, environments that I seek to escape.

Ode to an abandoned gem

The distribution that I liked most was called CrunchBang. It was a sleek, minimalistic environment that focused on elegance, style, and performance. It looked great because it kept visual elements to a bare minimum: when you first saw it, you felt disoriented because it lacked the clutter you had always taken for granted. Where was the garish menu? Where was the pop-up dock? Where were the endearing icons? But before long you realized it was just as easy, if not easier, to use than its more traditional cousins. Even "non-technical" members of my family took to it fairly quickly. I thought I had found the perfect system, and that I could stop experimenting and finally settle down and get some work done. But then CrunchBang died. Its developer no longer had any interest in pursuing the project.

Rolling my own

So I continued my search, circling back around to some of the distros I'd tried in previous years, angering family members who complained of a new system every other week. But nothing suited me like CrunchBang, and so I determined to reverse engineer my beloved defunct distro. Doing so would allow me to maintain it myself, and it wouldn't be subject to the usual vicissitudes of fringe Linux distros. It took me a while to figure out what configuration files I needed and where to put them as well as what packages needed to be installed to make the whole thing run.

Eventually, I got there. And I ended up with something that I grew to consider even better than CrunchBang, for my own purposes at least. The environment I had cobbled together had all the parts of CrunchBang that I liked, and none of the parts that I didn't need. It was optimized for me personally and was not intended for anyone else. It was Steve's Operating System (SOS).

Technically what I had assembled and borrowed was a desktop environment, not an operating system, but SDE doesn't have the ring that SOS has, so SOS it was.

Questioning the foundation

Originally I used Debian as the basis for SOS because that is what CrunchBang had used and because Debian is a well-respected, solid system. But there are a couple of things about Debian that I don't like.

The first is the trade-off for stability: stale software. Debian releases about every two years, so if you're staying within the Debian software repository as you're cautioned to do, the software you're using could be up to two years old. For most of the software I use, this doesn't matter much. But for browsers, it does. I was using Firefox's long-term support release for a while, unable to upgrade to Quantum because Debian didn't support Rust, the language used by the new Firefox. As a web developer, this is a big deal. As anyone, in fact, this is a big deal. Compared to the new Firefox, the old Firefox was slow and resource hungry. The fan on my laptop frequently kicked on when I had more than a few tabs open. Using the new Firefox, this almost never happens.

The need for cutting-edge software drove me to experiment with Arch Linux, a "rolling-release" distro that is notoriously difficult to install. I used Arch for a while and liked it quite a bit. After installing it a few times, I felt like a real Linux hero. "You installed Arch?" "Yeah, I installed Arch." Such childish pride was short lived though, as I was soon brought face to face with the other thing I was running from when I ditched Debian: the monolithic systemd. Arch, like the vast majority of Linux distros, has embraced systemd.

This is clearly not the place to launch into a systemd diatribe, and I am not well enough versed in the niceties of systemd to speak eloquently about why I dislike it and want to avoid it. Suffice it to say that systemd seems to me to be too big, too complex, and too invasive. It doesn't solve any problems or fulfill any needs for me.

But given that fact that most Linux distros use systemd, where would I turn? BSD? I tried that, but the user base seemed too small for my comfort level and hardware compatibility is not as thorough as with Linux. Gentoo maybe? I tried that too, but didn't feel like the energy required just to get it running was worth it. I was on the verge of giving up, of accepting systemd as the inevitable fate of all Linux systems.

I went back to Debian. I went back to Arch. I despaired.

But then I found Void.

Into the Void

Void uses "runit" as its init system, eschewing systemd. Void is also a "rolling release," meaning that all software in its repository is at the latest version. There's very little lag time between an upstream release and that release's availability in the Void repo. You're always on the latest Firefox, for example.

Furthermore, Void is driven by a philosophy of elegance and minimalism. This is perfect for SOS, which uses only a modest number of software packages and shuns unnecessary complexity. Perhaps because of such minimalism on the part of both Void and SOS, I have yet to experience any of the problems one might expect from a cutting-edge distro. Not even one. Void has been perfectly stable and flawless.

After years of distro hopping, I think I've finally found the one.

A schematic

There's not that much to SOS, and it is a common recipe. Its key components are Openbox (a window manager), Tint2 (a taskbar), Urxvt (a terminal), tmux (a terminal multiplexer), Vim, and of course Firefox. I do most of my work in a terminal or a browser, so there's not much else I need. I don't even use a file manager anymore because I can do all of that in a terminal.

I do have a few other pieces of handy software installed though: Gimp, Inkscape, Music on Console, Pidgin, and Feh (an image viewer) to name a few. I try to keep things as lightweight as possible, but I don't obsess over it (anymore).

In terms of appearance, I think SOS looks great because there is so little to it, and what there is is serene and subtle. SOS looks pretty much like CrunchBang, the distro that taught me that you can roll your own, and that what you make can meet your needs better than anything else out there.