I read a lot of stuff about systemd. This new init is a troll generator, many people argue, with or without common sens.

At the beginning it’s OK…

I like the basis of it : launch services or not depending on various states of the machine or events and targets rather than to stick to an ideal. Rather than launching all services at runlevel X (cups, bluetooth…), only minimum are activated, and the rest on demand or because another unit depends of it.

If you are connected to the internet, it can for example launch automatically a NTP.

If you are on battery, it can shutdown all non essential services, like the NTP said previously.

And these can combine !

I find also positively revolutionary their boot approach, with massive parallelization, use of sockets waiting queues.

I believe Systemd implement good philosophy, from Sysinit, but also innovative, and gives it flexibility and efficiency.

Systemd unit files are easier to read and understand than init scripts.

[Unit]
Description=Bluetooth service
Documentation=man:bluetoothd(8)

[Service]
Type=dbus
BusName=org.bluez
ExecStart=/usr/lib/bluetooth/bluetoothd
NotifyAccess=main
#WatchdogSec=10
#Restart=on-failure
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
LimitNPROC=1

[Install]
WantedBy=bluetooth.target
Alias=dbus-org.bluez.service

Around fifteen lines, rather than a hundred ones… For a non essential service ! No need for explanation !

! /bin/sh
#
### BEGIN INIT INFO
# Provides:          saned
# Required-Start:    $syslog $local_fs $remote_fs
# Required-Stop:     $syslog $local_fs $remote_fs
# Should-Start:      dbus avahi
# Should-Stop:       dbus avahi
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SANE network scanner server
# Description:       saned makes local scanners available over the
#                    network.
### END INIT INFO

. /lib/lsb/init-functions

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/saned
NAME=saned
DESC="SANE network scanner server"

test -x $DAEMON || exit 0

RUN=no
RUN_AS_USER=saned

# Include saned defaults if available
if [ -f /etc/default/saned ] ; then
. /etc/default/saned
fi

if [ "x$RUN" != "xyes" ] ; then
echo "$NAME disabled; edit /etc/default/saned"
exit 0
fi

DAEMON_OPTS="-a $RUN_AS_USER"

set -e

case "$1" in
start)
    echo -n "Starting $DESC: "
    start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
        --exec $DAEMON -- $DAEMON_OPTS
    echo "$NAME."
    ;;
stop)
    echo -n "Stopping $DESC: "
    start-stop-daemon --stop --oknodo --quiet --pidfile /var/run/$NAME.pid \
        --exec $DAEMON
    echo "$NAME."
    ;;
force-reload)
    # check whether $DAEMON is running. If so, restart
    start-stop-daemon --stop --test --quiet --pidfile \
        /var/run/$NAME.pid --exec $DAEMON \
    && $0 restart \
    || exit 0
    ;;
restart)
    echo -n "Restarting $DESC: "
    start-stop-daemon --stop --oknodo --quiet --pidfile \
        /var/run/$NAME.pid --exec $DAEMON
    sleep 1
    start-stop-daemon --start --quiet --pidfile \
        /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
    echo "$NAME."
    ;;
status)
    if [ -s /var/run/$NAME.pid ]; then
    RUNNING=$(cat /var/run/$NAME.pid)
    if [ -d /proc/$RUNNING ]; then
        if [ $(readlink /proc/$RUNNING/exe) = $DAEMON ]; then
        echo "$NAME is running."
        exit 0
        fi
    fi

    # No such PID, or executables don't match
    echo "$NAME is not running, but pidfile existed."
    rm /var/run/$NAME.pid
    exit 1
    else
    rm -f /var/run/$NAME.pid
    echo "$NAME not running."
    exit 1
    fi
    ;;
*)
    N=/etc/init.d/$NAME
    echo "Usage: $N {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
esac

exit 0

Then, it smells a bit…

But they fetched many system daemons and commands : cron, log, udev… Why ?

Logs are and should remain plain text files, as it allows for analysis with bare commands like cat, less, grep or forensics tools, online or off-line (mounted as spare disk). Not a weird binary format to be accessed with a specific command of its own !

And the rest…

When I read dev’ leader’s blog, I believe they are going too far ! Clearly, they want to standard all the system, which will lead to few or no place for distributions to work and distinguish.

Actually, this smell… It’s pot ! ? …

And finally, they want to do This !

Going farther than bare software management !

They simply propose a new OS model, following what I wrote few lines up : distributions are going to disappear by standardization, but it’s OK, because the new Linux Made by Systemd Team is there to replace them.

When they write Debian or Arch could adopt this, I believe it’s absurd !

For each software, complete installation of all libraries in their ideal release (the one the dev’ worked with).

This thing, if one implement this, is going to throw gigantic headache to any sysadmin. It will consume so many system resources : disk space (proposal is to barely mount parallel OSes for each important software like KDE or LibreOffice), CPU time (filesystem drivers, which would be massively used there, consume also proc time !)…

Note that they only propose to limit that to /usr. Does it means they will succeed in integrating all the rest in / (which will be the only available tools to debug all that stuff the day where it bugs !) Same time, a big part of the OS is in /usr. Can you image the mess ?

I would like to say : Hey guys, finish your thoughts ! Setup your new revolutionary OS rather than hope distro will implement your stuff, die and suffer criticism while you get the rewards…

And I wonder when Debian & co would fork.

Or would it strength BSDs ?