DynamicMirrorDecisions

Revision 3 as of 2006-11-06 02:44:10

Clear message

Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

Summary

We would like Ubuntu to be able to ask for mirror recommendations and make efficient decisions as to which mirror to use - and to be able to do this after installation, as the mirror network expands and changes over time. Launchpad will hold the server-side data needed to inform any given desktop / server about it's recommended mirrors, and systems will in turn be able to tell Launchpad what they experience when interacting with those mirrors. The goal is to make the whole mirror infrastructure more dynamic.

Rationale

In order to keep an Ubuntu system up to date it is necessary to periodically download updates from the Ubuntu archive. Currently, users are only presented with the option to use a limited number of the mirrors of the Ubuntu archive that are available on the Internet. Typically, the longest part of an update is downloading new packages from the archive. The mirrors that are currently presented to a user may not be the fastest mirror available. Providing users with a tool to find mirrors and determine their speed based on a user's network access might allow for faster package downloads.

Use cases

  • Bob wants to speed up package downloads for his computer with Ubuntu installed. Using a tool on his computer he retrieves a list of mirrors from Launchpad which is displayed to him sorted by the physical location of the mirror server. Bob picks several mirrors and the software conducts tests on the mirror to determine the approximate speed of file transfers from a mirror to Bob's computer. After testing mirrors Bob picks the fastest mirror and his sources.list file is automatically updated to use his choice.

Scope

This specification requires adding additional functionality to Software Properties and also ensuring that format of the mirror information in Launchpad is standardized.

Design

The user will need an application to retrieve the Ubuntu mirror list, test the speed of different mirrors, and update sources.list with the mirror that the user chooses.

Launchpad will have to ensure that mirror data is presented to clients in a standard way. Currently Launchpad only offers mirror information as a web page. It would be more efficient if the list of registered mirrors was offered as an RSS feed or some other format that is easily parseable.

Implementation

Implementation of the spec has already started. There is probably another month of work to complete an implementation suitable for testing.

  • Add code to Software Properties to download the mirror list from Launchpad
  • Create a new GUI for users to browse the mirror list and choose mirrors to test
  • Create a test to determine the approximate download speed for a particular mirror
    • The tool apt-spy on debian downloads the file ls-lR.gz to measure the speed

Code

An implementation is currently in development in the [https://launchpad.net/people/bmontgom/+branch/update-manager/mirrors mirrors] branch of Update Manager.

Unresolved issues

BoF agenda and discussion

Comments

  • BenjaminMontgomery: the code in the mirrors branch has a start of an implementation of this spec. Features that work are: downloading the list of mirrors from LP (currently parses the HTML of the mirror page), displaying a list of mirrors sorted by country to the user, testing the speed of the mirror by downloading a file, and selecting a mirror to pass back to the main part of Software Properties. For some reason the selected mirror gets passed back, but the GUI isn't updated correctly, sources.list gets updated so I'm assuming this is something I haven't done correctly with pygtk. Finally, I hate the GUI that I made. I would really like some feedback/help on how to make it more intuitive.


CategorySpec