by Zachary Crownover, Technical Consultant at Taos
Historically, operating systems in the UNIX and UNIX-like family have not only been incredibly stable, but have also been trailblazers in technology. Some have been more renowned for using what’s become tried and true– as well as being slow moving targets that are easier to support. Those in the latter category have at times had a fear of change when seemingly too sudden or divergent from their current standing, but change isn’t always bad. Sometimes it’s just simply that: change, and in the case of SysV Init, the change has been a long time coming.
Large changes that come down the line have often been disruptive to the status quo; some wish to hold on to what works, others feel that while the current way of doing something is broken but the tool suggested isn’t the correct solution either, and still others love the newer solutions. The difference of opinions is one of the strongest points of the open source world, because if everyone agreed on all things, open source projects wouldn’t be the diverse ecosystem that it is; no one would object to opinions of how things should be done and everything would be designed identically, and the technology would quite honestly stagnate. Consider the free market without new companies coming up offering new solutions and lower prices, without them, the market would be set in its ways with the businesses that exist as they currently stand. That said, few things have polarized the GNU/Linux community, and to a much lesser extent, the BSD community, so much as the init subsystem wars; not even the famed editor wars can compare.
Perhaps some of the fear of systemd comes from the scope of its replacement of old tools in the GNU userland, and its perceived decision to not adhere to the classical UNIX philosophy of “do one thing well,”The recent advent of systemd will require systems administrators completely familiar with the status quo to relearn how everything is done, because the scripts, daemons, system logging, authentication, and networking systems will all be referenced in very different manners than they used to be. That said, newcomers shouldn’t have much difficulty coming up to speed.
After one digs deeply into the true design of systemd, it can easily be argued that it is more true to UNIX philosophy than even SysV Init itself. Ingrained deeply in the hearts and minds of all those who use any UNIX or UNIX-like operating system is the idea that no one monolithic thing should exist. There is a recurring theme that everything should do only one thing and do it well, and everything else should delegate responsibility, once exceeding the logical domain of their code, to ensure that everything is done correctly. This fundamental wisdom has been transferred from sysadmin to sysadmin throughout the years like the Mishna. The systemd init system does replace many parts of the former SysV Init system, but it itself is not a singular piece, but rather a collection of tools operating together. It’s like comparing a GNU/Linux distribution to a BSD, it’s more like a BSD in that nature, a complete system of binaries coupled together tightly in the world of the system, rather than a series of loosely assembled binaries from many places to do the same thing, and each binary knows well its own limitations.