I wonder if the impetus behind the (terrible) monolithic design of systemd was to force standardization across distros. The choice was more political than technical.

If different choices were available for init, DNS resolver, service control manager, volume manager, etc... we would adversely contribute to the schizo distro landscape the people holding the money bags are actively trying to get away from.

With systemd it's an all-or-nothing deal. You get the good with the bad, but all distros shit the bed in the same, deterministic way.

Not even Windows does this. There is no "systemd" equivalent. Yes, Windows ships as a single OS—as do the BSDs—but all the components were developed separately.

If all they wanted was a service control manager, there were many (better) options already in existence they could have used.

systemd is not a monolith, and distros make different choices on what portions of systemd they which to ship and enable by default.

For example, not all distros ship and use systemd-resolved by default, to choose from your list.

systemd-boot competes with grub

Outside of Arch(-derived) enthusiast circles, I haven't seen systemd-boot used anywhere.

It has some really nice tools and features that Grub lacks (i.e. it has tooling for checking the state of things like secure boot and analysing the security risks of your boot configuration), but every mainstream Linux OS I've used still relies on tools like Grub to boot.

I have some gripes with systemd-boot's limitations (notably, the insistence on an unthemed, white-on-black menu system that's not exactly enticing to Linux newcomers) but it's hard to deny its merits. Grub is tied together with a spider web of scripts calling each other, loading modules, generating code that is then executed again, and one mistake in one script can cause the bootloader config four scripts down the line to fail, leaving the system unbootable; the concise configuration file for systemd-boot makes for a much better bootloader configuration system in my opinion.

OpenSUSE uses systemd-boot for its GRUB2 BLS implementation (<https://news.opensuse.org/2024/10/08/grub2-bls/>). It's really awesome because it lets me boot from Btrfs snapshots on a fully LUKS2 argon2id encrypted system.

The argon2id issue remains an annoying problem (AFAIK Grub still doesn't support argon2id), but for tools like Timeshift there are Grub scripts to also boot BTRFS snapshots.

NixOS uses it by default

and grub is a rotting pile while systemd-boot is a simple boot entry multiplexer that rides off the kernel's capability of being run as an EFI executable, it just happens to live in systemd's tree. not a good example

It's a pretty good example of why people think systemd is bloated and does too much. It's a simple boot entry multiplexer. Does it need to live in systemd's tree?

Nobody complains about a very wide variety of only vaguely related utilities being in the Gnu coreutils tree.

Nor the 20 or so odd reimplementations of various filesystem drivers and LUKS encryption in the grub2 tree.

But, who is counting?

I'm tired of grub too. That's one of the packages on my shitlist. Currently it is broken on my system, as it has been in the past from time to time. I'm tired of the unreliability and have decided to write my own bootloader instead. It will be simple and bulletproof.

I already laid the basic foundation and have the kernel loading into memory and booting. Next step is to get the memory map and pass that along. It's BIOS only for the moment; EFI support will come later, along with other architectures. (PowerPC is next.)

Because they're not all called coreutils. They've got names like sed, awk, and grep, not systemd-named, systemd-analyze, systemd-networkd, systemd-resolved, systemd-timesyncd. I guess that's a good thing though?

so its a marketing problem, irregardless of whether it's in systemd's tree because the systemd maintainers want to maintain it in-tree

Even better example, I don't think systemd-boot is broadly adopted yet although there are certainly some distributions that use it.

The thing is not just about distros and big developers it is about every developer out there who wants to write system software. Instead of doing the work to support multiple different APIs they can concentrate on the software. Its just easier. You don't have to track the compatability of different tools.

For many people Linux is not an academic exercise. It is a tool they want to use. The don't care to use a different network manager or resolver.

And that is exactly the same as Windows. There is one solution across the whole system and it works together because it is written by the same people and tested together.