Участник проекта Debian Майкл Штапельберг (Michael Stapelberg) ответил на критику systemd, высказанную другими разработчиками в рамках проведённого в конце мая опроса. В своём блоге Майкл попытался опровергнуть аргументы, традиционно выдвигаемые против systemd.
systemd имеет много зависимостей.
Для опровержения этого аргумента был приведён отдельный документ, включающий в себя список зависимостей пакета systemd и его исполняемого файла. В частности в нём видно, что большинство библиотек уже есть в среднестатистической системе и потребуется очень мало дополнительных библиотек. Также он приводит список возможных проблем с зависимостями:
1. Циклические зависимости.
Майкл упоминает о том, что systemed зависит от DBus, тогда как тот сам должен быть загружен системой инициализации, что потенциально может быть источником проблем. Однако systemd не зависит от dbus-daemon, а использует интегрированную минимальную реализацию.
2. Усложнение кода.
Здесь автор приводит ссылку на фрагмент кода systemd с целью показать его читаемость и простоту.
3. Зависимость от большого количества библиотек.
Автор утверждает, что большинство библиотек уже активно используются такими программами, как DBus, Udev, SELinux, libcap, pcre и т.п., поэтому установка пакета приведёт к установке лишь небольшого числа этих библиотек на обычной системе (всего около 10 пакетов).
4. systemd использует больше памяти, чем sysvinit.
В качестве опровержения этого утверждения, разработчик пишет, что большинство библиотек уже загружено в память и systemd в худшем случае загрузит около 500 кБ дополнительных библиотек, что является небольшой ценой за предоставленные возможности и актуально разве что в нише встраиваемых систем, где systemd всё равно не слишком необходим (примечание переводчика).
systemd перегружен функциональностью и является bloatware.
Майкл отсылает критиков к статье на Wikipedia с определением bloatware как программы, замедляющейся и разрастающейся от релиза к релизу. В качестве контраргумента он утверждает, что systemd работает быстрее, чем sysvinit и занимает памяти всего на 1 мБ больше, а также на то, что функциональность systemd разбита по небольшим отдельным бинарным файлам.
systemd делает слишком много вещей.
Автор согласен с этим утверждением, однако предлагает воспринимать его как положительную черту - это открывает множество дополнительных способов использования, а также использование на широком спектре устройств. Кроме того упоминается, что не обязательно использовать все возможности systemd, которые разбиты по разным файлам и иногда даже разным пакетам.
systemd слишком усложнён.
Здесь Майкл предлагает сравнить монолитное ядро Linux с systemd и микроядро Minix с sysvinit, а также упоминает, что не унифицированные и дублирующие друг друга скрипты на Shell порой более сложны и медленны, а также вызывают больше проблем, чем обычный код на языке C.
Вывод.
Из написанного выше, автор делает вывод - критики systemd во многом правы, но иногда следует посмотреть на вещи с положительной стороны и увидеть, что systemd просто старается сконцентрировать в одном месте усложнённость множества различных init-скриптов, оставив сложности внутри себя, а простой, но в то же время гибкий интерфейс - снаружи. В итоге, упрощается работа мэйнтейнеров пакетов по написанию сервисных файлов (аналог скриптов инициализации) и предоставляются целостные и надёжные средства для управления сервисами. Systemd заметно отличается от sysvinit, а альтернативные подходы первое время часто кажутся усложнёнными. То, что systemd потребляет больше ресурсов, чем sysvinit, компенсируется задействованием данных ресурсов для учёта большей информации о сервисах, а более детализированный контроль состояния позволяет администратору более глубоко контролировать работу служб.
systemd имеет много зависимостей.
Для опровержения этого аргумента был приведён отдельный документ, включающий в себя список зависимостей пакета systemd и его исполняемого файла. В частности в нём видно, что большинство библиотек уже есть в среднестатистической системе и потребуется очень мало дополнительных библиотек. Также он приводит список возможных проблем с зависимостями:
1. Циклические зависимости.
Майкл упоминает о том, что systemed зависит от DBus, тогда как тот сам должен быть загружен системой инициализации, что потенциально может быть источником проблем. Однако systemd не зависит от dbus-daemon, а использует интегрированную минимальную реализацию.
2. Усложнение кода.
Здесь автор приводит ссылку на фрагмент кода systemd с целью показать его читаемость и простоту.
3. Зависимость от большого количества библиотек.
Автор утверждает, что большинство библиотек уже активно используются такими программами, как DBus, Udev, SELinux, libcap, pcre и т.п., поэтому установка пакета приведёт к установке лишь небольшого числа этих библиотек на обычной системе (всего около 10 пакетов).
4. systemd использует больше памяти, чем sysvinit.
В качестве опровержения этого утверждения, разработчик пишет, что большинство библиотек уже загружено в память и systemd в худшем случае загрузит около 500 кБ дополнительных библиотек, что является небольшой ценой за предоставленные возможности и актуально разве что в нише встраиваемых систем, где systemd всё равно не слишком необходим (примечание переводчика).
systemd перегружен функциональностью и является bloatware.
Майкл отсылает критиков к статье на Wikipedia с определением bloatware как программы, замедляющейся и разрастающейся от релиза к релизу. В качестве контраргумента он утверждает, что systemd работает быстрее, чем sysvinit и занимает памяти всего на 1 мБ больше, а также на то, что функциональность systemd разбита по небольшим отдельным бинарным файлам.
systemd делает слишком много вещей.
Автор согласен с этим утверждением, однако предлагает воспринимать его как положительную черту - это открывает множество дополнительных способов использования, а также использование на широком спектре устройств. Кроме того упоминается, что не обязательно использовать все возможности systemd, которые разбиты по разным файлам и иногда даже разным пакетам.
systemd слишком усложнён.
Здесь Майкл предлагает сравнить монолитное ядро Linux с systemd и микроядро Minix с sysvinit, а также упоминает, что не унифицированные и дублирующие друг друга скрипты на Shell порой более сложны и медленны, а также вызывают больше проблем, чем обычный код на языке C.
Вывод.
Из написанного выше, автор делает вывод - критики systemd во многом правы, но иногда следует посмотреть на вещи с положительной стороны и увидеть, что systemd просто старается сконцентрировать в одном месте усложнённость множества различных init-скриптов, оставив сложности внутри себя, а простой, но в то же время гибкий интерфейс - снаружи. В итоге, упрощается работа мэйнтейнеров пакетов по написанию сервисных файлов (аналог скриптов инициализации) и предоставляются целостные и надёжные средства для управления сервисами. Systemd заметно отличается от sysvinit, а альтернативные подходы первое время часто кажутся усложнёнными. То, что systemd потребляет больше ресурсов, чем sysvinit, компенсируется задействованием данных ресурсов для учёта большей информации о сервисах, а более детализированный контроль состояния позволяет администратору более глубоко контролировать работу служб.