> The tight-coupling between components which systemd is encouraging and requiring is something which, for those who remember back then, we used to criticise Microsoft for, due to their inability to dig themselves out of the rut such philosophy had led to, being unable to fix even trivial bugs due to fixing them breaking old code. It leads to inflexible systems which can't change, whereas loosely-coupled systems, which Linux has had until now, allow components to be easily swapped out and changed providing that the interfaces between the components are relatively well specified.
Systemd's interfaces are perfectly well-specified. http://www.freedesktop.org/wiki/Software/systemd/Interfac...
They're also relatively simple and portable, so that other init-like software can use the same interfaces for e. g. socket activation. I'm sorry, but I don't see your point at all.
> The loose coupling does have the disadvantage that components aren't necessarily as well integrated, but this hasn't really been a problem in practice--the benefits far outweigh these downsides,
That's an easy claim to make given that you provide no arguments to back it up and it's thus essentially impossible to refute. I can't help noticing though that the successful desktop operating systems do apply a well-integrated approach.
> An example is the requirement for stuff like cgroups, autofs, D-Bus etc. Having these as a requirement, rather than merely being optional and used if available, imposes constraints on other projects. cgroups can never be removed from the kernel, and distribution kernels must include it.
Systemd doesn't strictly require autofs. cgroups are needed, but why would you disable them? The overhead is negligible if you disable all cgroup controllers, none of which are required for systemd. There's also nothing wrong with systemd's use of D-Bus. It doesn't require running dbus-daemon, and there's nothing wrong with the protocol; in fact, it would have been brain-dead to use anything else, we don't need yet more NIH syndrome on the linux desktop.
> So it indirectly forces other parties not to allow certain components to evolve or be removed.
By that logic, every kind of code reuse is bad because it forces the code that is being reused to keep a stable interface. I'm sorry, but that's downright bullshit. If the cgroup stuff is actually so bad that the kernel folks want to remove it again, it shouldn't have gone in in the first place. They've made their bed, now they must lie in it. And besides, systemd is by no means the only program that uses cgroups.
> If systemd was a bit less aggressive in its strict requirements, it would be rather more portable
Every Unix-like OS ships its own init system: SMF, launchd, BSD init etc.. Do you actually expect any of those to give up their init system in favour of systemd? I certainly don't, thus making systemd portable would be a waste of time.
> Systemd certainly has a lot of good ideas, but the package as a whole is does not allow one to pick and choose the good from the bad due to its lack of modularity.
This is yet more nonsense, systemd is quite configurable. Just look at its configure script...