I installed Gentoo: the anti-systemd saga
I fell into the meme.
I installed Gentoo. Why? 'Cause I can. 'Cause it's pretty fun, actually. 'Cause the community's great. There's a level of consideration that the small, yet passionate Gentoo community has for newcomers. The wiki uses clear language that makes sense to any Linux sysadmin that may not have deep, ingrained experience with the distribution. Setting things up was not a huge deal and took me an hour or so.
I've been driven to try alternative approaches to Linux that I think aim closer to a "keep it simple, stupid!" mindset. This is why I've recently gotten big on Alpine Linux, a distribution that focuses on being really small, lowering its attack surface and allowing the user to really comprehend all its moving parts. I like Alpine because it uses OpenRC and is transitioning soon to the more modern s6 init system eventually.
No, Gentoo is not meaningfully "faster" than binary distros. Sure, a minimal Gentoo installation might run faster than a fully-featured Debian, but if you strip down Debian to only what you absolutely need it'll be just as light. We're past the ancient era of CPU optimizations allowing users to squeeze out tons of extra performance.
Systemd isn't bad
I want to clarify that I have nothing against the systemd project. They offer a useful tool for system administration at scale. However, I feel as if systemd and similar tools lean into Microsoft-esque black box style tooling. I don't have the fine-grained control I'd like or the comprehensive understanding of how every systemd unit on my system works. Other init systems are more hackable, transparent, and simpler for desktops, simple virtual machines, containers, and various other stuff at home.
Additionally, I can just install systemd in the future. There's a profile and everything.
What other choices are there?
I don't need or want to throw Alpine on my desktops because it's just too limited. I don't want to run a distro with musl because of sotware incompatibility. Musl-based distributions don't even support Nvidia. So, looking through the no-systemd options online, I saw a couple:
- Protest distros like Devuan and Artix
- Boomer distros like Slackware
- Gentoo and Void
- BSD
I can't speak for Artix, but Devuan has some very questionable code quality. As a whole, they seem to be a pretty small community that I don't really trust to implement an init system in a robust way. I'd rather not use a distro where the selling point is "Arch/Debian without systemd".
Slackware has its place but I'm not interested in outright dated design conventions. Slack is driven entirely by shell scripts and hasn't really moved past the sysvinit-era philosophy. Maybe that works for you, but I think I'm good.
Void Linux is actually quite cool. I'm not sure how well maintained it is, but I'm actually super interested in giving that a shot in the future. Unfortunately, when attempting to run it for a little while, the installer repeatedly crashed and failed at multiple points. Maybe I'm just doing something stupid, but I've never experienced a distro with an issue like that.
I have gone on record not being a huge fan of how the BSD operating systems are managed. Their communities are notoriously stubborn and elitist and I do not agree with permissive open source licenses. Copyleft licenses are a more sustainable way to encourage open contribution and culture. There's a difference between being a slow adopter of new technology and straight-up refusing to embrace the future, and I feel like FreeBSD falls into that camp. OpenBSD is very secure, but this means nothing to me when their OS is so crippled and incapable of doing anything more meaningful than home router or modest firewall.
BSDs do make a lot of great decisions. Clearly defined locations for files to go. Clean codebase. Minimal fragmentation. But it's hurt by their refusal to embrace modern technology and their limp-ass permissive licenses.
So, that leaves Gentoo. But you have to compile everything on Gentoo! It seems like too much configuration!
That's what I thought, but it's just really fun and refreshing to have this level of control on Linux systems. You take for granted the ability to quickly whip up builds of software Gentoo isn't easily distributing. It feels BSD-like, but more powerful and better engineered than their solutions.
Portage
Portage is Gentoo's package manager. It's written in simple bash and python tools, to my knowledge. It's, in my opinion, the BEST package manager I've ever used. The only one that gets close is DNF/Yum/RPM, because of the pleasant quality of life tooling around it. As opposed to Alpine's very limited and simple package manager, Portage allows me to exert absurd amounts of control over what actually makes it onto my system and what doesn't.
I don't like X11 and try to avoid using it. I'm all-in on Wayland. But too much software forces you to use it! A lot of applications will default to an X11 session and run under XWayland. Well, if I define the right USE flags in make.conf, I can just say "no" to X as a dependency in most of my packages.
Various individual packages can have their own USE flag policies. Maybe I want to compile this specific tool with AV1 support. Maybe I don't want this one to drag in PulseAudio when I'm using the Pipewire audio system instead. USE flags are the bread and butter of the Gentoo experience and it's absolutely insane how everything seems to just work together and not instantly fall apart with this aggressively elaborate dependency resolution system.
OpenRC
OpenRC is cool. It defaults to serialized services (good) over parallelized launching like on systemd. I view this as correct design as boot time matters less to me than stability. OpenRC has basic dependency management but pales in comparison to systemd's. It works fine for my needs. The services are declarative like systemd, but lean more into being shell scripts in approach. This allows it to integrate nicely with a traditional shell-driven sysvinit style of administration.
OpenRC doesn't allow me to define user services, which is a huge bummer. Currently, what I've had to do instead is utilize the runit init systemon a user basis. Runit is portable, small, and even simpler. I can run it and allow it to supervise very simple, minimal shell script services by just defining them in one location and symlinking them to another. This approach isn't perfect and isn't as seamless as systemd, but there's a certain level of comfort I find in both init systems ultimately being easier to wrap my head around as a whole compared to systemd.
Isn't it a pain?
I don't recommend Gentoo to everyone. I'm a specific kind of user that knows exactly what I want out of Linux and how to get it. But, if you have a weekend or two, might as well give it a shot. Worst case scenario, you've learned a little about how Linux works.