Better Morgue For Ubuntu
Launchpad Entry: https://launchpad.net/distros/ubuntu/+spec/better-morgue-for-ubuntu
Created: 2006-05-29 by LucasNussbaum
This proposal makes the case and outlines the design of a better package morgue (area where old versions of packages are kept), more suited to Ubuntu work than the current solutions.
In many areas of Ubuntu (for example MOTU), an important part of the work being done is about divergence management. Keeping old versions of packages around makes it much easier to do such work, as shown by this example : imagine that the current Ubuntu version of a package is 1.0-1ubuntu1. You have to work on the merge of Debian's 1.0-2. Ideally, you need Debian's 1.0-1, so you get :
- the diff between 1.0-1 and 1.0-1ubuntu1
- the diff between 1.0-1 and 1.0-2
Merging is easy : you just have to compare the two diffs.
Now, if you are unlucky, Debian's 1.0-1 is no longer available. So, maybe, you get 0.9-1. But the two diffs are much bigger, difficult to compare. And you can't know exactly what are the changes made to the Ubuntu version (the changelogs aren't always verbose enough).
So we need the latest common version as a base for our diffs.
How does MoM currently handle this ?
MoM uses several origins for the source packages :
- Debian unstable and testing sources
http://snapshot.debian.net : this service aims at keeping all Debian sources packages. However, it ran into some disk issues last year which hasn't been perfectly fixed since. MoM currently doesn't use it anymore.
- a private morgue maintained by the Debian ftpmaster. It has been out of disk space since november.
So, since last november, MoM has only used Debian's sources.
The main problem with the two morgues is that they aim at keeping all packages. For Ubuntu work, this is not necessary : we only need to keep the versions which are actually useful for us. While snapshots.d.n uses about 2 To, 50 Go should be enough for us, keeping the useful packages for two Ubuntu releases.
The morgue could be implemented as four parts :
- morgue-inject : a script responsible for importing new source packages from various sources into the morgue
- morgue-expire : a script responsible for removing useless source packages from the morgue, based on some clever criteria
- a web interface to browse the available versions
- a client script to retrieve the list of available versions or the source packages.
It would probably require 2 or 3 days of work to make it work perfectly.
- Hardware. Where should such a tool be hosted ?