taf2
I was a systemd hater. I agree with a lot of the post but in practice I need a whole lot less custom scripts, forking code, etc to maintain a simple service whether it’s a custom c binary, go, rust, nodejs , ruby , python… I don’t need to mess with monit(for most things) and yeah in less words then my post here I could have a working service that would both restart on crash and on reboot…. Do I miss the init.d scripts and writing pid files forking twice to change user … no
chasil
As a previous user/exploiter of SysV init, I really like systemd.

-I can spawn/respawn daemons as someone other than root. SysV inittab runlevels are root-only.

-I used runlevel 4 for all my magic. Now I can have so much more magic.

-nspawn has let me craft containers from day 1.

-Path units are so much better than inotifywait (and somewhat better than incron).

-Do I prefer socket units to inetd? Mostly.

-Free automounter! Yes, crazy syntax, but gratis!

Do I wish it worked on BSD? Yes.

drdaeman
Unfortunately, there aren't any concrete examples (unless I skipped something accidentally), so it's hard to tell what exactly is meant as "does more" or that it doesn't "stand out of the way" etc.

Yes, systemd services can do a lot of things. Except that before rc scripts did all those things, but without any unified and standardized primitives. systemd provides those for a lot of common use cases - and that's how it ended up doing so much - because our rc scripts used to do that. systemd actually does less because unit files are not scripts (but one can hook any external program in a lot of places, if they need to).

Also, as I understand it, systemd isn't a single piece of software either, it's a whole project with a bunch of semi-autonomous pieces, tied with common conventions and assumptions. It's difficult to define the scope for an umbrella project, and I believe individual pieces all have their scopes relatively well-defined.

raspyberr
Every time systemd comes up everyone says it's great and how much better it is than SysVinit. No one EVER talks about the actual alternatives that people use like OpenRC, runit, s6.
rerdavies
Trying to compare Windows updates favorably to updates on systemd seems a bit bizarre. I can't ever remember seeing an upgrade ask for a reboot on Raspberry PI OS (debian 12). And I can't ever remember seeing a Windows update that didn't reboot the system.

As a long-time Windows developer (both apps and device drivers) substantially coming to Linux long after the decision to use systemd was made, I am impressed as heck by Systemd.

And was completely horrified by my very limited experience, as a user, with pre-systemd Linuxes. That was insane. Manually edit what in to which system file? And my system invariably didn't even HAVE that file.

Even writing systemd units is virtually effortless.

troad
I get frustrated when people misstate the Unix philosophy.

The Unix philosophy is about function, not form. Say you have a tool to send something over a network. In 1993, that tool can get by being quite simple. In 2024, that same tool now needs to be more complex, just to do the same 'one job' and to 'do it well'.

It's a consistent insistence that the 'single job' be defined today just as it was in 1980 that results in Linux requiring hundreds of packages to be even remotely usable. Oh, you want Wi-Fi? Well, that's not really the job of the networking stack, the job of the networking stack is to connect PDP-11s together...

paradox460
I was indifferent to systemd until podman shipped quadlet. Now being able to bring up containers, tied to the system, in a reliable and efficient manner, without docker compose or big bespoke commands, has been incredible
wannacboatmovie
systemd is bringing Linux feature parity to Windows NT in the mid-90s. That's 30 years ago for those of you keeping score at home.

Funny the author mentions Solaris because Solaris has SMF and other systemd-similar tools.

Linux pre-systemd looked like a kernel duct taped to a bunch of random thrown-together shell scripts... because it was. A sorry state of affairs that a bunch of very stubborn people were afraid to let go.

The simple fact that configuring networking out of the box is completely different on every distro and sometimes within distros depending on which tools were loaded, in 2024, is simply insane.

kemotep
If you haven’t seen this talk[0], I think it covers in a fair shake the positives, negatives, and what even a post-systemd world would have to deal with.

[0]: https://youtu.be/o_AIw9bGogo

toasteros
My issue with the "systemd violates the unix philosophy" argument is that it... doesn't. I see systemd-resolved touted as an example of this. systemd-resolved is a different tool to systemd; it does one thing and does it well.

Might as well say GNU violates unix philosophy because it has text processors AND a shell.

dang
Related:

A word about systemd - https://news.ycombinator.com/item?id=19077561 - Feb 2019 (17 comments)

andrewstuart
>> The single, overarching problem with systemd is that it attempts, in every possible way, to do more instead of less.

The more systemd does, the better I like the power, features, consistency and functionality my linux systems have.

systemd is a beautiful work of art.

Software developers owe it to themselves to full understand what systemd has to offer, because if you really understand it then you'll find you can architect your systems around systemd and often let it to the hard work for you.

If anything, the old gnu/linux name should be dropped and replaced with linux/systemd to illustrate that in fact systemd is really a major part of what Linux is.

miller_joe
As a declarative process supervisor i really like systemd. I don't like all of the other things it wants to do though.
rendaw
Kind of a non-sequitur, but what is actually the point of systemd (and other similar tools)? Like compared to just spawning a bash processes that run a critical commands in a loop.

I can come up with a couple functions, but none of them seem like core things, more like tangential benefits:

- Startup ordering means you don't get log spam with "can't connect to X" until X starts

- Certain dependencies like mounts look the same whether they're "running" or not, so not starting before the mount is important. Or like, if a program enumerates interfaces or something, making sure all the interfaces exist first (via a dependency). Of course, a program could do its own checks and possibly be more stateless about it.

- As a standard, for packaging - you can distribute a service/socket file with your program and most distros can just plug it in and expect it to work (also thanks to having standard targets and directories).

Otherwise it seems like an ugly declarative DSL for gluing programs together, which you could do in bash or python or whatever other language too. Is reducing log spam really the point? FWIW I do think systemd is better than the alternatives ATM...

chris_wot
A central point of their thesis is that Systemd folks bullied others into accepting it.

That's not really the case, though. The Debian folks had a very transparent discussion and vote about using it:

https://www.debian.org/vote/2019/vote_002

gavinhoward
I don't like systemd, but I don't like s6 either.

What we need is something simple that uses something easy like unit files. (Though I wouldn't choose the systemd unit file syntax.)

egorfine
Here we go again.

I hate systemd. I sincerely and strongly believe it to be the worst thing that happened to the world of Linux. Note: this is just my opinion, of course I'm obviously wrong, can I have it please?

Having said that I have to admit that the battle has been lost and there are no practically suitable server distributions clear from it, let alone desktop. So the only fight worth fighting is to delay destruction of other parts of the OS. In Ubuntu you can easily remove systemd-resolved, get rid of ssh socket activation, bring back cronjobs to crond and install a sane NTP client. Hopefully, we will still have sudo available for many more years at least as an optional package and then as a third-party deb. And thankfully we still have logs in /var/log and journald is not a hard requirement for anything. Yet.

Otherwise resistance is futile as systemd people excel at politics and seemingly no opinion or input has any influence their decision making process.

Again: I'm totally wrong here and systemd is good.

matheusmoreira
> It's basically an integrated redesign of all the low-level userspace of a Linux system

Yes, and that's okay. Whatever it is that came before it sucked so much I don't even remember what life was like before systemd.

Also, it's amazing that we even get to redesign Linux user space like that. That's something special. Not a single other operating system allows you to do this. You could boot Linux straight into your program if you want, without any user space at all. Linux is such a solid foundation it lets you swap out the entire user space, you can trash systemd and even the entire GNU stuff and just do your own thing. It's inspired me to start working on a redesign of my own.

smitty1e
The author seemed to be arguing at length about some sort of technical shortcomings, as though an argument had been made.
niobe
This old chestnet eh?
slater
Server seems to have received the ol' HN hug. Archive:

https://web.archive.org/web/20240917143933/https://skarnet.o...

LinAGKar
>when said software is process 1 and basically the whole low-level userland layer, it is frightening.

So this is yet another person who apparently thinks all the different daemons made by the systemd project runs in the same process.

>Remember sendmail, BIND, INN, and, definitely a better analogy, the early days of Microsoft Windows ?

Honestly, no, I know next to nothing about any of these. Someone wanna fill me in?

oldpersonintx
[dead]
mike_d
Systemd being one big monolithic system locks you in to, frankly, just a lot of shitty decisions. Take for example the fact that it decides to bind to port 53 on localhost, for absolutely no good reason. Now if your response is that is not a big deal, or you push your glasses up on your nose and want to explain why its important, imagine for a second if it was port 80 or 443.