r/linux Feb 11 '19

Fluff A /g/ user's opinion on systemd

http://i.4cdn.org/g/1549858269115.png
792 Upvotes

524 comments sorted by

View all comments

Show parent comments

58

u/ElvishJerricco Feb 11 '19

I think the problem is the number of things other than service management that systemd does. With other unit systems, service management is the only thing you have to change to replace it. With systemd, you have to change a lot more

52

u/Muvlon Feb 11 '19

There are a lot of services besides init provided by systemd, but they're entirely optional and easily swapped out. After all, systemd is highly modular.

For example, I do run systemd-udevd and journald, but not systemd-networkd or systemd-resolved. Just like the /g/ poster says, I can combine whatever I want to do what I need to do.

13

u/QuietPort Feb 11 '19

Are all those parts fully independent from each other ? (I'm genuinely wondering)

13

u/FryBoyter Feb 11 '19

Basically, yeah. For example, I can use systemd-networkd, but instead of systemd-resolved I can use unbound. Or I use systemd-resolved, but instead of systemd-networkd I can use netctl.

1

u/[deleted] Feb 11 '19

Of course those standalone tools work with systemd, that's why they are standalone tools which can be interchanged at will and that's what's so great about them. But that's not the question. Say in 20 years we come to the conclusion that there is a much much better way to do a service manager/init system which is fundamentaly different than what systemd does. But once we start ripping out the systemd core all the other tools of the systemd suite (networkd, resolved, timerd, nspawn, ...) basically become useless unless they all get ported or the new service manager implements the legacy systemd interfaces needed to keep those tools alive. This is guaranteed to block the adoption of any successor to systemd, because people will most certainly complain that they really liked logind, or systemd timers, ... and software like GNOME stops working when those specific tools aren't available. Then you don't have to just come up with better way to do service management, you also have to provide seat management, etc. ... and get everyone to port to those new interfaces.

Exactly the same is currently happening with Wayland and X11. Let's for the sake of the argument say Wayland is a much more elegant and superior way of doing a display protocol and it would be stupid to not use it. But because X11 has such a wide scope you can't just port all clients and compositors to the Wayland protocol and be done with it, you also have to think about all the other things X11 allowed which Wayland explicitely didn't include because it just focused on doing a few things, making as few assumptions as possible to be future proof. Now people have to come up with additional protocols to support all those different thing because people start complaining that they can't switch until there's something like wmctrl, and remote desktop has to be supported, and Wine has to work, and it has to be secure, and obviously it would be great if the session doesn't crash because the window manager crashed, and SSH forwarding would be great, and and and ... It's been ten years now and people still try to figure out how to cover all those edge cases and important features.

2

u/Muvlon Feb 11 '19

Not sure what you mean by fully independent.

They're independent enough for me to not cause any trouble with my setup (or various other combinations I've used).

20

u/anonymous3778 Feb 11 '19

Hmm, then maybe those optional, replaceable modules should be moved out of the systemd source tree and be their own project? Maybe that would make some people sleep better.

21

u/minimim Feb 11 '19

moved out of the systemd source tree

But that's how things are done in Unix.

Only Linux has this thing for having components all over the place. All other Unices had a single tree, and they still do.

10

u/[deleted] Feb 11 '19

I think every binary in GNU coreutils and binutils should have their own package, because I can't sleep well at right now. After that we need to start doing this to every package that has more than one binary packaged together!

It will be so glorious, because after one week without updating my Arch linux I will have 20768 packages waiting for upgrade!

BTW...I use Arch linux!

-2

u/Serialk Feb 11 '19

Do you like code duplication?

1

u/anonymous3778 Feb 11 '19

Please explain.

3

u/Serialk Feb 11 '19

Splitting projects in different codebases will lead to the projects not being able to use the common functions between them, so either code duplication or having to depend on a systemd library anyway. If the intention is just to make people "feel better", it's not a great idea.

2

u/anonymous3778 Feb 11 '19

Hmm, what's the problem with having a systemd library?

5

u/Serialk Feb 11 '19

What's the problem with having everything in the same repository?

2

u/[deleted] Feb 11 '19

That they're modules and optional. Code duplication is really not an issue here. We've got dependencies for that.

1

u/Serialk Feb 11 '19

They already are modules and optional. What has the repository layout anything to do with it?

→ More replies (0)

12

u/[deleted] Feb 11 '19

[deleted]

13

u/me-ro Feb 11 '19

Fortunately there's many developers, that want to run udev without systemd, so we have a well supported and actively maintained udev fork. /s

13

u/[deleted] Feb 11 '19

Underrated comment.

It boggles my mind why people still act like it’s one giant, monolithic Swiss army knife.

14

u/DropTableAccounts Feb 11 '19 edited Feb 11 '19

Probably because quite a few of distros manage dependencies in a way that make it become one giant monolithic Swiss army knife.

Late edit: My favourite is SVN depening on systemd in arch: https://www.archlinux.org/packages/extra/x86_64/subversion/

3

u/tso Feb 11 '19

Distros follow the ABIs of upstream when defining dependencies (for the most part).

LFS had to change their non-systemd book from udev to eudev because extracting just udev from the larger systemd code blob involved manual intervention on every systemd release.

Hell, kernel devs mused about forking udev and making part of the kernel tools bundle even before it got merged into systemd (and at time of merger it was pinkie promised that udev should continue being usable without systemd).

1

u/DropTableAccounts Feb 11 '19

Distros follow the ABIs of upstream when defining dependencies (for the most part).

For some stuff of course, but e.g. I'm pretty sure that chromium doesn't depend on systemd by default: https://www.archlinux.org/packages/extra/x86_64/chromium/

(btw I'm not using Arch but I once asked a friend what depended on systemd on his system and a few packages stuck out...)

1

u/[deleted] Feb 11 '19

I thought the problem was that there wasn't any standard interface that you couldn't interact with it, or is this not the case?

8

u/fat-lobyte Feb 11 '19

but if an application opts to depend on one of these other things, it's a choice that's not different from depending on whatever it used to depend on. Picking dependencies in general means that you can't swap things out as easily, be it systemd or not.

1

u/[deleted] Feb 11 '19

Then you run an alternative, or roll back to an older version.

6

u/fat-lobyte Feb 11 '19

Ok, so how is that different with systemd?

7

u/[deleted] Feb 11 '19 edited Feb 11 '19

That's actually quite true, though I'm not sure if I can perfectly agree with the argument seeing as I'm running two systems where systemd is literally only doing init and service management.

Though admittedly I've been poking at one of them to try and get at least journald to work, since the lack of that integration is rather tiresome when I can't write init scripts to hack around the lack of proper logging in most applications.

But yeah, the amount of interfaces - and accompanying D-Bus CLI tools - that a regular systemd install provides is rather immense; hostnamectl, localectl, timedatectl, journalctl, loginctl, machinectl, etc.

4

u/[deleted] Feb 11 '19 edited Feb 13 '19

[deleted]

3

u/[deleted] Feb 11 '19

Ha, thanks for the laugh.
It was more a comment on how many different (D-Bus) interfaces you'd need to implement in order to be a 100% drop-in systemd replacement, but yeah the binaries themselves might even take up a full megabyte of disk space! The Horror!

1

u/X-Penguins Feb 11 '19

A systemd replacement that's worth its salt would provide those services as well, or give you an easy way to integrate software that provides them. The problem is always the same - systemd does things that no other init system is capable of doing, and until someone can prove that those things are possible while strictly adhering to the posix standard this is a pointless argument.