systemd is very complex software. Alternative is very simple software with complex scripting which will reimplement parts of systemd in a buggy way (and that's not necessarily a bad thing). systemd probably is inspired by Windows and other service managers, while old sysv init is just a tiny launcher for script tree.

Just an example of systemd limitation is that systemd does not support musl, so if you want to build a tiny embedded sysroot, you already have some limitations.

>Just an example of systemd limitation is that systemd does not support musl, so if you want to build a tiny embedded sysroot, you already have some limitations.

OpenEmbedded has carried a patchset to build systemd against musl for use in Yocto for a long time.

postmarketOS already got approval from Poettering to make a musl-linked systemd more officially supported.

So you might say that... any sufficiently complicated init system contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of systemd?

I don't know about half, but some part of it - definitely.

I'd also add, that there are some non-trivial requirements for good server daemon programs, like fork, detach from terminal, may be fork again, umask, chdir, may be close some descriptors, maintain PID file, output to syslog, drop privileges and so on. And a lot of those things are implemented in systemd, so basically you can just write very dumb server which will work properly under systemd. So some part of systemd have to be implemented in every server daemon program.

systemd is heavily inspired by macOS' launchd.

More information at https://news.ycombinator.com/item?id=2565780

And Solaris SMF. There basically seem to be ~three generations of unix init:

1. Agglutination of shell scripts

2. "Oh wow, this is getting annoying"-phase: Wrapper for scripts (SRC SMC openrc etc pp)

3. Service supervision daemons (SMF, launchd, systemd)

Probably. I don't think systemd is a mere "Service supervision daemon", but I'm not in the mood for a can of worms today.

Yeah, I'd probably call systemd something like "an event- and graph-based orchestrator."

Not really, AIUI pottering just thought launchd's socket activation/inetd like functionality was neat: https://0pointer.de/blog/projects/systemd.html. Upstart is more of a direct ancestor:

> Why didn't you just add this to Upstart, why did you invent something new?

> Well, the point of the part about Upstart above was to show that the core design of Upstart is flawed, in our opinion. Starting completely from scratch suggests itself if the existing solution appears flawed in its core. However, note that we took a lot of inspiration from Upstart's code-base otherwise.

> If you love Apple launchd so much, why not adopt that?

> launchd is a great invention, but I am not convinced that it would fit well into Linux, nor that it is suitable for a system like Linux with its immense scalability and flexibility to numerous purposes and uses.

launchd is horrible though, the folks complaining about systemd would be up in arms if they had to write poorly typed XML key/value files

[deleted]