When comparing SysVinit vs OpenRC, the Slant community recommends OpenRC for most people. In the question“What are the best Linux init systems?” OpenRC is ranked 1st while SysVinit is ranked 5th. The most important reason people chose OpenRC is:
OpenRC follows the UNIX philosophy of 'do one thing and do it well', while it's true that it has more features than sysvinit, it does not stay away from its primary function with unnecessary added features.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Simple to understand
Pro Very stable
Since sysvinit does only one thing (initialize the system) and one thing only, it's very stable and it's impossible for it to fail for any problems unrelated to booting the system.
Pro Better boot time and overall performance
It boots up really fast if you use it on a desktop system.
Pro No feature creep
It is an init system nothing more.
Pro Easy temporary disabling of init scripts
Just rename the script to disable in /etc/init.d, i.e. /etc/init.d/whatever to whatever.disabled to disable the script and rename it back to whatever to enable it again.
Pro Does not stop booting if something fails
It just works, misconfiguration of a third party service wont break booting.
Pro Configuration based in text files, nothing hidden in the system as it can be done with binary configuration files
Pro No feature creep
OpenRC follows the UNIX philosophy of 'do one thing and do it well', while it's true that it has more features than sysvinit, it does not stay away from its primary function with unnecessary added features.
Pro Extremely simple
All configuration is done via shell scripts and symlinks. Shell scripts can then use various specialized utilities to ease the development of init scripts.
Pro Fast
OpenRC builds on top of sysvinit and adds some more useful features (like parallel booting) while still the simplicity that sysvinit is know for. Because of this it generally boots faster than other init systems, especially when parallel booting is enabled.
Pro UNIX-Like
Does one thing and does it well.
Pro Less dependency creep
Using OpenRC does not lock in a distribution by providing specific NON-POSIX extra services which programs then would rely on.
Pro A very balanced compromise
Basically OpenRC doesn't replace SysV init, but rather works with it, providing features that SysV is lacking while taking advantage of its benefits. It's also used by a fair amount of reasonably popular distros and is well supported and developed.
Pro Very efficient on system resources
Uses multi-core and ram very efficiently.
Pro Portable
It can be ported to other UNIX and UNIX-like operating systems.
Pro Flexible and extensible
I can add a new startup script for most cases in under five minutes. The ability to quickly insert new applications into the system is a big help.
Pro Not bloated
Pro Deterministic
It always initializes a system the same way; if OpenRC booted and ran a system properly today, it will boot and run properly tomorrow, and the next day.
Cons
Con Duplicated implementation for every service
Every init script needs to reinvent the wheel for every script: argument processing, start/stop/restart/reload/status/whatever processing, finding/clearing/creating PID files, sourcing defaults, building and setting configuration options, so on and so forth.
Con Can lead to slow boot
Since init starts tasks serially, it has to wait for a certain task to finish in order to start the next one. But when startup processes end up I/O blocked, this leads to considerable delays during boot.
Con Launches a bunch of processes to launch a process
Every init script spawns at least sh/dash/bash, and probably also additional processes such as cat, echo, start-stop-daemon, etc, just to start a single daemon that may not even be needed at the time of boot. This massive overhead results in poor performance, and is a killer for embedded systems.
Con Awkward runtime dependency handling
Comes with a directory tree of symlinks to handle the runtime dependencies with links like S01whatever and K11whatever to start/stop services in a specific runlevel. Writing init scripts that conform to the LSBInit standard of LSB, which does allow to define the dependencies in the script header, doesn't always get you covered.
Con Fragile
Scripts can be broken easily, specially if your machine state changes constantly (like almost all modern computers).
Con Follows UNIX philosophy
Yes. This is a CON. Unix Philosophy was a set of guidelines that pretty much made sense in 60 and 70's machines. Trying to follow that instead of the material reality of computing makes software crippled, barely usable and prone to hit dead ends.
Con Initscripts is not portable
It is virtually impossible to write portable sysvinit-scripts.
Con Hard to write sysv-initscripts
As one needs programming skills (opposed to a declarative style).
Con No socket activation
OpenRC does not have socket activation yet. It will be added in the future though.
Con Not widely offered across distrubutions
From Distrowatch, only ten distributions (of which 8 Linux, 1 BSD) officially support OpenRC, and offer it through their standard repos.