InstallUpdatesWhenInstallingUbuntu

Revision 7 as of 2009-06-15 17:35:56

Clear message

Summary

ubiquity will grow the ability to download updates while it copies files to the installation target.

Release Note

Updates will now be downloaded while you install Ubuntu, making them immediately available to install upon first login. This will not occur on 3G connections, and users wishing to avoid this feature can disable it when the installation begins.

Rationale

There may be a number of important updates available after installation. However, these could amount to a rather large download, and since we're mostly IO bound during the installation it would make sense to try to start this download then, letting the user finish downloading or start installing the updates once they've rebooted into the new system.

User stories

  • Mark installs Ubuntu 9.10 in March of 2010. As roughly five months have passed since the release, there are nearly 100MB of updates to download.
  • Bob installs Ubuntu 9.10 on a laptop with a 3G modem that he has configured in the live environment. As he pays per megabyte on his data plan, he does not want to download anything until he returns to an unrestricted connection.
  • Luke lives in Australia. As using a non-local mirror would cost him a fortune, he needs to be certain that the installer chooses an appropriate one.

Assumptions

  • If the user has chosen to set up a 3G connection, they have done so using NetworkManager.

  • As this functionality requires a good mirror selection, this specification depends on the GEOIP timezone selection work.
    • While I know that the GeoIP work will be useful here, I don't think this specification depends on it. After all, if this specification weren't implemented, the user would be downloading updates later on from whatever mirror is automatically selected anyway, so this clearly doesn't make it any worse. --ColinWatson

Design

If the "download updates" box is checked, ubiquity will wait 20 seconds, and then tell apt to update the package index files, then start downloading any available updates. If the box is unchecked at any point, ubiquity will stop apt.

+---------------------------------------+
|  Installing system                    |
|  [///////         15%              ]  |
|  Detecting file systems...            |
|                                       |
|  [X] Download available updates now.  |
+---------------------------------------+
  • We will not indicate progress, as this might lead the user to believe that they have to wait for the download to finish before they can reboot the computer.

Implementation

  • This will need to be preseedable, to allow OEMs like Dell who want to keep the installer from attempting to access the Internet.
  • The language pack download functionality that already exists will be merged into this feature, but the language pack installation will be a separate piece that occurs during installation.
    • This reminds me of a subtlety. We probably don't want to have background downloads running at the same time as apt is installing language packs or any of the other things we install using apt. As such, we must arrange to stop and start downloads around any such possible event. I'm not sure whether this would be better done just by bracketing the top-level steps involved with stops and starts, or whether our apt-install wrapper and any cases where we install packages directly using python-apt should take care of it; assuming that stopping and starting downloads is reasonably efficient, then the latter will probably result in a more complete download, but see what works I suppose. --ColinWatson

  • If NetworkManager is present and a 3G connection is active or no network connection is present, the download updates option will be unchecked and greyed out.

    • AlexanderSack suggests using nm-tool for this. D-Bus interfaces are also available if we want to use them, but they're rather more complex.

  • The download will not start until 20 seconds have passed, to allow sufficient time to uncheck the box if this is not desired.
    • 20 seconds after what? My memory of the UDS session is that we said either 20 seconds after the start of the install progress bar (which starts with partitioning) or once copying files has started, whichever is the later. --ColinWatson

  • The download will write package files to /target/var/cache/apt directly, rather than using an intermediary and then copying the files in at the end.
  • When we are done downloading, ubiquity will send SIGTERM to apt.
    • If you're having to stop and start several times around critical sections, then you'll probably also need to wait for apt to exit and then synchronise with the main thread here. --ColinWatson

Test/Demo Plan

  • During development, the user agent will be changed so that we can track whether a large number of people are making use of this feature.

Unresolved issues

This section needs to be gone before the specification can be approved. --ColinWatson

  • Should the download continue until they press either the "continue using the live CD" or "reboot now" button?
    • I can't think of a good reason not to. Can you? --ColinWatson

  • If the updates finish downloading, should the checkbox option remain, disappear, or be replaced with an "updates are ready to be installed upon first boot" message?
    • There seems no justification for leaving it there unmodified. My gut feel is that simply making it disappear would be confusing, but I suppose that would be best run by some usability people. --ColinWatson

BoF agenda and discussion

Has this section been entirely folded into the rest of the specification? If so, it should be removed. --ColinWatson

Preseedable option for Dell.
Move the language pack download in this, moved earlier than 80%.
Actual language pack installing still happens later.
We don't want a progress meter because we don't want to make the user think they have to wait for the updates to finish downloading.
Put as a checkbox on the summary page or the advanced page instead of having a cancel button?
 - AU problem.
GEOIP would let us select a good timezone point and a good local mirror, somewhat limiting the AU problem, though we'd still want to let them disable this download somehow.
Offer a checkbox that's checked by default and says "Download updates while installing" that sits just below the install progress.
You would have to act quickly if you wanted to uncheck the box.
 - We can wait a few seconds, or after partitioning to start.
We may want to explicitly not offer this option at all when on 3G.
 - PackageKit as an example.
 - Default the checkbox as off in this case?
 - Colin to talk to Michael
Fragmentation a problem?
 - "Let the filesystem sort it out"
 - We do lots of things at the same time, this is not an issue.
Measure how often people are using this?
 - Change user-agent.
Announce during milestone, doing this, what do you think?
Colin thinks it will need more than a preseed.
We disable update-notifier on the live cd.
Not start the download until we're at copying files.
Disable the checkbox if NM reports no network connection.
Use subprocess and send SIGTERM to it when done.


CategorySpec