a bad taste in the mouth: detailed Ubuntu patch review

Mark Shuttleworth is fond of saying "every Debian developer is also an Ubuntu developer". This Ubuntu developer feels somewhat unempowered and turned off by some of the things that appear in Ubuntu's versions of software that I maintain for Debian.

I took another look tonight at the omnibus patches, incorporating up to 1+ years worth of changes both relevant to Debian and not, that are the only way Ubuntu feeds most of their value added modifications back to Debian. Since Ununtu's patch archive still doesn't adhere to the standard convention of sorting packages by maintainer, I used the alternate archive provided by "utnubu", which does.

I maintain 40 or 50 packages for Debian, and of those, Ubuntu modifies 7 now. Last time I looked it was 3. Here's what's in those 7 patches.

  • aalib's only change is to the changelog. They started to do things differently and changed their minds.

  • base-config's patch is enormous. 53 thousand lines 1.8 megabytes. I have tried to pick the good bits from the patch before, but I gave up long ago, it's just not usable.

    Making base-config generally useful to distributions other than Debian is a pretty hard problem, and I decided a while ago that the correct solution was to refactor it all into d-i. To the extent that it helped me make that decision, seeing this patch has been useful, but that's all.

  • bsdgames has some minor changes to add new acronyms to the wtf command.

    To make these changes they have for some reason converted the package to use the loathsome dpatch. Use of dpatch and kin are considered harmful by most people who NMU large quantities of packages for issues such as security. bsdgames containes sgid binaries, although I've audited them. Seeing one of my packages use dpatch was a sledgehammer blow, but I eventually continued on.

    The meat of the 216 line patch is adding 18 acronyms, of these --

    • 1 seems suitable for Debian, but not upstream.
    • 4 seem suitable to be added upstream.
    • 8 are non-acronym abbreviations for common words (ie, IM-speak), and thus out of scope for the wtf command, which according to its man page "translates acronyms for you". Ie, they're added bugs.
    • 2 are incorrectly spelt acronyms (it's FOAD, not FOD, and I am happy to be able to use the expression in this blog entry thankyou).
    • 1 is Ubuntu specific.
    • 2 I have no idea about.

    It's worth noting that my bsdgames packages does not add any acronyms, because I prefer to contribute such changes directly to upstream. My involvement in bsdgames began with porting it from a.out to elf, a little while ago; and excluding the debian/ directory, the whole Debian patch is only 135 lines. I last sent a detailed breakdown of the contents of the Debian patch to upstream about 2 months ago; I do it periodically to keep the patch down. Ubuntu has never contacted me regarding the larger (and uglier) patch they have accumulated in the past 7 months.

  • debconf is notable in being maintained as much (or more) by an Ubuntu co-developer in Debian as it is by this Debian developer. I really appreciate his work. That said, the Ubuntu patch has some notable bits:

    • They modify the default debconf priority to high in several places. This is a bit weird since it actually defaults to high in newly installed Debian systems too, without those mods.
    • Ubuntu branding seems to call for commenting out the Debian logo even if you don't have a replacement Ubuntu logo handy.
    • Some gorgeously nasty hacking of dpkg-preconfigure. I think this is the best bit:

      exec "echo" or print STDERR "This is an amazing workaround that needs to be here!\n";

  • Ubuntu's modifications of debhelper give me hives. Here is a program that, unmodified, is able to built nearly every package in Debian, and to which every divergence has the potential to break something or other, and yet Ubuntu for some reason needs to change it.

    The patches include:

    • Running scrollkeeper-update -q >/dev/null 2>&1. As if scrollkeeper-update -q not being quiet wouldn't be a bug. As if errors don't matter.
    • Build-Depending on file, a utility that debhelper does not use, AFAIK.
    • Some modifications to where X fonts are installed.
    • Modifications to where X man pages are installed, patch accepted.
    • Strange modifications to code dealing with /usr/X11R6/bin. AFAIK /usr/bin/X11 is a symlink to that directory so I don't see the point of moving things to there.
    • The worst bit is the striptranslations hack. If this program happens to be available, Ubuntu debhelper will run it at some point during a package build. That works ok until Debian adds a pkgstriptranslations that does something else and someone mix-n-matches software.

      I've pointed out to Ubuntu before that this is an accident waiting to happen; they have ignored me.

  • The rbscrobbler patch patch is another dpatch between the eyes of good packaging practice. In another potentially security sensative application. (Which I've not really audited much.) Aside from that it seems to change some icons. Oh, and it does this:

    • Closes Malone #2925:
      • Connect the activate event of the password field with the btnOk_clicked callback

    I have no idea how to find "Malone #2925". It's not in their bugzilla. Does Ubuntu have multiple BTSes? The patch seems like it might apply to the Debian package, if I could tell what the bug was.

  • The xaos patch is weird. And uses dpatch, grrrrrrr!

    Apparently this patch includes a merge of some upstream or third-party patches. But there is no indication of this at all in Ununtu's changelog.

    It's a huge patch with who knows what all in it.

  • The xgalaga patch makes it build-depend on libdnet-dev. I don't know why.

    They include a second copy of the xgalaga-icon.xpm in the Debian directory. Hey guys, the same icon is one directory down, you knwo?

I'm left with pretty much a vagely bad taste in my mouth and a feelin that the three line patch I was able to glean from all this, plus the one possible one-liner bugfix (if I can find the bug) were not really worth the review of all these monolithic patches. That and the dpatch make it unlikely that I'll do this again. Ubuntu's left having to bring all these patches forward, prime busywork, but they made this bed..

I also don't feel one bit like an Ubuntu developer, thank you anyway Mark.