Desktop/Whiteboards/UpdateExperienceImplementation

= Implementation tasklist for better update experience =

See requirements and discussion at Desktop/Whiteboards/UpdateExperience.

.

Fedora Process

 * Enhancement (anything non-security) updates are scheduled for once a month (at least for core, extras might be more flexible).

Running app (firefox) update (security and enhancement)

 * Separate download process from install
 * Add functionality to yum to detect what packages are currently running (doable at high confidence for c/c++, e.g. scripted plugins are a hard case, ignore for now)
 * PackageKit daemon wraps said functionality
 * For running apps (apps, i.e. open X windows), pk-update-icon shows a dialog indicating they need to be closed (also, window manager adds (Update Available) or something to title)
 * On clicking "Apply", pk-update-icon sends a close request to all windows corresponding to that process it finds (in sequence?) (TODO: standard application dbus interface?)
 * When application is closed, packagekit starts updating that app (+ dependencies)
 * Application is restarted (pick first .desktop file in package? eww. require backporting GNOME Shell application tracker as dbus service?)


 * Other notes: Should block application relaunch during updates too; show the user the updater dialog

Non-running application security updates

 * Similar dialog as above, but without close button?

System updates (security and enhancement)

 * All desktops are logged out, system switches to gdm (or plymouth?)
 * gdm shows updater screen
 * perform a "dependency reboot"; e.g. if kernel/init/dbus, do a full reboot. Otherwise, for system daemons do "service foo restart".

System security updates

 * Similar to running app - if it's on the system it's implicitly running, basically. It's either a crucial library like glibc, a key system daemon like NetworkManager, or a general program like curl that we can't know reliably when it might run.

System non-security updates

 * By default, apply automatically when safe (shutdown/reboot, configurable timeout (one week?)). Note availablity of updates at context switch time (screensaver, gdm).  If configured to prompt, do so of course.