PROPOSAL: "Staging Areas"
Hi,
There has been a lot of discussion about gtk/gnome and unstable.
Because of the huge numbers of dependencies and dependant packages,
gtk and gnome have been introducing a lot of instability into
"unstable". This is largely due to the fact that we are trying to
track something that is under active development, in which binary
compatibility is often broken.
We can isolate the breakage by incrementing sonames and using
dependencies, but it's almost impossible to get everything to work
together nicely when we are mixing so many different versions.
One proposal has been to assemble all the packages that depend upon a
certain gtk/glib/imlib/gnome combination outside of 'unstable', and
only put them into 'unstable' when all the packages are known to work
together.
This is a good idea. I'd like to propose a mechanism for facilitating
this.
The idea is this:
* Have a facility for creating multiple parallel distributions to the
unstable distribution. Each one of these parallel distributions would
be a "staging area" for assembling packages that would break
compatibility if they were uploaded directly to 'unstable'.
* These "staging area" distributions would be created automatically by
dinstall when a package is first uploaded to one of them.
For example,
Imagine glib 1.1.20 comes out, and it breaks compatibility (it's still
under development, after all). The proper thing to do is to try to
recompile all the applications and libraries which use glib so that they
use the same one. Otherwise we'll get segfaults from mixing the old
and new one together in some cases.
Instead of uploading all the packages one-by-one to unstable, where they'll
break (because they aren't all updated at once), we would use the new
debian-gtk-gnome@lists.debian.org mailing list to agree to upload them
to a "staging area" distribution. This would be done by setting the
distribution to be:
Distribution: staging-glib-1.1.20
(instead of "unstable")
When dinstall is run on the Incoming queue, it would put the packages
into:
dists/staging-glib-1.1.20/....
The dinstall program could be modified so that it would automatically
create a new "staging area" distributions whenever it saw a package
destined for a distribution named "staging-*" than does not yet exist.
Of course, this would have a Packages file, so people who wanted to
use these packages before they were committed to 'unstable' could just
add this distribution to their /etc/apt/sources.list file.
When all the packages have been assembled in the staging area, we
could then dump all of those packages into unstable at one time,
and then remove the "staging area" distribution.
That's all my idea is. We are already doing this on an ad-hoc basis
for the following:
* glibc 2.1
* gnome-apt
* xfree86
(probably several others)
It's quite a bit of extra work to do these without using an Incoming
queue, and the standard dinstall routines.
Anyways, I think this facility could be built into dinstall rather
easily, and would be very useful.
Cheers,
- Jim
Reply to: