Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.


Hardy Heron will be an LTS release again, and thus we should spend some extra efforts to get rid of duplication.

We identify lists of duplicated libraries (such as libdb4.[23456]) and outline the steps to eliminate them.

Release Note

Not appropriate here, we do not want to announce technical background details like library SONAMEs and duplication.


Duplicated libraries cause unnecessary maintenance and security support overhead and waste CD space. They are also prone to cause incompabilities between programs using different library versions.

Interesting targets

  • db4.{2,3,4,5,6}: Create a list of all packages which use on-disk transactions. These need to keep their libdb version for now, since there is no generic way of transitioning them to a new DB format. File upstream bugs about them to ask for an application specific solution. All the other packages can be rebuilt against 4.6.
    • 4.2: mostly done, remaining: openldap2{,.3}, hard, in progress in Debian

    • (./) 4.3: done, demoted

    • (./) 4.4: done, demoted

    • (./) 4.5: done, demoted

  • libgksu{1.2,2}: Only user of libgksu1.2 is gnome-python-extras, which exports a python wrapper for 1.2. The only reverse dependencies in main are deskbar-applet and serpentine, neither of which needs either gksu interface. universe has about 25 reverse dependencies; check them all (very few of them will need gksu at all), and transition them to 2 as appropriate. Then, disable 1.2 support in gnome-python-extras and release-note this fact, just in case a third-party script needs it.
    • (./) 1.2: done, demoted; None of the packages in Ubuntu use the gksu1.2 python bindings.

  • libgtkhtml{2,3.8,3.14}
    • 2 and 3.x are totally different libraries, not just a newer API.
    • (./) 3.8 is only needed for gnome-sharp2; can't be ported to 3.14 without breaking libgtkhtml2.0-cil's ABI/API, thus all reverse dependencies of it (f-spot, beagle, tomboy) need to be fixed first. done, demoted

  • libgtksourceview{1.0,2.0}
    • 1.0 still used by gobby, python-gnome2-desktop, and screem; needs upstream work
  • libneon{25,26,27}
    • No foreseen problems with rebuilding everything against 27.
    • (./) 25: done, removed from the archive

    • (./) 26: done, demoted

  • libnet{0,1,6}: 0 and 1 are already in hardy's universe (fixed by dropping support for nessus).
  • sqlite{0,3}: Only 0 rdepends in main are:
    • python-qt4: KDE4 should not use this old ABI and use 3 right away. Jonathan Riddell says that support for 0 can be disabled in python-qt4.
    • php5: some universe packages still depend on php5-sqlite; they would need transitioning to php-sqlite3
    • cyrus-sasl2: to be investigated
  • libwv{,2}: libwv2 is used by kword, libwv by beagle. Since we install tracker by default now, we will drop support for beagle and drop libwv along with it. However, this also means that we have to drop the nautilus plugin for it (since it build-depends on libbeagle-dev).
    • (./) DONE: demoted beagle and wv, nautilus & co use libbeagle now (client API only, harmless)

  • python2.{4,5}: 2.4 is still required for Zope and Plone, which are not yet fixed and certified for 2.5. Since we want to support both, we are stuck with 2.4, unless upstream gets the transition done in time.
  • t{cl,k}8.{3,4}: remaining 8.3 reverse dependencies:
    • (./) expect-tcl8.3: necessary for gcc testsuites on hppa; gcc will disable tests on hppa (gcc-3.3, gcc-3.4, gcj-4.2, assigned to Matthias) (DONE, demoted)

    • (./) blt: just disable support for tcl 8.3 (DONE)

    • isdnutils: does not work properly with 8.4 (Debian #198157, #194541), asked Debian maintainer

  • {cpp,gcc}-{3.3,3.4,4.1,4.2}
    • 3.3:
      • (./) libstdc++5 not necessary any more for LSB 3.1, demoted (DONE)

    • 3.4:
      • (./) gcc-3.4: grub, mesa (both fixed)

      • (./) still default compiler for g77 (replaced by gfortran)

      • (./) libg2c0 (fortran lib): lapack3, python-numarray, python-numeric (fixed)

    • 4.1:
      • gcc-4.1: python2.[45] (powerpc, sparc; fixed)
      • kernel builds with 4.2 on main architectures, but needs 4.1 on powerpc and hppa
  • libstdc++{5,6-4.1,6-4.2}
    • (./) libstdc++5: not required any more by current LSB, demoted

    • (./) libstdc++-4.1-{dev,pic}: not actually used in main (just dep of g++4.1), so this can go along with g++-4.1, demoted

Targets of opportunity

These targets are worthwhile, but low-priority since they do not cause maintenance overhead after release, and thus we shouldn't waste a lot of effort on them:

  • autoconf{,2.13}
  • automake{,1.4,1.7,1.8,1.9} (automake is 1.10)

Test/Demo Plan

Ideally this does not change any visible behaviour, so we just need to test that everything still works as before.

Outstanding Issues

We also need discussion results about applications which have a similar purpose (such as f-spot, gthumb, and eog) and thus both create unnecessary maintenance overhead and don't conform with our "ship one default application for one purpose" philosophy. Examples are

  • F-Spot/eog/gthumb
  • tomboy/notes applet
  • Rhythmbox/sound-juicer/serpentine (? discuss with Gnome desktop team)
  • (./) Brasero (included by default for hardy) / serpentine

  • updatedb/tracker
  • deskbar-applet/tracker-applet
  • displayconfig-gtk/gnome-display-properties
  • system-config-printer-applet/system-config-printer/my-default-printer
  • (./) BitTorrent / Transmission (DONE: we are shipping Transmission instead of gnome-btdownload now)


This command was used to find out potential candidates:

grep "^Package: " /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_gutsy_main_binary-*_Packages | awk '{print $2}' | grep -v '[^0-9]32[^0-9]' | sed -e "s/c2//; s/c102//; s/[-0-9.]//g" | sort | uniq -d | less
  • F-spot and gthumb do not provide the same functionality. gThumb is more competent than eog, however, and I would favour keeping F-spot and gThumb of the 3. updatedb and tracker do not perform the same task (tracker only searches in the home directory). Deskbar-applet and tracker-applet are vastly different (and tracker-applet should be a proper applet if it is to exist at all --- ubuntu should not ship notification-area abuse by default). -- CarlVanTonder 2008-02-04 15:56:12

  • Daengbo: On the topic of F-Spot / GThumb, certainly one of them needs to go. Right now, import photos uses GThumb, while F-Spot is the preferred manager. That really need to change. One should be enough (I'm personally for F-Spot because it's a quickly-developing app while GThumb is pretty much static). Same for Tomboy / notes. The most obvious candidates are Serpentine and Sound Juicer, though, because Rhythmbox has the basic functionality of ripping and writing audio CDs. Sure, the functionality's not advanced, but users who need more features can install the other apps. To make the change work, though, we'll need to add some fuctionality to rhythmbox-client. Right now, it doesn't have a switch for --add-cd-to-collection or whatever the switch will be called. We'll need that for the Removable Drives and Media dialog as the default when an audio CD is inserted. We can play with "rhythmbox-client --play-uri cdda://1#/dev/scd0" or similar, but we can't rip.

  • AzraelNightwalker: about tracker/updatedb issue; they not only duplicate functionality, they also run simultaneously and fight for the disk. See Bug 152051.

  • CharlesPax: What about the front end part of gnome-control-center discussed at http://lunapark6.com/new-gnome-control-center-for-ubuntus-feisty-fawn-gnome-217.html? It's not enabled in the main menu by default, but is installed.

  • About deskbar/tracker issue: Isn't the deskbar-applet using tracker as it's backend? Apart from searching files, the deskbar-applet offers searching the web, and many more, so maybe the tracker-applet could be simply dropped? -- AzraelNightwalker 2008-01-31 01:21:48

  • What about the System > Preferences/Administration duplications in 7.10 outlined via this blog: http://architectfantasy.com/?p=25 ??? --> See separate spec: MenusRevisited2

    • Monitor
      • System->Preferences->Screen Resolution

      • System->Administration->Screens and Graphics

    • About Me
      • System->Preferences->About Me -- help doesn't work and what are the fields for? Only good for changing password

    • Printing
      • Applications->Accessories->Manage Print Jobs

      • System->Administration->Printing

      • System->Preferences-> Default Printer

    • Accessibility - Mouse
      • System->Preferences->Appearance-> "Customize Button"->Pointer Tab

      • System->Preferences->Mouse

      • System->Preferences->Universal Access->Keyboard Accessibility Preferences->Mouse "Keys"

    • Accessibility - Keyboard
      • System->Preferences->Keyboard

      • System->Preferences->Keyboard Shortcuts

      • System->Preferences->Universal Access->Keyboard and Accessibility Preferences

    • Network
      • System->Preferences->Network Proxy

      • System->Administration->Network

      • System->Administration->Network Tools

    • Software
      • System->Administration->Update Manager

      • System->Administration->Synaptic Package Manager

      • System->Administration->Software Sources

      • Applications->Add/Remove


HardyReducingDuplication (last edited 2008-08-06 16:14:28 by localhost)