Hello! Here’s a tiny road map I’ve come up with for dmd.
First I’m hoping to release 0.1 within a couple of weeks, just before Guix 0.5. I’ve added support for power-off/reboot recently, where dmd first stops all the services (yeah, that’s pretty useful ;-)). Other things I’d want for 0.1 is a ‘shutdown’ command, and removing one last use of a Guile deprecated interface (in comm.scm). Then we’ll need to finish runlevel support; dmd is inherently service-oriented (like Upstart), but runlevels are obviously useful in a number of contexts. That could be a goal for 0.2. Several people pointed out how Linux cgroups are cool, and how systemd makes good use of them. The cgroups “API” is essentially a set of text files in the /sys file system [0] (there’s on-going work to implement that interface on the Hurd [1].) Among other things, using it would allow dmd to keep track of all the processes started by a given service. We would first write bindings to cgroups, and then use them to start each service in its own cgroup. We’ll need to be able to react to udev events on Linux-based systems (such as “eth0 is up”, etc.) Services should be able to declare what OS event(s) they’re waiting for. A possible source of inspiration is upstart-udev-bridge [2]. There’s also regular maintenance work to do: coming up with a testing strategy, proper internationalization, perhaps using SRFI-37 instead of args.scm, etc. Comments and patches welcome! :-) Thanks, Ludo’. [0] https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt [1] http://lists.debian.org/debian-hurd/2013/09/msg00062.html [2] http://upstart.ubuntu.com/cookbook/#upstart-udev-bridge
