It used to be that things like sysvinit were a handful of sourcebfules that you could read and understand in a few hours. Now you must wade through 500.000 lines of code to find what you're looking for.
I've yet to find this makes things that much harder to find. Even on smaller projects people clearly don't read the entire thing to find what they're looking for. Searching for a given bit of functionality is far from an O(n) process.
Then our experiences with these codebases are entirely different. I have a hard time looking things up in the systemd source code. The code really is more complex.
sysvinit scripts were/are massive, plus usually source some other file. For systemd they're replaced with configuration files. Much easier.
I don't see why you'd need to check the source code though. It's often just init scripts, plus the various related ones (timers, path, socket, etc). Before that was also spread out over multiple things. Now they all share a similar way of doing things.
Slight annoyance is that some systemd manpages too often refer to another manpage. Example: if you e.g. skim the systemd.service manpage, you'll likely miss the options documented under systemd.exec. The manpage does refer to those, but I often forget that you need to read multiple manpages.
Comparing systyemd with init scripts is disingenious. I can only read systrmd unit files after learning their language, which includes all the meanings and interactions of the possible statements in them. In othrrvwords, I have to learn at least the entire default behavior of systemd up front. With init scripts I need to only know the script language. A skilled Linux user will be quite familiar with the later anyway.
> Comparing systyemd with init scripts is disingenious
You're not really explaining why I think. For systemd you have configuration files. It's very easy. At a last resort you can write a shell script for some special handling. With init scripts it's totally false that "you only need to know the script language". The way those init scripts are written differs across distributions. Meaning, small differences between e.g. Fedora, openSuse, Mageia, etc. Bigger differences for Debian.
I don't get why you call a configuration file a language.
> A skilled Linux user will be quite familiar with the later anyway.
That's what I mean, the system unit files are way easier. There's pretty much options for loads of things. Much easier than doing that stuff yourself in each and every shell script.
Loads of things which is an easy option in systemd I wouldn't know how to easily to in a shell script (e.g. ProtectHome).