Hacker News new | ask | show | jobs
by starklevnertz 1639 days ago
I just want to pre-empt the inevitable bitching about systemd to say I think it’s awesome and incredibly useful and consistent and powerful and I’d take it any day over the mess of stuff that filled systemd’s duties before.

Sure it isn’t perfect, but what software is?

And let me ask a question, if systemd is crap, why does every major distro use it? If it was truly crap then surely the distro builders would use the alternative?

4 comments

> And let me ask a question, if systemd is crap, why does every major distro use it? If it was truly crap then surely the distro builders would use the alternative?

Because it's tightly coupled to everything (particularly to the few profitable parts of linux - most open-source is maintained on a shoestring, so it's pretty cheap to take control over development of even vital low-level infrastructure). This is how systemd bypassed the bikeshedding problem of there being half a dozen replacement inits but no clear consensus, with the result that everything relied on a lowest common denominator. But it's toxic for the long term, because it undermines the whole point of using linux if you can't swap out pieces or maintain your own forks of individual components.

> But it's toxic for the long term, because it undermines the whole point of using linux if you can't swap out pieces or maintain your own forks of individual components.

You can, though? And many distros do by default.

Don’t like systemd-boot? You can replace it with grub.

Don’t like systemd-networkd? You can replace it with networkctl. Want to use it but prefer to handle Wireguard tunnels with wg-quick? Fine!

Don’t like systemd-resolved? You can replace it with dnsmasq.

Don’t like systemd-cryptsetup? systemd won’t care if some other system takes care of your LUKS partitions.

Etc, etc.

That’s a short list of other packages (none of which I think are part of a base Linux install, correct me if I’m wrong) that have decided to depend on systemd?
Where's the "hard dependency on libc" list? Or "hard dependency on Bash"?

It's ridiculous to imagine that no program is allowed to depend on SystemD.

> Where's the "hard dependency on libc" list?

There are multiple libc implementations. libc independence is important and valuable. You'll probably find a "hard dependency on glibc" list in the documentation of e.g. Alpine.

> Or "hard dependency on Bash"?

Ubuntu will have a list from when they switched to ash as /bin/sh. Again, multiple implementations and independence are important, and something the linux community generally cares about.

> There are multiple libc implementations

You could make another SystemD implementation if you really wanted. The point is that there are plenty of APIs - even ones with a single implementation - that nobody bats an eye about programs having a "hard dependency" on, but suddenly for SystemD it's apparently a big issue?

It's bullshit technical excuses to hide the real reasons people object to SystemD, which are more embarrassing.

But no systemd distro is saying “we want to dump systemd but we can’t because it’s too tightly Coupled” are they?

Or maybe the maintainers are I don’t know do you have links to show this is the case?

Systemd is used by all major linux flavors because it’s the best solution for the problems it solves.

The distro maintainers are too smart to be stuck with systemd against their will.

And it’s linux …. make a better solution, if it’s truly better it’ll be used.

That's a bit of revisionist history.

Systemd was minority pretty much till GNOME 3.8 introduced super-hard dependencies on it through an interface that was supposedly documented (Ubuntu sunk a bunch of money trying to keep alternative implementation running).

For many a distro, it became a question - "do we include GNOME, or do we drop it?" and that was impetus to move to systemd

This is simply not true[0]. To quote:

> This is really unfortunate, but GNOME 3.8 does not require logind. I discussed the non-dependency of logind+systemd on #gentoo-desktop and why they thought different. Apparently GDM 3.8 assumes that an init system will also clean up any processes it started. This is what systemd does, but OpenRC didn’t support that.

Systemd was adopted because it was (and still is) simply superior in many aspects to previously available process managers, because application developers had it up to here to maintain n different init scripts for n different distributions and distribution packagers didn't want to have to write custom init scripts for each application anymore.

As an example, check out the discussion around the adoption of systemd in Debian[1].

[0] https://blogs.gnome.org/ovitters/2013/09/25/gnome-and-logind...

[1] https://www.debian.org/vote/2019/vote_002

It might be because people did report on in trying to run GNOME 3.8 without logind, and reported massive faults?

And no, not in "GDM doesn't clean up after itself", which was given as explanation for the infamous "systemd now defaults to destroying everything in a session on logout" change few years later. (Which GDM could require anyway earlier, but apparently somehow it wasn't enough)

There is a lot of good ideas that went into systemd though, and I'd agree that a lot of anger is in how badly they are implemented (the only reason I do not complain more about systemctl is because upstart managed to be even worse). In my copious free time, I've been tinkering at alternative, but even if I disagree at the format of systemd service files, it includes a parser for them.

> It might be because people did report on in trying to run GNOME 3.8 without logind, and reported massive faults?

If you by 'it' mean the fact that the distributions switched to systemd, I would be declined to discount the speculation that 'it was because people did report in trying to run GNOME 3.8 without logind [...]'. Do you honestly think that Fedora, Arch or any of the other distributions would not try to evaluate other strategies of getting GNOME 3.8 to run? Replacing the process manager and PID0 is not an endeavor chosen lightly - it is a massive undertaking that every distribution would have weight very carefully. "Oh, there are people having trouble running GNOME 3.8 without systemd present" seems not to be enough reason to go through all the pain of switching to systemd.

It's rather that systemd offered something that systemd offered something that the preceding mess of shell scripts and conventions didn't offer; consistency and reliability, as much as you might doubt that. Have a look at the Debian general resolution with regards to systemd and the provided arguments by the proponents[0].

> I've been tinkering at alternative

I would be very glad if your alternative implementation were even modestly successful. And I'd be thoroughly thankful if it managed to replace systemd.

Not because I think systemd is badly implemented (I've yet to see any actual evidence in that regard from any detractor) but because systemd needs competition and I would prefer to see some well established and stable protocols between the individual parts of systemd. That will only happen if said protocols get also provided by alternative implementations.

With regards to you re-using the systemd configuration format; that's probably a smart move. Systemd is at this point a well established fact and anyone trying to best it at its game will have to make is as easy to migrate as possible. Hurdles like a new file format might well be too much for an indifferent user.

[0] https://www.debian.org/vote/2019/vote_002

Why was it chosen by debian multiple times with the most democratic process out there?
It was forced through by breaking the rules of the process and overruling the committee that should have made that decision. Many old-school Debian maintainers quit in disgust at that point, so if subsequent votes have been in systemd's favour then that's probably why.
Some source would be interesting, because it is just blind words otherwise. Also, Arch and several other distros made the choice independently. I am fairly sure Red Hat is not some evil entity kidnapping the families of maintainers making them switch to systemd..
No rules were broken.[0]

[0] https://www.debian.org/vote/2019/vote_002

> And let me ask a question, if systemd is crap, why does every major distro use it?

If Big Mac is a crappy food, why billions are served with it?

Or maybe you should questions yourself as to why you are so angry about what others like
If others enjoy eating garbage, does that obligate me to like it, too?
Yes, pretty much so. If there is a dish everybody likes but you say it is "garbage" then you are just wrong and an arrogant snob.
A 'Big Mac' is objectively not nutritious, and cheap meat though.

I like systemd.

Then say that instead of "garbage".
> And let me ask a question, if systemd is crap, why does every major distro use it? If it was truly crap then surely the distro builders would use the alternative?

If Windows is crap, why does every system builder ship the majority of their machines with it? Why bother with a different desktop than Windows? Just because it's popular doesn't mean it's good.

Building a distro is a lot of work already, and avoiding systemd takes a lot of effort these days. Plus, there seems to be a lot of people who like systemd, so if you want curmudgeons like me (well, probably not me, I'm going to FreeBSD instead; I understand there may be some sort of fancy rc replacement in the works there, but I presume it won't break the things I expect to work, and it won't subsume half of base) and people who like systemd, then you've got to do twice the work, and everybody will ask you why you're pushing against the tide.

> If Windows is crap, why does every system builder ship the majority of their machines with it?

Because they get incentivized by Microsoft to do so. This is a well document part of their often illegal business practices.

Windows isn't crap though.
> And let me ask a question, if systemd is crap, why does every major distro use it?

Won't find systemd in Gentoo, Slackware or Alpine. Also it is a little interesting, just a little, that whatever imperative systemd has to exist is entirely absent in every SysV and BSD, and yet variants of SysV and BSD and thier hybrids still exist, somehow, no worse for the wear.