Ideas

Revision 1 as of 2011-11-24 13:52:23

Clear message

List of ideas for Upstart, broken down by perceived size of effort.

Note that some features may appear to be in the wrong section, but consider that (where possible) every feature introduced needs comprehensive tests (atleast unit/functional tests, ideally also with system/scenario tests). The effort to produce such automated tests is significant, and this is reflected in the category.

Large

* custom actions (bug #94873)

  • ("initctl custom <action> <args...>" coupled with new 'action' stanza).

* upstart-file-bridge

  • (inotify bridge to allow jobs to be started/stopped when particular file activity occurs)

* 'user' and 'group' stanzas for PAM (for 'limits.conf') * [PRIORITY] Ability to kill "stuck" jobs (bug #406397)

  • (where either .conf file has been deleted, or 'expect' stanza mis-specified. Currently, you have to reboot!). Syntax could be something like "initctl stop --force <job>"

  • Requires proc connector/cgroups, both of which cause problems for LXC

* [PRIORITY] Overcome ptrace limitations

  • stage 1: track exits
    • ('expect exit <n>')

  • stage 2: track all pids
  • stage 3: make use of cgroups
    • (Note: this would cause problems for LXC!)
    • alternatively, use proc connector, which also does not work inside LXC
    • the LXC problems are upstream LXC bugs; LXC agrees that they should be fixed

* interactive boot

  • ([still] INPROGRESS - careful testing required)

* [PRIORITY] Proper re-exec handling

  • (to allow safe upgrade of init and correct hand-over should upstart be added to initramfs)

* Temporal events (cron-like bridge)

Medium

* Improve documentation

* [PRIORITY] Disabling of jobs (INPROGRESS) * SysV chkconfig-like script to identify which jobs will start in which runlevels

  • (INPROGRESS)

* New Stanzas

  • [PRIORITY] 'setuid' and 'setgid' to allow system jobs to run as different user/group
    • (test using fakeroot)
    • 'mkdir', 'chown' and 'chmod' stanzas
      • (would reduce need for 'pre-start')
  • 'reload signal <signal>'

    • (Ability to specify arbitrary signal for reload rather than default SIGHUP)

* Event globbing

  • ("start on foo*")

Small

* enable user jobs * Make use of socket bridge

  • (primarily a Server (Team) consideration) Would simplify portmap daemon

* Disable socket bridge by default on desktop (unlikely to be used! Smile :)

  • (Maybe put upstart-socket-bridge into a separate package to make this easier) cjwatson recommends we avoid this since it would confuse users who would have to / complicate packaging

* Improve SysV handling+integration

  • emit starting/started/stopping/stopped by adding 'initctl emit' calls to /etc/init.d/rc
  • "pure Upstart shutdown"
    • Requires bug #??? to request upstart does not start any new jobs
      • (currently, /etc/init.d/sendsigs handles shutdown)

* Minor improvements

  • Change initctl so that it gives a sane message if a privileged command is run by a non-root user
    • (currently gives cryptic dbus error)

* Ability to send arbitrary signal to a job

  • ("initctl kill -<signal> <job>")

Unknown

* Upstart in initramfs

  • LOTS* of testing required - QA, community, etc. Possibly too major a change for LTS?