Troubleshooters.Com®, Linux Library, and T.C Void Linux Subsite Present:
Void Linux: Still Love It After All These Years
Copyright © 2022 by Steve Litt
See the Troubleshooters.Com Bookstore.
Contents:
Time flies when you're having fun. I just noticed I've been using Void Linux for 6.25 years, October 2015 right up until today, February 14, 2022. I plan to use it well into the future. This document details why I like Void Linux more than ever before.
My #1 reason for loving Void is it puts me in the drivers seat. With Void, I boss my computer, my computer doesn't boss me. I can create the workflow I want, safe in the knowledge that an update won't break my workflow.
The respect for my workflow starts with installation. They let me install just the bare bones: not even X. From there, I can install X and XFCE so I have the minimal GUI I like. From there I'll install the usual suspects: Command line and graphical Vim, Chromium and many other browsers, Dovecot, Claws-Mail, Mutt, LyX, Inkscape, a Zen-Coding HTML editor, Python, Ruby, Perl, Lua, C, MUSL, and several more.
What makes life really grand is I can can xbps-query -m on another computer to get a list of all manually installed packages, turn the list into a shell script, and install everything. When I do this, I use comments so that only a few packages get installed each time, for easier debugging if things go wrong.
So in an hour or so I have a computer that does things to my exact wishes. My last step is to add in the workflow-enhancing software I've personally written, and bang, I'm ready to go, without having to wade through a bunch of useless cruft the distro thinks I want.
Void has a lot less magic than most distros. Things that have their own special way of doing in other distros can just be placed in /etc/rc.local. Another thing: Every distro has their own magical way to configure the network, and I don't like any of them. Void has one too, but with Void, I can skip the magic and just configure the network, on boot, using a shell script consisting of ip commands.
Void doesn't care if I chattr +i /etc/resolv.conf so as to make sure no lame "we do it all for you" magical network tool overwrites it. After all, I install the Unbound recursive resolver on all my computers and point /etc/resolv.conf to that, so /etc/resolv.conf never needs changing.
Ever try to boot to the Command Line Interface (CLI) in Ubuntu? Let's just say it's, umm, challenging. With Void, you simply decline to install a display manager, you know, like KDM, LXDM, GDM, LightDM or XDM, and bang, on boot you get a command line. To get the startx command to work, you just add what's needed to the $HOME/.xinitrc shell script.
There are probably twenty other examples I could give, but I can't think of them, probably because the last time I used a "we do it all for you" distro was in 2015.
It could be said that everything described in this section is doable in most other distros. That's true, more or less, but the "we do it all for you" distros throw so much other stuff on there that instead of just building what you want, you need to figure out what to tear down. Believe me when I say this: If you want to control your computer instead of having it control you, Void Linux is by far the most convenient.
Void is Linux for people who like Linux. And POSIX. If you know Linux and POSIX, Void Linux is intuitive.
NOTE:
POSIX standards compliance isn't a goal of the Void Linux project, so it's not completely POSIX compliant. That being said, in my opinion it retains the good parts of POSIX.
Don't get me wrong: There's great value in the distros built to appeal to Windows and Mac users, or are meant to appeal to the non-technical or those who consider their computer an appliance. Unfortunately, the vast majority of distros cater to such people. On the other end, among those distros that are or were about Linux, Gentoo and Funtoo take too long to compile and it's easy to spend hours installing just to have it not boot. Slackware's great except that it has a packaging system that doesn't install package dependencies, which makes for a lot of extra time and effort. And of course, the former close-to-the-metal champion Arch turned against everything POSIX with its enthusiastic and belligerent adoption of systemd. One of the few practical true Linux distros left standing is Void.
I'm a POSIX guy from the bottom of my soul. Although POSIX isn't a Void project goal, I like the parts of POSIX they support.
Some people like systemd, some don't. I despise it, so my first step on any distro would be to get rid of it. Unfortunately, on most systemd distros, that's really difficult due to all the things systemd replaces. Void Linux doesn't have systemd, so I don't even have to try to get rid of systemd. It's gone from the beginning.
Void Linux uses the runit init system. Runit is my favorite because it's so incredibly simple. One thing that makes it simple is that its "init scripts" are between 3 and 10 lines long instead of between 50 and 250 (not including include files) like sysvinit, and to a lesser extent, OpenRC. Another thing that makes it simple is it just makes sense --- it's easy to understand conceptually. Because runit does the work of backgrounding daemons, you can make a daemon as a simple foreground program with an infinite loop, incorporate it with runit, and boom, you've just made your own daemon. No strategically timed doublefork necessary.
If you mention using runit, all sorts of objections are voiced, and as far as I'm concerned they're all either bogus, irrelevant, or minor. The rest of this section names and discusses some of them:
This is true. Runit backgrounds processes in an undefined order. No two boots are the same. This sounds like a problem but it isn't. In the over six years I've used runit, it's not once caused a problem.
The preceding should read "no built in dependency notifications. No big deal though, because it's trivial to implement dependency notification inside a daemon's run script. The run script simply tests whether a daemon on which it depends is doing its job. If not, just have the attempt fail and try again later.
The only downside is that you need to construct the test. Of course, that's also an advantage, because you can test exactly what you need to. Also, daemon authors don't need to use special methods to tell the init system that they're functional. And by the way, what if a daemon wrongly tells the init system it's ready? Oops!
By the way, s6 can also do it with user-forged tests, although s6 has a built in method of readiness informing.
True, but big deal. Unless you have reckless users who just love to kill root-owned processes, this won't be an issue. It hasn't been an issue for me during the last six years.
No longer true! The Void Linux project has officially taken over maintenance with original author Gerrit Pape's blessing.
In summary, runit is incredibly simple and performs incredibly well.
A rolling release is one that never has versions. Instead, as various packages are updated, they're merged into the whole distro. You usually update rolling release distros every couple days.
Some folks love rolling releases, and some folks hate them. Before I met Void, I hated them. Who could blame me --- my experience was on Sabayon, Gentoo, Funtoo, Arch and Manjaro. When I used these, I got tripped up every few days.
And then there's the logical reason to not like rolling releases: What if the upstream software author releases something significantly buggy?
Void's rolling release behavior leads the pack. They test new upstream releases before updating their packages. They work to make sure everything works. And the few times I've had a problem doing an update, a couple well thought out questions to the #voidlinux IRC channel on Libera.Chat brought the support I need, fast.
Now let's talk about the benefits of rolling release. Since I started using Void, I had all the latest software and libraries. I work with software versions some other distros won't declare as "stable" for another year. When self-compiling software, I never had one bomb out because my libraries were too old. If an update fails, it's usually because Void's super-duper automated update maker is in the middle of its work --- a condition I can check by going to https://build.voidlinux.org/waterfall. If it fails for that reason, I wait a few hours. If there's still a problem, a question on #voidlinux usually brings me a prompt and accurate diagnosis and suggestion.
There's always the following tradeoff:
Small software runs quickly, even on poorly endowed hardware. Big software can run slowly on poorly endowed hardware, or quickly on state of the art, expensive hardware. Beyond that, even with spectacular hardware, small software runs quicker. It might be only the difference between 200ms and 5ms, but it's enough to make the human operator feel better. Even a 200ms latency creates some impatience and annoyance.
Void Linux with the Openbox window manager and dmenu software initiation is small software. It's instantaneous on my 6 core, 12 thread AMD Ryzen with 64GB RAM. And the same setup runs adequately with my circa 2010 2 core 2 thread 3GB RAM laptop, always assuming I have only one or two web pages open.
Void Linux is a great distro for both state of the art hardware and ancient stuff you have hanging around to use occasionally.
The preceding section extolled the virtues of "small software" distros like Void Linux. There are even smaller distros, such as Puppy Linux and Tiny Core Linux. The problem with these tiny distros is that very few softwares are packaged for them, so except for the type of user who is satisfied with a browser, and email client and LibreOffice, such distros aren't sufficient.
Last time I looked at Red Hat (actually its free twin CentOS), Red Hat gave very few choices of Window Managers and Desktop Environments (WM/DEs). Void has working, functional packages for all WM/DEs I've ever heard of. I'd say that gives Void the advantage when it comes to providing software that matters.
Who knows, maybe I just couldn't find the other WM/DEs. But if that's the case, I have a beef with their package manager.
I'm sure it comes to no surprise to anyone that Debian derived distros have more software packages than Void. Debian has hundreds of developers and contributors. However, most of the Debian world's extra software is esoteric or arcane, not used by the average person. And a lot of times, Void provides alternative software. And if not, Void's qemu and Virtualbox virtual machines, and their LXC and Docker container hosts run perfectly, so those few unavailable applications can be run on a Debian derived distro --- I recommend Devuan for such purposes.
A lot of distros have great tech support. Void Linux is one of them. Just go to #voidlinux IRC on Libera.Chat and ask your question. Assuming you ask a reasonable question phrased reasonably.
On absolutely any support line, it's vital to ask your questions in a constructive manner. People who don't ask in a constructive manner have a bad support experience on any support facility. Everybody in technology should read the page called How To Ask Questions The Smart Way. Every human who ever interfaces with any kind of tech support should spend a good hour or so reading this document thoroughly. That human will save that amount of time the first time they need an answer.
Of course, we all know of support venues where no matter how you ask the question, there are folks just rubbing their hands in glee waiting to tell the asker how wrong and stupid they are. Well, the #voidlinux IRC channel isn't one of them --- it's one of the best.
There's something to be said for "we do it all for you" Linux distributions. I used Mandrake/Mandriva and then Ubuntu the first few years after transitioning from Windows to Linux. You could sort of fuddle through it in a Windows like manner, which meant I didn't get stuck too often.
Some never transcend the need for a "we do it all for you" distro. Perhaps they have a mental block telling them "I'm not a programmer and I can't edit files or do anything at all on the command line." Perhaps they use their computer only as appliance, so they're not in the mood to do any modifications.
Some want a corporationally correct distro, with somebody to give them paid support, paid training, and somebody to sue if things go wrong. Red Hat's right there for them.
Some prioritize control of their distro over everything else, regardless of the inconveniences. That's where Slackware, Linux From Scratch, Gentoo and Funtoo come in.
And a lot of people are like me. They've learned Linux. They can edit files and feel reasonably comfortable at the command line. They want to install Linux, just Linux. Not Linux with ten tons of "user friendly" layers epoxied onto it. They want a fundamental functioning Linux, after which they'll install the just what they need to maintain the workflow best for them. Such users love Void Linux.
Void Linux is the perfect distribution for those who like Linux and and the Unix Philosophy, especially if they want to boss their computer instead of letting their computer boss them.
Void uses the superior runit init system, much better than systemd, and with big advantages over sysvinit and OpenRC. It's a rolling release, so you always have modern software and never need to endure those hair-raising version upgrades. And unlike some rolling releases, Void's update system rarely causes problems. Configured and provisioned properly, Void runs well on resource starved computers and is super snappy on state of the art hardware. It bestows abundant software packages, and Void tech support is excellent, quick, friendly and accurate.
For people who like simplicity, efficiency and ability to be the boss of their computers, Void Linux is spectacular.
[ Training | Troubleshooters.Com | Email Steve Litt ]