Talk:Comparison of init systems

Dump of comparison table split off from OpenRC
The tabular comparison appears to be biased negatively against sysvinit and upstart. It is copied from the systemd website.

OpenRC bonus features:

Size and complexity
OpenRC (0.9.3): sysvinit + 300 files, ~30k lines, 3.3k posix sh, ~12k C

Upstart (1.5): 285 files, ~185k lines, ~97k C

Debian: sysvinit + 120 files, 5.8k lines

systemd (v44+): dbus + glib + 900 files, 224k lines, 125k C

sysvinit: 560kB, 75 files, ~15k lines

D-Bus: 11MB, ~500 files. 300k lines, 120k C

glib: 72MB, ~2500 files, ~1.7M lines, ~430k C

Debian startup is smallest, it's only shell with sysvinit (C) as dependency

Upstart is about 10 times bigger in terms of lines of code/text. Most of the extra complexity size comes from C.

OpenRC is about twice as big as debian startup. The size difference is mostly the OpenRC core written in C, which expands the footprint from ~3k LoC to ~15k LoC compared to shell.

systemd is about 10 times bigger, like upstart. But with the mandatory deps it blows up to about one hundred times the code footprint! Most of the extra code is in mandatory dependencies, but the systemd core is also bigger than anything else.

OpenRC parallel startup is an unstable feature
Acording to this comment on bug #391945:

"rc_parallel has always been considered an unstable feature of openrc. There was a very clear warning in rc.conf thatsetting rc_parallel=y can lock up your boot process.

rc_parallel=y is only to be used currently by developers and users who are willing to test the feature, and bugs against it are not considered release blockers.

I recommend removing any rc_parallel lines from your rc.conf unless you are comfortable with this risk."

I would like to change the "Yes (optional)" entry on the Parallel service startup / OpenRC cell, to "Yes (unstable)", with a link to the bug, if no one disagrees.

Update (version 0.12 and higher) The recent version of the OpenRC works with parallel setup quite nice, however there are exists corner cases in which OpenRC fails to work properly. In most of the cases problem is in init scripts themself and that are fixed when got discovered. Also openrc doesn't break dependency cycles well.