The Great Init Debate

Recently, Debian GNU/Linux (“the universal operating system”) has come under fire for it’s politics, centered around which init system to use by default.

So, what’s an init system? Well, in Unix and Unix-like operating systems (I’ll refer to them as *nix, or just nix) init is the first thing that starts when your computer turns on. It starts everything else (usually things called daemons) that makes your system work. In the past, System V init has been used, that is, there is a program that executes a set of shell scripts in 5 different levels, each of which are started in alphabetical order. Historically stable and portable (working on all *nix systems) it is slow, but powerful.

Recently, there have been calls to replace the default init system in Debian, a historically stable and slow-to-change distribution of GNU/Linux (where distribution means Linux+GNU in a nice package). With this, comes a great debate on what to choose.

On the one hand, there is Systemd. Systemd is fast, and can use dependencies for init scripts (ie, wait for one to finish before starting another). It also makes logging easier, works much faster (for faster boots), and most of all, writing system services is exponentially easier. However, with these benefits come negatives. For one, it is not POSIX compliant, that is, it is specific only to Linux and doesn’t work on any of the other unixes (or unicies, unixen). Additionally, userland applications like logind and udev are now included or explicitly dependent on systemd. Is it ethical for software to be written in such a manner that it only benefits a subset of the community? Is it ethical to ignore alternatives in which all could benefit?

Another option is Upstart. Developed by Canonical (the company behind the popular distribution Ubuntu), it is event-based instead of dependency based. This means that, when events happen on the system, Upstart can react. Originally designed to make Ubuntu boot faster, it offers numerous advantages over a System V init system. However, in order for people to contribute, Canonical reserves the right to relicense their work later under a closed source license. Although Upstart could work on multiple platforms, it hasn’t been done in the past so it would require work. Is it ethical for a software project to require that contributions be allowed to be re-licensed under whatever they please?

A final option is openRC. POSIX compliant, and fast, it offers most of the advantages of a System V system while also staying minimal. However, it is experimental and as such has been largely ignored by the debate.

As of this writing, the Debian project chose Systemd. Do you think that was the right option? I look forward to comments


One Response to The Great Init Debate