Initial commit.
[oweals/dinit.git] / TODO
1 * Documentation including sample service definitions
2 * if PID = 1, don't interpret comnand line args as services to start (except for
3   "single").
4 * if PID != 1, choose a more sensible service definition directory
5   (something like $HOME/dinit.d)
6 * Support "virtual" services (so you don't have to have "scripted" services where
7   where the script is /bin/true)
8 * Better error handling, logging of errors
9 * Implement a control utility to start/stop services after dinit has started
10 * Allow command-line arguments to service processes
11 * Allow logging tasks to memory (growing or circular buffer) and later
12   switching to disk logging (allows for filesystem mounted readonly on boot)
13 * Rate control on process respawn
14 * Maybe re-implement "shutdown" ("halt", "reboot") from util-linux to better work
15   with dinit.
16 * Support recognising /etc/init.d services automatically (as script services, with
17   no dependency management - or upstart compatible dependency management)
18 * Write wtmp entry on startup (see simpleinit)
19 * Allow running services as a different UID, resource limits, chroot, cgroups,
20   namespaces (pid/fs/uid), etc
21 * Should services be started in a new session (setsid()?) and/or process group
22   (setpgid()?)
23 * Make default control socket location build-time configurable
24
25 Later:
26 * Place some reasonable, soft limit on the number of services to be started
27   simultaneously, to prevent thrashing. Services that are taking a long time
28   to start don't count to the limit. Maybe use CPU/IO usage as a controlling
29   factor.
30 * Cron-like tasks (if started, they run a sub-task periodically. Stopping the
31   task will wait until the sub-task is complete). These don't need to be
32   special service type, just have dinit handle cron entries which specify when
33   a particular service needs to be started (and have it not auto-restart).
34 * Allow binding AF_UNIX sockets and when receiving connection to them, start some
35   service which implements that service eg:
36    /dev/log -> syslog service
37    /var/run/mdnsd -> mDNSResponder (mdndsd)
38 * Allow to run services attached to virtual tty, allow connection to that tty (ala "screen").
39 * SystemD-like handling of filesystem mounts (see autofs documentation in kernel)
40
41
42 Investigate:
43 * What's the best TERM setting? gogetty gives me "linux" but I think other variants may be
44   better.