Warning: long post ahead.
Are there any plans to let packages specify that they do not require a
total system reboot to be updated?
The other day, Gnome software prompted me to reboot just to update google
chrome. Given that nothing depends on chrome, and also that the Linux
version of chrome is specifically designed to tolerate having its files on
disk overwritten (
rebooting the whole system seems overkill to ensure a successful update.
Presenting users with an option to restart only the affected processes and
not their whole computer would improve security by reducing the friction
when applying software updates. While restarting a browser is no big deal
because it takes no more than a few seconds to complete and all your tabs
are restored, restarting the computer is far more disruptive. The latter
procedure not only takes much longer but also closes all the other windows
the user has open, and the state of those windows is typically not
preserved across reboots. The average users would likely put off updating
their web browser if they were asked to quit everything they are doing.
On OS X and Windows, user-facing apps typically manage their own updates,
and the well-designed apps make the experience quite painless. For example,
both Firefox and Chrome on OS X download new versions in the background and
prompt the user to relaunch the browser once the update is fully prepared.
The user transitions to the new version seamlessly.
On Ubuntu, Firefox is updated by the system package manager but prompts the
user to relaunch the program if it is running. This is probably
ubuntu-specific behavior and I don't know how it is accomplished or how
robust it is, but that would seem a nice example to follow, at least in
terms of UX, if it could be implemented using general methods.
Just a stupid idea: perhaps one can specify some dbus method that
that applications declaring support for online updates could implement.
Prior to initiating the update process, Gnome software could 1) check to
see if all the applications in the queue have declared support for online
updates (say, in their appdata manifest), and 2) call said method to warn
each app that it is about to be updated. Each app would then decide how to
proceed; for instance, it could do nothing, ask the user to save and quit
temporarily, or trigger some session-saving mechanism.
In the long term, this issue will undoubtedly be addressed as part of the
push toward frameworks and a clearly defined "base platform". In that
future, the software updater could prompt the user to reboot for framework
updates while giving applications the option to handle some aspects of
their update process.
But is there anything planned for the interim? Prompting users to restart
the system to update a browser seems less than, and the last thing we want
to do is condition users to postpone updates indefinitely like they grew
accustomed to doing on Windows.