systemd is becoming de facto a standard init system for Linux. But even this choice of words is treacherous, because systemd is much more than an init system. It's basically an integrated redesign of all the low-level userspace of a Linux system, with great plans to change how software is run and organized.
Which is not a bad thing per se: Unix software can definitely benefit from improvements in this area, and the s6 suite, among other software, comes from the same assessment and ultimately has the same goal. But systemd suffers from a single conception flaw that sets it apart from the other initiatives, and that has both political and technical repercussions.
The single, overarching problem with systemd is that it attempts, in every possible way, to do more instead of less.
systemd attempts to cover more ground instead of less. In other words, rather than simply being an init system, it tries to be a complete overhaul of the way a Linux system is run, and tries to force other software to hook with it in order to be supported. This goes very much against:
The reason why systemd has become so prevalent is not that it has been accepted by the community. It's that it has manpower. It is backed up by open source software companies that can provide much more manpower than developers like myself working on free software on their own time. The distribution model of systemd, made of lobbying and bullying, is much more akin to the distribution model of Microsoft Windows than the one of GNU/Linux.
Which says something.
Software that does more instead of less is, simply put, badly designed software. Trying to come up with an all-encompassing solution is always a sign of developer hubris and inexperience, and never a sign of good engineering. Ever. Remember sendmail, BIND, INN, and, definitely a better analogy, the early days of Microsoft Windows ? Yes, systemd is in exactly the same league. It's as if we had learned nothing from the mistakes of the past 20 years. The systemd programmers may be better at writing code than the BIND programmers - which isn't saying much - but they are just as bad at designing software, and when said software is process 1 and basically the whole low-level userland layer, it is frightening.
Yes, doing more instead of less is especially bad in the case of system software, i.e. low-level software that aims to make the machine work and that application software depends upon. The goal of an operating system is to make it possible to run applications, and system software should always partake in that goal. System software should stay the heck out of the way, which is exactly what systemd does not.
Technically as well as politically, systemd is actually very similar to Microsoft Windows. If it is not fought, it is going to cause a lot of harm to the Linux ecosystem. It has already begun.
s6 is my humble contribution to the fight against systemd, and I am committed to making it evolve so it becomes a real alternative.