Upstart roadmap

Registered by James Hunt on 2012-05-02

(Renamed from foundations-q-upstart-roadmap)

= Summary =

General discussion on the direction Upstart is heading in.

= Ideas =

- interactive boot.
- full Upstart and SysV segregation (+ Upstart controlled shutdown).
- event log for problem determination.
- 'initctl kill <signal> <job>'
- enabling user jobs.
- introducing user job logging.
- mountall plans.
- custom actions.
- cron replacement.
- conditional start/stop on condition, based on whether a particular job is available for. Examples being:
  - dovecot+postfix
  - nis+autofs
- ...?

= References =

- https://wiki.ubuntu.com/Upstart/Ideas
- https://lists.ubuntu.com/archives/ubuntu-devel/2011-June/033402.html
- https://lists.ubuntu.com/archives/upstart-devel/2011-August/001707.html

= Blueprints =

- https://blueprints.launchpad.net/ubuntu/+spec/foundations-q-upstart-service-readiness
- https://blueprints.launchpad.net/ubuntu/+spec/foundations-q-upstart-overcome-ptrace-limitations

- https://blueprints.launchpad.net/ubuntu/+spec/foundations-p-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-roadmap

Blueprint information

Status:
Not started
Approver:
Steve Langasek
Priority:
Medium
Drafter:
James Hunt
Direction:
Approved
Assignee:
James Hunt
Definition:
Approved
Series goal:
Accepted for raring
Implementation:
Not started
Milestone target:
None

Related branches

Sprints

Whiteboard

From the etherpad...

Welcome to Ubuntu Developer Summit!
#uds-p #track #topic
put your session notes here

= userjobs =
 for user events, you have to start a user session in upstart
 * this already exists, as opt-in
 * should we enable this by default?
* prefix job names in the display (initctl limitation)
* "console log" does not work in user job - will gracefully degrade to "console none".
  (code is 99% done, but not yet packaged (missing tests too).
* two logins by the same user, should we have two jobs?!
* user jobs should support multiple sessions
* ability to run login shell for user jobs? currently need to explicitly source ~/.bash* / set DISPLAY for example.
* can a user write an override file for a system job for that user? prolly not! :)
* stateful re-exec required for upgrading upstart/upstart-in-initramfs (covered by another session)
= things to discuss =
* interactive boot.
* full Upstart and SysV segregation (+ Upstart controlled shutdown).
* event log for problem determination.
* 'initctl kill <signal> <job>'
* enabling user jobs.
* introducing user job logging.
* mountall plans.
* custom actions.
= After wrong expect =
* how to recover? with/without rebooting
  (http://upstart.ubuntu.com/cookbook/#implications-of-misspecifying-expect)
* how to prevent this ever happening ? (slangasek has a branch)
  (http://upstart.ubuntu.com/cookbook/#how-to-establish-fork-count)
   (how to establish fork count can be misleading with 'funny' daemons)
= Actions =
[scott] write up what the right way of doing cgroups are (DONE)
          (see https://lists.ubuntu.com/archives/upstart-devel/2012-May/001877.html)
[vorlon] fix the ptrace branch and land it
create an abstract job/event for primary-display-device (or similar) to avoid ugliness currently having to be specified by plymouth* and lightdm*.
- review existing jobs with >3 events for start/stop on conditions since signifies overly-complex
  condition (lightdm, plymouth*, udev-fallback-graphics, etc)
= priorities =
 The Ptrace Problem™
 stateful restart

 = upstart re-exec and state dump/load =
 it did exist in the past ~0.3, got dropped due to maintainance cost
There should be a cgroup verb, but we need a formal heirarchy of how cgroups are laid out
(concern: introducing a 'cgroup' verb would be Linux-specific (what about 'oom' too?))
serializing for re-exec: events, jobs, instances, for purposes of forward declaration
libdbus: in the dbus loop call dispatch_message, and once the queue is empty we know we have no state there to care about

(?)

Work Items

Work items:
[scott] Write up what the right way of doing cgroups are: DONE
[jamesodhunt] Work with apw, raof, rancell, cjwatson, slangasek, pitti, etc to understand fully the existing udev events for graphics devices: TODO
[jamesodhunt] Document precisely what graphics-device-added and drm-device-added mean: INPROGRESS
[jamesodhunt] Create a "primary-display-device" event signifying when the primary display device has become available (add it to /etc/init/udev-fallback-graphics.conf): TODO
[jamesodhunt] Add primary-display-device to upstart-events(7): TODO
[jamesodhunt] Simplify lightdm and plymouth-splash upstart jobs to make use of primary-display-device: TODO