To speed up the download of updates debdelta is added as a optional way to get package updates.
With the new debdelta support the updates that needs to be downloaded will be much smaller and therefore quicker to download. This benefits users with slow network connections.
When using a slow network connection getting deltas instead of the full update saves a lot of bandwidth.
Aaron uses a slow 3g connection. He is pleased that downloading the updates takes only half the time then before.
Bonnie is using a internet plan that charges by the downloaded data size. She is happy that downloading the updates cuts her costs.
There are two parts to implement this. First there needs to be a server side component that provides delta packages for Ubuntu. Additionally the client side should be improved in order to integrate into libapt directly.
The design of debdelta itself is described in great detail here: http://debdelta.debian.net/html/index.html
Eventually the deltas should be stored on archive.ubuntu.com so that they get the benefit of getting mirrored. The natural place is the pool/ directory. This requires changes to soyuz in Ubuntu (and dak in Debian) that are non trivial and needs input about a timeline from the launchpad developers.
Therefore a initial server side implementation will be hosted on a separate machine (debdeltas.ubuntu.com) with a separate signing key. This server will use the proof-of-concept work that Thorsten Spindler put into this already.
This approach has several drawbacks:
- no mirror support, so probably slow for people in e.g. australia
- uses a different signing key
- more complicated logic in the client to get deb/delta from different places
Client side work
There is no need to do any client side work for basic support of deltas. Debdelta provides a tool called "debdelta-upgrade" that will do all the required steps.
However as this tool lives outside of apt/libapt it does not integrate into our standard tools like update-manager/apt-get. To fix this apt itself needs to become debdelta aware. The details for this are described in DebdeltaAptIntegration.
With debdelta integration in libapt there is no need for any UI changes or any changes in upper level components (python-apt, update-manager, packagekit, synaptic, ...).
- indexfile format for deltas or integration into main Packages.gz
- timeline for launchpad integration
- provide a sha256 of the uncompressed deb? currently the sha is build against the compressed deb, but that causes a unneeded compress/uncompress just for the signature checking