Patching

Evan eapache at gmail.com
Sat Jan 12 20:41:53 UTC 2008


Currently, when a minor patch is uploaded to the update mirrors, Ubuntu
users must download the entire deb package again. When it is a big package
(say OpenOffice.org) and it is a small patch of just a few lines of code,
this can get somewhat ridiculous. (Update size generally < 50MB)

When Windows/OSX users recieve a patch, they get it in the form of an
execuable (.msi IIRC) which modifies the executable directly. While this
method saves considerable space over our current method, it would impose a
major strain on the package maintainers to create an updater for every
version. (Update size generally < 5MB)

Any change in this area is far too complex for a LTS, however for 8.10 we
have the opportunity to be innovative and create a new patching system
better than that being used by the competition:

Write a new program that is generically designed to modify any binary
according to parameters it is passed. Write a second program that compares
two .deb packages and outputs the parameters the first program would need to
get from version 1 to version 2. (Update size generally < 1MB)

An example would work like this:

   1. A new package called abc is added to the repos at version 1.
   2. Bob installs abc from synaptic.
   3. The creator of abc writes a patch, and packages abc version 1.1 the
   way they do now.
   4. When uploaded, the server that handles uploads compares version
1.1with version 1 and outputs an update file (some sort of xml
format?)
   5. Bob checks for updates, finds that abc has a new version, and
   downloads the update, which is only the xml update file
   6. The installer passes the new binary-update program the xml file it
   downloaded, and the abc binary is updated with the patch.

Pros:

   - No extra work for package maintainers.
   - Extremely tiny updates.

Cons:

   - The method I described can't handle updates to non-binary files
   (help files, icons, etc.) This would have to be integrated somehow.
   - The framework would take considerable effort by the devs to set up.

Overall, I think this new method is definitely a huge step forward. We are
currently behind MS and Apple in this regard, and we have the opportunity
not just to catch up, but to pass them. It would take a lot of work to get
right, but it would be worth it.

Evan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/ubuntu-devel-discuss/attachments/20080112/6a94a4be/attachment.html>


More information about the Ubuntu-devel-discuss mailing list