Hacker News new | ask | show | jobs
by ti_ranger 2414 days ago
> The systemd debacle is what led me down a rabbit hole toward the BSD's.

As far as I can tell (not actually using Debian or Ubuntu myself), there was only a debacle in Debian and Ubuntu, because they took too long to decide, and ended up having to rush their migration.

All the other distros, that had better-planned migrations (Arch, Fedora, SUSE, etc. etc. etc.) had basically no issues migrating to systemd, and have benefited immensely from being able to ditch the maintenance overhead of diverging init systems and init scripts, all re-implementing the same new features with slightly different implementations due to previous slightly differing implementation details.

People will currently call out OpenRC as the one non-systemd approach that works (e.g. if you acknowledge that SysvInit no longer actually works because no-one uses if for all system initialisation, instead leting it delegate lots of control to other bits and pieces), but before systemd won, there were: * SysVinit + RH-derived initscripts * Sysvinit + SUSE-style initscripts * Upstart * OpenRC * prcsys - parallel rc system (Mandrake and derivatives)

All of these had similarities, and small differences, e.g. they all tried to support dependency information in init script headers.

As a sysadmin, it was frustrating to: * Have to read every init script to see where it read its defaults from, was it /etc/sysconfig/pkgname or /etc/default/daemonname . Did it support setting limits from the defaults file, or would you have to hack the script to support your bigger-than-the-maintainer-imagined environment. * Debug where the application was logging to, if it didn't setup logging correctly by default.

As a maintainer of a package used on more than one distro, it was difficult to: * Test your init script to ensure it worked on RH-based distros and SUSE and Debian and Ubuntu. While Upstart said it supports init scripts, it fails in some random way that doesn't occur on RH and SUSE. * Setup logging correctly, as not all distros provided a helper script to setup the right logging daemon (syslogd, vs rsyslog vs syslog-ng etc.)

We won't talk about the more modern features such as cgroups etc., where only about 2 init systems support the feature adequately, and no distro or packager actually managed to support such advanced features on more than one init system, and certainly not more than one non-systemd system.

systemd mainly stays out of my way, but makes it easy to troubleshoot and customise daemon behaviour in a consistent fashion.

> But trying to wrap your head around systemd in even a few hours isn't reasonable.

You don't need to wrap your head around systemd to do things with it that you would really struggle to do with any other init system. But, you've probably been too busy fighting it, or trying to prove why it's worse, rather than trying to do real things with it, or you would be able to point to valid bug reports.

> The proof in the pudding for me is to look at the running processes of a default system between BSD and Linux with systemd. Yikes.

You're comparing apples and oranges here, you should rather be comparing two release of the same distro, before and after systemd became the default, and you would have seen very little difference.

2 comments

> before systemd won, there were: * SysVinit + RH-derived initscripts * Sysvinit + SUSE-style initscripts * Upstart * OpenRC * prcsys - parallel rc system (Mandrake and derivatives)

Many things about Linux would be easier if we standardized on only one implementation of each thing rather than multiple competing implementations (e.g. only one desktop environment, only one text editor). But we would also lose everything that makes Linux great.

> You don't need to wrap your head around systemd to do things with it that you would really struggle to do with any other init system. But, you've probably been too busy fighting it, or trying to prove why it's worse, rather than trying to do real things with it, or you would be able to point to valid bug reports.

There are any number of major security vulnerabilities, but that's not really the point. Most of the really obnoxious things systemd does are by design so there are no bug reports. Tight coupling to kernel and udev versions, to a non-standardised binary logging daemon, to a custom DNS implementation...

> Many things about Linux would be easier if we standardized on only one implementation of each thing rather than multiple competing implementations (e.g. only one desktop environment, only one text editor). But we would also lose everything that makes Linux great.

Sure, but there is nothing inherent about a text editor or desktop environment that results in you only being able to support one at a time.

It is only practical to run one system initialisation daemon on one system image at a time (unless your system initialisation daemon is too broken to support all the requirements, e.g. if you find yourself running daemontools on sysvinit).

Duplication for the sake of duplication that benefits no-one is just a waste of resources that could be spent on improving other parts of the ecosystem (addressing some of the other gripes the author has).

> There are any number of major security vulnerabilities, but that's not really the point.

There are only about 2 in systemd itself.

> There are any number of major security vulnerabilities, but that's not really the point.

systemd has fewer CVEs than the default syslog implementation used on most distros before systemd (rsyslog), but of course you knew I was referring to open bug reports, not resolved ones.

> to a non-standardised binary logging daemon

There are pros and cons to this. I would prefer to be able to dispense with journald in some situations, but in many cases it is very convenient to have, and it solves problems that no Unix system had completely solved before it.

> Most of the really obnoxious things systemd does are by design so there are no bug reports. Tight coupling to kernel and udev versions

When tight coupling is done by the BSDs, it is considered a good thing, when systemd uses features that don't exist on the BSDs, suddenly that's a bad thing ...

> to a custom DNS implementation...

While a custom DNS resolver is provided as part of the systemd source, which has some advantages, it is by no means a requirement, and it a totally separate service/binary. Many distros don't install it by default (yet).

> It is only practical to run one system initialisation daemon on one system image at a time

Sure, just as it's only possible to run one desktop environment at a time. But just as it's good form to write programs that will run correctly under any desktop environment (by keeping everything loosely coupled and ensuring any interfaces are stable and documented), it's good form to write programs that will run under any initialisation daemon. I don't mind systemd being what gets installed by default. I mind very much when systemd is the only option because other components have been encouraged to use systemd-only interfaces. (and realistically that's the only reason systemd "won" - many of the competing options were much nicer technically, but that doesn't matter when gnome requires you to be running systemd).

> When tight coupling is done by the BSDs, it is considered a good thing

I wouldn't say that. Tight coupling in and of itself is always a negative. If there's clear value gained (e.g. useful features) then that might be enough to outweigh the negative.

>> All the other distros, that had better-planned migrations (Arch, ...

I stopped using Arch when my system became unbootable after systemd was initially pushed out.

Conversely; I use Arch with SystemD and it works fine the overwhelming majority of the time.

I have had a couple of snags over time, and many could argue that it's my fault for not reading "the new way" of how things work; like systemd-resolved not resolving anything (even with allow-downgrade which is the default iirc) which isn't DNSSEC validated, such as my entire corporate DNS environment.

Overall I feel like there's many benefits for a desktop system to use SystemD.

I've come to grips with it recently, it brings standardization to many things that were lacking across distributions. I just don't like how much power the project holds over the entire linux ecosystem ("oh hey here's systemd-logind don't mind us taking over all-things-login"-type scenarios)

For the record, my largest gripe with systemd is systemd-resolved too (followed closely by binary logs).

> I just don't like how much power the project holds over the entire linux ecosystem ("oh hey here's systemd-logind don't mind us taking over all-things-login"-type scenarios)

That's totally not the case, all the previous solutions were slightly broken (pam_console, ConsoleKit etc.), and unmaintained.

> For the record, my largest gripe with systemd is systemd-resolved too

So, uninstall it. It's not a part of systemd (the daemon), and totally optional.

The migration itself was notoriously bad (check the forums from around that time, full of really confused people with unbootable systems), though it's likely usable now.
I don't disagree.

I was using fedora religiously (I mean, _really_) between Fedora 15-21, and systemd was actually what caused me to get off of the distro, the upgrade path was truly awful, even for Fedora.

The response was "but it's bleeding edge, what do you expect". And to be honest, I expected better.

Also it meant I had to unlearn a lot of my linux knowledge, and it was specific to fedora at the time.

Also, systemd in its early days was astonishingly broken, and many of the gripes you hear of today likely stem from people who were exposed during that period. (such as binary logs getting corrupted and unceremoniously truncated, boot being non-deterministic meaning your machine didn't boot 1 time out of every 10 and huge smatterings of "waiting for 1m 30s" even with very commonly used packages on a base system).

All that to say: I haven't seen a smooth transition from a non-systemd distro to a systemd enabled distro.

Although, truthfully, I haven't upgraded a Debian installation in-place.

I hear open/S/USE/LED/LES did it right, which makes sense, given they're one of the only distributions with a reason to add it in the first place.