this post was submitted on 19 Apr 2024
12 points (100.0% liked)

linuxmemes

20408 readers
961 users here now

I use Arch btw


Sister communities:

Community rules

  1. Follow the site-wide rules and code of conduct
  2. Be civil
  3. Post Linux-related content
  4. No recent reposts

Please report posts and comments that break these rules!

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 5 months ago (4 children)

Someone please convince me why I should hate systemd because I still don't understand why all the hate exists.

[–] [email protected] 1 points 5 months ago (2 children)

People don’t like it because it’s declarative. It felt cool to be able to just put bash files into certain directories to have them executed on startup. That was elegant, in the sense of “everything’s a file”.

systemd is more of an api than a framework, so it’s a different design paradigm.

I hated systemd until I printed out the docs, for some coffee, and sat in a comfy chair to read them front to back. Then I loved it.

Mostly I hated it because I didn’t know how to do things with it.

Also, “journalctl” is kind of an ugly command. But really, who gives a fuck. It’s a well-designed system.

And if a person absolutely must execute their own arbitrary code they can just declare a command to execute their script file as the startup operation on a unit.

[–] [email protected] 1 points 5 months ago* (last edited 5 months ago)

Your comment summarizes my entire programming career.

These steps:

  1. Be taught that there's a specific way to do something because the other ways have major issues

  2. Find something that goes against that specific way and hate it

  3. After a lot of familiarity, end up understanding it

  4. Have a mix emotion of both loving it because it functions so well and hating it because it doesn't align with the rules you've set up

[–] [email protected] 1 points 5 months ago

Good that you've enjoyed it. But a fundamentally wrong thing about systemd is that it is actively harming the best thing about Linux – freedom. Some programs won't work on a non-systemd distro because how tightly coupled and vendor non-agnostic anything that becomes dependent on might become at times. Of course it's not as bad as glib(loat)c, but still if something can be done without any degradation of functionality via standard POSIX facilities, WHY either incur additional maintenance overhead for non-systemd implementations or punish people for their computing choices if there's no one to maintain it?

[–] [email protected] 1 points 5 months ago (3 children)

The idea as far as I can tell is that it's responsible for too many things and gives a massive point of failure.

[–] [email protected] 3 points 5 months ago (2 children)

Man, wait until these people hear about the filesystem and kernel.

[–] [email protected] 1 points 5 months ago

In some ways I think the filesystem is philosophically the exact opposite of systemd


I can boot my system with an ext4 root, with a btrfs /home...or vice versa. Or add some ZFS, or whatever. The filesystem is (with the exception of some special backup schemes) largely independent of the rest of the system, despite being of core importance.

On the other hand, I can't change my init system (i.e., systemd) without serious, serious work.

[–] [email protected] 1 points 5 months ago (1 children)
[–] [email protected] 1 points 5 months ago

That's GNU/Hurd thank you

[–] [email protected] 3 points 5 months ago (2 children)

It's also "infectious" software. The way systemd positions itself on the system, it can make it more difficult for software to be written in an agnostic way. This isn't all software, and is often more of a complaint by lower level software, like desktop environments.
https://catfox.life/2024/01/05/systemd-through-the-eyes-of-a-musl-distribution-maintainer/ This isn't a terrible summary of some of the aspects of it.

Another aspect is that when it was first developed, the lead on the project was exceptionally hostile to anyone who didn't immediately agree that systemd definitely should take over most of the system, often criticizing people who pointed out bugs or questionable design decisions as being afraid of change or relics of the past.
It's more of a social reason, but if people feel like the developer of a tool they're forced to use doesn't even respect their concerns, they're going to start rejecting the tool.

[–] [email protected] -1 points 5 months ago (1 children)

the develope receive a fuck ton of hate too, and he keep the project going, against every one unix-way haters

[–] [email protected] 1 points 5 months ago

Well, I don't give him too much credit for that given that it was his day job, not some passion project.

Most of the hate towards him was because he took an abrasive stance against anyone who disagreed with him, or pointed out bugs.

[–] [email protected] -1 points 5 months ago (1 children)

What do you expect from an init system? It's like saying my cpu is infectious because my computer depends on it

[–] [email protected] 1 points 5 months ago (2 children)

It's that it also decided to take over log management, event management, networking, DNS resolution, etc, etc.

If it were just an init system that would be perfectly portable. People were able to write software that way with sysv for years.

It's that in order to do certain low level tasks on a systemd system, you need to integrate with systemd, not just "be started by it". Now if a distro wants that piece of software, it needs to use systemd, and other pieces of software that want to be on that distro need to implement integration with systemd.

A dependency isn't infectious, but a dependency you can't easily swap out is, particularly if it's positioned near the base of a dependency tree.

Almost all of my software can run on x86 or arm without any issues beyond changing compiler targets. It's closer to how it's tricky to port software between Mac and Linux, or Linux and BSD. Targeting one platform entails significant, potentially prohibitive, effort to support another, despite them all being ostensibly compatible unix like systems.

[–] [email protected] 1 points 5 months ago

Bro I’m with you on this but the systemd bots will just keep arguing with and downvoting you. Don’t bother.

[–] [email protected] -1 points 5 months ago* (last edited 5 months ago) (1 children)

log management, event management, networking, DNS resolution

and this is a bad thing? the distro can choose to not use it, but because every systemd distro uses it, it's a 1000x easier to implement it without needing to put a fuck tons of if-else's for every distro

[–] [email protected] 1 points 5 months ago (1 children)

No, not everyone thinks it's a bad thing. It is, however, infectious, which is a reason some people don't like it.

Knowing why people dislike something isn't the same as thinking it's the worst thing ever, and liking something doesn't mean you can't acknowledge it's defects.

I think it's a net benefit, but that it would be better if they had limited the scope of the project a bit, rather than trying to put everything in the unit system.

[–] [email protected] -1 points 5 months ago

and what's the problem?, it's not like everything is in the same binary or it's a monstrosity that can't be used without using every single feature, it's a project that just has different programs under the same project name, because no one wanted todo theoe programs

[–] [email protected] 1 points 5 months ago

Indeed, the Unix philosophy was do one thing and do it well. ls just list directory’s and files it’s not a network manager too. Systemd crams a lot of extra shit into an init.d/rc.

I still prefer the old system-v/openRC setup or BSD’s setup. It’s simple does 1 job and does it well. But I can work with systemd just fine in creating scripts these days and it does have some nice features like user startup scripts baked into it and podman integrates very nicely with it.

[–] [email protected] 0 points 5 months ago* (last edited 5 months ago) (1 children)

systemd tries to unify a Wild West situation where everyone, their crazy uncle, and their shotgun-dual-wielding Grandma has a different set of boot-time scripts. Instead of custom 200-line shell scripts now you have a standard simple syntax that takes 5 minutes to learn.

Downside is now certain complicated stuff that was 1 line need multiple files worth of workarounds to work. Additionally, any custom scripts need to be rewritten as a systemd service (assuming you don't use the compat mode).

People are angry that it's not the same as before and they need to rewrite any custom tweaks they have. It's like learning to drive manual for years, wonder why the heck there is a need for auto, then realizing nobody is producing manual cars anymore.

[–] [email protected] 0 points 5 months ago* (last edited 5 months ago) (1 children)

There is also the argument that it's more complicated under the hood and harder to troubleshoot, particularly because of it's inherent parallelism and dependency-tree design, whereas initv was inherently serial. It was much more straightforward to pick the order in which services started and shut down on an initv system.

For example, say I write a service and I want it to always be the first service stopped during a shutdown, and I want all other services to wait for it to stop before shutting down. That was trivial to do on an initv system, it's basically impossible on systemd.

For those wondering, yes I did run into this situation. My solution was clobbering the shutdown, poweroff, and restart binaries with scripts earlier in path search that stop my service, verify that they're stopped, and then hook back to systemd to do the power event.

[–] [email protected] 1 points 5 months ago

I had numerous situations where systemd didn't let me abort a hanging service startup during boot or stop during shutdown.

So what do I do now, systemd? Wait till infinity??

That never happened while using other init systems. Because they simply fail properly ("sorry I did my best to stop this, I needed a SIGKILL finally"). Or simply let me log in: "sorry, some services failed to start and now it's a huge mess, but at least you can log in and fix it.".

[–] [email protected] 0 points 5 months ago (1 children)

My understanding is that some people are die hards to the software philosophy of "do one thing really well". systemd at the very least does many different things. These people would prefer to chain a bunch of smaller programs together to replicate the same functionality of systemd since every program in the chain fits the philosophy of "does one thing really well".

[–] [email protected] 2 points 5 months ago (1 children)

For me it’s 3 things

  • Do one thing and do it well
  • Everything is a file in Linux
  • human readable logs

Systemd breaks all three of though by being monolithic and binary. It actually makes you have to jump through more hoops to do things in certain cases. I understand it’s a mindset shift but it really starts making it feel more like Windows with how it works and the registry and event log.

[–] [email protected] 1 points 5 months ago

You forgot: use as many dependencies as you need. For example, my init system does not use xz-utils.