<> 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 [[JamesHunt|me]] privately, or announcing it on the [[https://lists.ubuntu.com/mailman/listinfo/upstart-devel|Upstart Mailing List]]. Please also follow the process on the [[http://upstart.ubuntu.com/wiki/ContributingCode|Contribution page]]. Finally, take a look at the [[http://upstart.ubuntu.com/cookbook/|Upstart Cookbook]], specifically the section on [[http://upstart.ubuntu.com/cookbook/#development-and-testing|Upstart Development]]. = Ideas = == Large == * Custom actions (bug Bug:94873) ("`initctl custom `" 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 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 `" * 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 `") * 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 Bug:447654) == Medium == * Improve documentation (finish the Upstart Cookbook http://upstart.ubuntu.com/cookbook) * '''[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 ` (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 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``) * https://code.launchpad.net/~upstart-devel/+recipe/upstart-daily * 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 - `") * 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 Bug:711635) * pre-stop issue "init: restart command fails to restart main process when pre-stop stanza exists" (Bug Bug:703800) * add "`EXIT_STATUS`", "`PROCESS`" and "`PROCESS_PID`" (bug 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! * http://bugs.launchpad.net/upstart * http://bugs.launchpad.net/ubuntu/+source/upstart = References = * http://www.mail-archive.com/upstart-devel@lists.ubuntu.com/msg01493.html * https://wiki.ubuntu.com/FoundationsTeam/OneiricPlanning/UpStart * https://bugs.launchpad.net/upstart = blueprints = Note that not all of these are still relevant but they provide some good contextual hints to the tasks above. * https://blueprints.launchpad.net/ubuntu/+spec/server-maverick-upstart-conversion * https://blueprints.launchpad.net/ubuntu/+spec/foundations-o-upstart-for-admins * https://blueprints.launchpad.net/ubuntu/+spec/foundations-p-upstart-convert-main-initd-to-jobs * https://blueprints.launchpad.net/ubuntu/+spec/foundations-p-upstart-for-admins * https://blueprints.launchpad.net/ubuntu/+spec/foundations-p-upstart-roadmap * https://blueprints.launchpad.net/ubuntu/+spec/desktop-q-upstart-session-requirements * https://blueprints.launchpad.net/ubuntu/+spec/foundations-q-upstart-overcome-ptrace-limitations * https://blueprints.launchpad.net/ubuntu/+spec/foundations-q-upstart-service-readiness * https://blueprints.launchpad.net/ubuntu/+spec/foundations-r-upstart-user-session-enhancements