Oh my god! They are coming!

Yesterday, Michael opened the flood gates and today I finally published what was in my private basement for a while now. So (Keep your kids and servers at home and offline) they are coming - all the cool, useful and nifty stuff included in my patches! 😉

Backports and experimental-user will hopefully find the ReleaseCandidate switching useful. It's a behavior change in APT, but as the previous behavior was a failure I assume nothing will break to badly now - and even if it does, we have a full release circle to fix it. So what does it do? Lets look at an example:

apt-get install grub-pc/experimental -s
Reading package lists... Done
Building dependency tree
Reading state information... Done
Selected version '1.99~rc1-1' (Debian:experimental [i386]) for 'grub-pc'
Selected version '1.99~rc1-1' (Debian:experimental [i386]) for 'grub-common' because of 'grub-pc'
The following extra packages will be installed:
Suggested packages:
  multiboot-doc grub-emu xorriso desktop-base
The following packages will be upgraded:
  grub-common grub-pc
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

So as you can see, apt-get switches automatically the candidate for grub-common to experimental, too, as the grub-pc from experimental demands it (with a versioned dependency). Quite cool as the usual "-t experimental" would cause also dependencies which would be satisfiable by the usual default release to be upgraded to experimental.

And as we are talking about experimental: I experimented with symbol files for libapt and my branch includes some. Far from perfect and they will need a lot of love to be really useful (as a stepstone to a "real" library) but they at least doesn't make the situation worse and solved even a (more) theoretical partial upgrade problem.

Of more practical use for now is the stuff I changed in the acquire system in preparation for bigger changes we will need to finally be able to cleanly download addition metadata. APT uses the clearsigned InRelease file if possible instead of Release and its detached Release.gpg and description translations doesn't need to be whitelisted any longer as APT now downloads the i18n/Index file to see if the translation is available at all.

More cool acquire stuff will properly need an ABI break for so silly reasons as a new virtual method or alike (I tricked a bit so the current stuff doesn't need it). Michael started to enhance this situation by preparing for introducing dpointers (another step to a library) beside introducing 'apt-get download' and 'apt-get changelog'! One step closer to world domination. 😄

If that wouldn't be cool enough by itself now two weeks ago I was at the "Cross-Distro App Installer Meeting" which has the codename "AppStream" now. Very interesting stuff not only because of the metadata someone need to write and download, but also I meet Michael in person (okay, that's kind of normal) but also a long-time debianer with Enrico, who is the "daddy" of debtags and apt-xapian-index. He was very close to convenience me to apply for D{D,M}, but I managed to withstand… The punishment followed closely in form of apt and and the attached discussion to get them approved by the release team - just two weeks before release. I was near to the point of posting a 'How to delay a debian release as a total stranger'. As a D{D,M} the 'he is a nobody'-bonus would have been gone… Which could have been an the last needed bit as my help in smoothing the upgrades of KDE was obviously not enough… 😉

Anyway, another interesting point of these three days was noticing zypper and its underlying sat-solver. So the RPM world has something usable already while we "hope" for mancoosi more or less. In general, listening and talking to the "other side" was pretty interesting. I can't imagine 10 fanboys sitting around a table talking civilized, but developers seems to be really good at it 😛 The RPM-World was quite open to what debian has to offer and we looked with big eyes at what they have. It's strange that you are basically working on the same stuff, with nearly the same environment but without knowing a single bit about the other because they use a different package manager - dpkg vs. rpm -- there are ports of APT available for rpm to enlight the poor souls. 😉

Cross-distribution seems to become (or will hopefully be) the next big thing…

Disclaimer: All new stuff described here is currently only in my branch, but will migrate to the official branch after (hopefully) passing review and therefore be part of an upcoming release of APT (properly 0.8.11) for wheezy. Or to word it differently: This is and will be not available in squeeze!