Surrounded By Bugs

Dinit final(?) beta!

21 September 2024, #dinit


Summary: Fourth and final(?) Dinit beta release!

It's been way too long since I posted here and gave any updates on Dinit, so I'm very pleased to be able to announce a new release: Dinit 0.19.0, the fourth—and hopefully final—beta release of Dinit. All going well, the next release will be version 1.0.

There were more changes than expected this release. At the time I pushed 0.18.0 out I really thought it would be the final beta before the 1.0 milestone, but a number of contributions rolled in, and I also started to take note of user experience reports that could be found dotted around the web. Most people who try Dinit seem to report a positive experience, which is great! But a few difficulties have been highlighted, such as the difficulty of customising distribution-provided service descriptions without editing the file directly (which is prone to losing the customisations when the package is next updated). Customisation is sometimes useful, typically to adjust command line arguments or other service settings. That, therefore, has been one of the focii of the 0.19.0 release.

In particular there are two new "meta commands" now available in service descriptions: @include and @include-opt, which allow including the contents of another file (the "-opt" variant does not raise an error if the named file doesn't exist). This can be used for customisation in two ways: if the distribution wants to specifically allow for user customisation of a service, they can use @include-opt in their bundled service description to include a (not bundled) file which the user can optionally provide. Also, the user can override a service description file in the usual way (by placing it in a directory which is earlier on the search path than the distributed file—for example, by placing it in /etc/dinit.d given that the distribution-provided file resides in /lib/dinit.d) and then use @include to pull in the provided file before overriding some of the settings within it.

For additional ease of customisation, some service settings can now be appended to rather than just completely overridden. This includes the command setting, meaning that it is relatively easy to add additional arguments to any previously specified command:

command = /bin/echo one two
command += three

It's my hope that these two features—including files and appending to commands—will together make service customisation relatively easy. But, there are a whole raft of other minor new features and changes in this release—see the release notes for details.

One thing that should be apparent from the release notes is that there have been a particularly large number of contributions from people outside the core team! That is great, though it sees me spending much more time on review and less writing original code myself, which on a personal level is a bit of a shame. It's so good to see, though, that there is such interest in my project. I should specifically mention that Mobin, who has been a co-maintainer for some time, has been doing a lot of good work fixing various issues as well as improving the build and maintaing the CI workflows.

The question of FreeBSD support has cropped up a few times in discussions. Support for FreeBSD (and portability in general) remains an important goal for Dinit. However, I'll note that the FreeBSD project has not expressed any particular interest in replacing their existing init system with Dinit, and it is not something I intend to push for personally. It is of course perfectly possible to install and use Dinit as a service manager on FreeBSD, and if the FreeBSD project did decide that they would like to embrace Dinit as an init system, I would of course welcome that decision!

Dinit receives small but regular amounts of funding from a number of individual sponsors, and this now slightly exceeds the costs (outside of time) incurred by running the project. To all sponsors, current and prior, I remain very grateful for your patronage! It is my intention to submit a Dinit-related talk proposal to the Everything Open conference to be held in January, and if accepted then the cost of attendance will certainly soak up any leftover budget from the sponsorship funds.

Current sponsors include: Paweł Zmarzły (pzmarzly), Wesley Moore (wezm), M. Herdiansyah (konimex), q66, saolof.

As a final note, I'm watching with interest an issue that was opened for the Alpine Linux TSC by Ariadne Conill. While it's far too early to draw any conclusions yet, it does distinctly raise the possibility that it may be possible to use Dinit-as-init (as one of several options) with Alpine, in a semi-official way, at some point in the future.