Dinit, the init system systemd should have been

4 min read Original article ↗

Published on 2026-03-06.

systemd is great as an init system, but - as you know - it's not just an init system, it's a behemoth of a monster.

Good software engineering necessitates an effort to determine and understand the requirements of the software you're building. It requires that you know when to stop and not try to do everything.

Besides the fact that the real motivation behind systemd was "political" more than anything, systemd has evolved into a behemoth of a monster with it's tentacles so deeply entrenched into the Linux environment that only few software products haven't been affected by it.

Software that used to run smoothly on BSD either no longer runs or only runs if great effort are put into removing the interdependence on systemd, a dependence that really isn't required to begin with.

The main systemd developer and proponent of systemd, Lennart Poettering, has stated in his blog post The Biggest Myths, that systemd is not monolithic, rather it should be thought of as 69 independent binaries.

A package involving 69 individual binaries can hardly be called monolithic.

― Lennart Poettering

The problem is that most of these so-called "individual binaries" has functionality that will not work without the other systemd components. If systemd truly had different and independent parts that could be "plugged" in or not, then maybe it could be acceptable, but the mess systemd is from a software engineering point of view, makes the Linux distributions that depend on it resemble Microsoft Windows and MacOS more than anything else.

Now, had systemd stayed being just the init system it originally was, it would perhaps had been as Dinit is today!

Dinit is a service manager and supervision system, which can also function as a system manager and init.

Dinit is:

  • Written in portable C++ code. It compiles and runs on a variety of Unix-likes (Linux and various BSDs).
  • Designed to work with other system components, rather than replace them (contrary to systemd).
  • Truly compact (yet it still contains a useful set of relevant features).
  • Really robust as it is designed and written with a focus on being secure and correct from the beginning.
  • As easy to use as systemd, it has simple configuration syntax and control commands.
  • Well documented with extensive manual pages.
  • Open Source, distributed under the Apache License version 2.0

As it says on the Dinit website, it fits very well in the middle ground between extremely simple supervision suites and the more complex service managers.

I decided to change my init system on my Linux distribution to dinit a while back and I have been doing a lot of testing with it since. It fulfills all the promises it makes and it is what systemd originally was set out to be, before Red Hat went nuts.

If you want to give Dinit a try, I recommend you install Artix Linux and try it out on that.

From my experience, running Dinit makes service management as easy and as comfortable as it is with systemd, yet without all the other crap you don't need.

With Dinit you get all the improvements systemd made from the old SysV init, but unlike systemd, you're now fully able to setup a system following the Unix philosophy and at the same time, avoid the big attack surface systemd also drags in.

As is stated on Chimera Linux's website:

Dinit provides the service manager and init system for the OS. It’s a lightweight, dependency-based (unlike e.g. runit), supervising (unlike e.g. sysvinit) and portable (unlike systemd) system with a good balance of features to simplicity and ease of use/deployment (unlike e.g. s6) and Chimera uses it extensively for both system and user services.

I hope that in the future, the major Linux distributions will consider Dinit as an alternative to systemd. Dinit was the init system that was missing in the past when the big systemd controversy happened.

Relevant reading