Ideas

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.

Preliminaries

Before you get involved

If you wish to get involved, please advertise your desire to work on one of the items below before you start on it by either contacting me privately, or announcing it on the Upstart Mailing List.

Please also follow the process on the Contribution page.

Finally, take a look at the Upstart Cookbook, specifically the section on Upstart Development.

Ideas

Large

  • Custom actions (bug 94873)

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

  • upstart-file-bridge (jodh - DONE)

    • (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 to fully clear the job).

    • Syntax could be something like "initctl stop --force <job>"

    • Requires proc connector (causes LXC issues) or cgroups.
  • [PRIORITY] Overcome ptrace limitations (XXX: actually "done", but not landed - https://code.launchpad.net/~jamesodhunt/upstart/bug-530779/+merge/197080)

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

    • stage 2: track all PIDS for every job process.
    • stage 3: make use of cgroups
      • 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)
  • Temporal events (cron-like "upstart-time-bridge")

    • Code exists for this in the form of a command-line utility, kindly donated by Scott James Remnant.
  • Complex start/stop on conditions
    • "init: using 'and' operators can cause hangs" (bug 447654)

Medium

  • Improve documentation
  • [PRIORITY] Disabling of jobs (partially progressed)

  • SysV chkconfig-like script to identify which jobs will start in which runlevels
    • (INPROGRESS)
  • New Stanzas
    • 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) (xnox: INPROGRESS - lp:~xnox/upstart/reload-signal)

  • seccomp stanza?

  • clone stanza?

  • Event globbing
    • ("start on foo*")

  • "pure Upstart shutdown"
    • Requires bug 750113 to be fixed. (currently, /etc/init.d/sendsigs handles shutdown)

  • "console" stanza

    • Add "console syslog"

    • Allow combinations of "console" parameters, namely:

      • "console log, output"

      • "console log, syslog"

      • "console syslog, output"

  • Internal event log
    • Ability for Upstart to record events as they are emitted, dump the list and enable/disable recording.
      • Need the following "initctl" commands:

        • "initctl eventl-log start"

        • "initctl eventl-log stop"

        • "initctl eventl-log show"

        • "initctl eventl-log clear"

      • Need the following command-line arguments:
        • "--no-event-log" (don't auto-start event log)

        • "--disable-event-log" (entirely disable the feature)

Small

  • Fix the daily upstream build bug (requires debugging the test suite): (jodh: DONE)

  • Improve SysV handling+integration
    • Emit starting/started/stopping/stopped by adding "initctl emit" calls to "/etc/init.d/rc".

      • Interestingly, Centos 6 already does this.
  • 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). However, this problem will go away for Ubuntu Raring when we enable user jobs (which allow most privileges, and present sane error messages if the user attempts something they shouldn't).
  • Ability to send arbitrary signal to a job
    • ("initctl kill -<signal> <job>")

  • Any Upstart bugs tagged "bitesize" on http://bugs.launchpad.net/upstart and http://bugs.launchpad.net/ubuntu/+source/upstart

  • post-start issue
    • "init: post-start can cause respawn to hang" (Bug 711635)

  • pre-stop issue
    • "init: restart command fails to restart main process when pre-stop stanza exists" (Bug 703800)

  • add "EXIT_STATUS", "PROCESS" and "PROCESS_PID" (bug 1082649) event variables for all stopping and stopped jobs.

Unknown

  • Improved visualisations
  • Upstart in initramfs
    • LOTS of testing required - QA, community, etc.

    • Requires changes to stateful re-exec branch (which will have to happen for Ubuntu Raring for other reasons).
  • Suspend/Resume events
  • Improved sound device events (for example, start a job when headphones plugged)
  • Network events (for example, start/stop jobs when you connect to an open wifi network)
  • D-Bus signals (upstart-dbus-bridge) (jodh - DONE)

  • dconf/gsettings changes (upstart-dconf-bridge) (jodh - DONE)

  • cron-like temporal events (upstart-time-bridge)

Job Tasks

  • Migrate LAMP-type well-known services from SysV to Upstart. Examples:
    • NFS
    • DHCP
    • KRB5
    • DNS
    • NIS

There's more!

If none of the above look interesting, please take a look at the bugs and get involved!

References

blueprints

Note that not all of these are still relevant but they provide some good contextual hints to the tasks above.

Upstart/Ideas (last edited 2014-07-23 15:16:59 by host-92-18-44-2)