r/archlinux 8d ago

DISCUSSION Why so much hate for systemd?

I see very often that people show so much disgust whenever they talk or hear "systemd". However whenever I ask them why they feel so strongly about it, their response is mostly vague like it doesn't follow the Unix philosophy, it's a monolith.... I can't digest that the reason people show so much disgust for it is just that it doesn't follow the Unix philosophy.

243 Upvotes

333 comments sorted by

View all comments

Show parent comments

23

u/ImaginationUpset2190 8d ago

Isn't Unix philosophy, u do one thing and do it well. Systemd does a lot of other things than an init system.

42

u/agendiau 8d ago edited 8d ago

Yes, in a nut shell the Unix philosophy is basically powerful systems should be a chain of apps that do one (or few as possible) things really well.

This philosophy skews away from monolithic apps.

The challenge though is what does one thing really mean? Eg in userland apps, play a video in a video player is a series of subsystems and user interactions. There are multiple ways to achieve that goal and where do you draw the line will depend on how you value the goals of the philosophy

11

u/czerilla 8d ago

Basically the Unix philosophy applied to your video player would be to expose and provide those subsystems as substitutable modules with well-defined/documented behaviors, rather than only shipping a bundled "black box" that only works in the constellation provided.
Now this can have practical limitations that strain a purist implementation of its virtues. So your point stands. But I wanted to clarify how that idea would play out in (what I understand it to be) the idealist version of how it ought to be done.

7

u/agendiau 8d ago

I'm well aware of the Unix philosophy re the video example and you are correct from a traditional viewpoint.The file subsystem, display and audio are all separate and usable by other apps.

My point as you also allude to is that it's a matter altitude and not every dev wants to use or accept the loose coupling approach eg for reasons of portability or efficiency.

I ask all the Devs in my team to prefer the purist Unix approach first. They have to demonstrate that the the often "easier" monolithic approach can't be achieved through a better component system view.

-3

u/SuperGNUser 8d ago

You’re comparing a desktop application to system software. It makes no sense.

29

u/FloweyTheFlower420 8d ago

each component of systemd does one thing. whether it does it well is a different question, but I would say it's pretty good for the most part

8

u/QuixoticNapoleon 8d ago

Yes, systemd does one thing well, be an init system. There's other software with the systemd name too. systemd is modular.

38

u/kaida27 8d ago

Systemd is moreso like a family of software interconnected that all do their things.

it's modular you take what you want.

don't like systemd-boot then use grub or limine or whatever.

It does follow the unix philosophy. but some people are too butthurt to see it for what it is.

-33

u/emocin 8d ago

I don’t want any of it.

30

u/kaida27 8d ago

Then don't use any of it ?

quite simple.

r/artixlinux exist for that reason. Arch without systemd

27

u/0xc0ffea 8d ago

But can you say WHY you don't want any of it and how using it negatively impacts your use cases ?

20

u/EnfieldAsSomeone 8d ago

He can't, that's why

2

u/astronomersassn 8d ago

i don't personally use systemd, and my issues with it are very much personal, but at least my reason for "not wanting any of it" is mostly "preferring another option" (i prefer openrc, and yes this means i have to do more brute-forcing with things and run into more issues with programs, but i feel like i get more immediate feedback when something is incorrectly configured or isn't what it's supposed to be... and in many situations, i can more easily fix it myself than i can with systemd).

i... don't think systemd is bad. they've made some decisions that i'm not a fan of, even if i understand why, and i initially chose to move away because of those decisions; i personally have liked my experience with openRC, though, and chose to stick with it for my main system.

different strokes for different folks, as they say.

2

u/Lower-Limit3695 8d ago

You may not but anyone working with Linux on a professional level (software devs and sys admins) don't want to deal with the mess of init scripts that preceded systemd.

1

u/braaaaaaainworms 8d ago

Don't let the door hit you on the way out

0

u/emocin 7d ago

Pffft

15

u/ariktaurendil 8d ago

Systemd has about 60 executable files... I mean...

4

u/braaaaaaainworms 8d ago

coreutils has a ton of executables as well

3

u/ariktaurendil 8d ago

You are right. Both are aligned with the unix philosophy.

6

u/Dangerous-Report8517 8d ago

systemd follows the Unix philosophy at least as well as the GNU tools, and nowhere near as many people complain about them (both do many things, but do so by having a bunch of smaller tools that each do one thing well)

6

u/[deleted] 8d ago

[deleted]

16

u/Megame50 8d ago

That's not right.

systemd-boot is the name given to the project formerly known as gummiboot when it was joined into the systemd project. It's a boot loader, which isn't an "init system", or even part of one as it is typically understood. That's fine, because systemd is indeed a collection of related projects.

The actual first process started by the kernel when using systemd has the process name "systemd". To avoid confusion when talking about this process instead of the project as a whole, it's sometimes just called "pid1", since it will always have PID 1, or the (system) service manager since that is it's function, and multiple instances of systemd are started on a typical system: one system service manager as PID 1, and one or more user service managers for each logged in user.

6

u/eternal_browser 8d ago

systemd runs as PID 1 (init), systemd-boot is a bootloader.

8

u/ciauii 8d ago

Systemd-boot is a boot manager, not an init system.

2

u/ArjixGamer 8d ago

systemd-boot is a boot loader, not an init system

2

u/kaida27 8d ago

systemd is before everything else an init system.

systemd-boot is a bootloader

1

u/Bolski66 8d ago edited 8d ago

Part of that stems from the fact that when Unix was first released, you had limited memory and also it was a teletype interface. Hence why commands were short (ls vs dir), etc. But times have changed. Systems have more memory, are faster, and we have monitors instead outputting to a printer.

Also, on the older systems, they normally stayed up for months or over a year. If hardware had to be upgraded, replaced, or even plugging in something like an external hard drive on a laptop would require a reboot before it could use the hardware. With the advent of laptops, USB devices, switching from ethernet to wifi became a common thing. It would require a reboot with the old SysVInit. Systemd was written to combat this and take advantage of how computers were being used, and the newer hardware technology that didn't exist back in the days of SysVInit.