1. Is it actually that bad for a desktop?
2. Is it actually that bad for a server?
3. If yes to either, how suitable are the alternatives (e.g. Gentoo, Slack, or BSD)?
1. Is it actually that bad for a desktop?
2. Is it actually that bad for a server?
3. If yes to either, how suitable are the alternatives (e.g. Gentoo, Slack, or BSD)?
As a desktop user, systemd has been a godsend. Now everything works the same on every distro. No more checking the website of each distribution to know where to put stuff if you want them to run on boot.
I also migrated everything in my computers to systemd-networkd and systemd-resolved and systemd-timesyncd and it is just so fast and always work reliably (again, for a desktop usage).
journalctl is fantastic: now every single line of log has the same format that every other, and you can filter exactly which service outputted which log line at which time. VS the old way where you would always have that rebel service that logged stuff in whatever format that would always break the grep command you'd be trying to write.
But here are my systemd observations:
- log files now are binary and accessed by `journalctl` - it's a bit less convenient than looking for text files in `/var/log`
- unit files are a miracle. For the 7 or so years before systemd, I wrote one unportable init script, and I hated it. Now I churn them out whenver I feel like it - they are standardized and the docs are incredible.
Apart from that, nothing really changed from my POV, and I use systemd on desktop as well as in small servers.
I find it more practical to be able to filter logs in any way I want (get everything that concerns this device or this service or this user) rather than in a single way.
Yes, there are other systems that do all these things, but having this actually be implemented out-of-the-box is one of the amazing things too.
(Note that this is different from saying that systemd is flawless code or that I agree with the systemd maintainers' approach to everything. I do actually have a good number of disagreements. But they've made a working system that solves real problems.)
If it was that bad for the average consumer, the major mainline distros wouldn't have all adopted them.
It was my understanding that the major mainline distros adopted it because Red Hat coerced Gnome into adopting it, and everyone feels the need to support Gnome.
And major distros all had long discussions and debates on public mailing lists where the details of why they adopted it is discussed.
One thing I've seen systemd newbies do that I have to shake my head at is "journalctl | grep sshd" and that's entirely the wrong way to do it.
$ time journalctl -r | head -n 50
(...)
journalctl -r 0,01s user 0,04s system 0% cpu 5,289 total
head -n 50 0,00s user 0,00s system 0% cpu 5,287 total
If your lifestyle involves embracing the capitalist consumption treadmill of buying new hardware every couple of years, systemd-journald may be for you. Otherwise prepare to be told to throw away perfectly good computer hardware because Lennart is too lazy to design software that can cope gracefully with disk latency."journalctl -r -n 50" takes 5.4 seconds as of a test just now from (this time, artificially) cold cache.
2) No, on a server, I prefer systemd. I write just a small handful of units for services, and it's so so so much simpler to do basic stuff with systemd than trying to put together init scripts to do the same.
My use cases don't depend on a long history of legacy stuff to support, so for me, systemd is simply a win, full stop.
I for one appreciated the opinion, because it answered my question.