SmallerUpdates

Revision 4 as of 2005-10-25 14:58:51

Clear message

Summary

Smaller Updates - Updates in the form of patches, I think suse is doing something like this? (even great when only as a last resort for dialup users). The new Mandrake 2006 has support for delta rpms (contains the binary difference of two packages). Apparently this is how Mandrake does their online updates now.

Rationale

Users on slow or expensive network connections (e.g. dial-up or GPRS/3G mobile data) may not have time or money to download updates. Since a typical update only changes a subset of the files in the package, there is good potential for offering updates in a more bandwidth-efficient manner.

Use cases

Scope

Design

This topic has been often discussed in the Debian community. See for example [http://lists.debian.org/debian-dpkg/2000/12/msg00000.html this debian-dpkg thread from 2000] and the associated [http://www.tjansen.de/debiff/ .debiff proposal], [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=128818 Debian bug#128818], and [http://zsync.moria.org.uk/ zsync].

(michael.vogt) debian bug #128818 ("WISH: apt-get update using rsync protocol") is fixed in debian/experimental. The apt in it uses a ed-patch mechanism that gives a very good compression rate. Doing diffs for packages (instead of Package/Source index files) is a lot harder and a different mechanism must be applied for that.

(SebWills) I would like to add the following idea: given that the user who is downloading an update to package X already has the previous version installed, but has no particular reason to still have the .deb for the installed version, it would make sense to use a system which could use the installed files as the basis for the diff. Put simply, the "update deb" file would contain checksums only (not contents) for files (except config files) which are the same as in the previous version and are therefore expected to be intact on the user's system. The archive would then need to contain a chain of these "update debs" as well as the full .debs. When updating, a client would determine whether there exists in the archive a chain of "update debs" starting from their installed version reaching to the new version, and, if not, fall back to downloading the full .deb.

Implementation

Code

Data preservation and migration

Outstanding issues

BoF agenda and discussion