Thursday, August 26, 2010

Systemd in Gentoo

A lot of folks are raving about the next generation in init systems (aka systemd), and how it's (almost certainly) going to be the default init system for Fedora 14 (paid article, subscribe to LWN to read! [or wait a week]). It also seems that OpenSuse will be moving to systemd sometime in the near future (don't take my word for this though), and Debian has at least considered it. It is also well-known that Ubuntu will not be using systemd for the foreseeable future.

So where is Gentoo in all this? Our current init system is baselayout-1 in the stable tree, and openrc in the ~arch tree. The maintainer-wanted bug for systemd has been quite active with users posting preliminary ebuilds for it. The bug itself currently has >30 folks CCed (including me), and 86 votes. So users are definitely very interested in seeing systemd in Gentoo. However, it will take a lot of work before systemd can enter portage even as a masked ebuild.

Even after systemd enters portage, it is extremely unlikely that it will become the default init system for reasons that are listed below. Some developers are strongly in favour of moving from baselayout-1 to systemd, while some think it's a pile of crap that Gentoo should stay far away from. Neither of these opinions is shared by the majority of Gentoo devs. (that includes me :-)

In all likelihood, the end result will be that openrc will finally go stable (replacing baselayout-1), and if any developers are willing to spend the massive amount of time and effort required to make systemd usable in Gentoo, systemd will become an optional init system, strongly recommended for desktops/laptops.

Now why can't we throw out baselayout-1 as well as openrc and just use systemd? I was going to make a full list of the reasons, but as I was making it, I realised that I don't know enough details about systemd's requirements, what all it provides, what parts of Baselayout would need to be rewritten, how much porting of the tree (and systemd) would be needed, etc. So instead of hand-waving, I'll just list "needs several volunteer developers" as the blocker for now :)

I'm tempted to list myself as a future volunteer, but I won't do such a thing yet. Rest assured that if I do end up working on this, I'll be sure to blog about it. Although it is probably just a matter of "time" ;)