It can start services and take dependencies into account.
It can restart services
It can start services in sync mode (i.e. wait until they terminate,
to get around race conditions for static initializations)
There is a companion utility "msvc" that can be used much in the
same way as the svc from daemontools. Communication works over two
fifos, /etc/minit/in and /etc/minit/out. Those have to exist before
minit is started and they should be owned by root and have mode 600.
There is a companion utility "pidfilehack" that can be used to do
stuff like run ssh, wait a while, read the PID off /var/run/sshd.pid and
tell minit this PID so it will know when sshd exits and can restart it.
It can pipe stdout to a dedicated log process.
Wishlist
(in no particular order)
is able to boot off a completely read-only system (i.e. does not
modify file system) [CHECK!]
contains a robust logging system [CHECK!]
configuration like /var/qmail, not like inittab
(i.e. each option in a separate file, no parsing) [CHECK!]
minimal memory and disk footprint [CHECK!]
dependencies, i.e. a service can specify that it depends on a number
of other services and init will start those automatically. [CHECK!]
static initializations are handled by a separate process (to keep
init memory footprint low). [turned out to be not much code]
an easy way to extract the PID of a given service from minit, so
shell scripts can send signals to daemons. [CHECK!]
an easy way to tell init not to restart a given process [CHECK!]
an easy way to tell init to start an additional service [CHECK!]
By "easy way" I mean that the process is readily automatable, i.e. a
single command line, not that it is especially easy to understand for
Unix newbies.
proton hacked a
truly minimal custom init in x86-linux assembler. Just 2 pages of
memory; one page code, one page stack. He even got rid of the one page
of read-only data that is normally there.