ReducingDuplicationSpec

Summary

This spec is about reusing Ubuntu apps in Xubuntu when it makes sense, instead of having entirely different ones written from scratch.

Rationale

Since users have similar demands from various desktop environments, it is desirable to provide these using the same applications when possible. This reduces the development and maintenance efforts and results in a more consistent user experience.

This spec covers various aspects of making Gnome apps reusable in Xubuntu. While it would be even nicer to increase reuse across all three desktops this is only about the easier part, namely Gtk based apps for Gnome and Xfce.

Use cases

Scope

Packages identified are:

Design

Naturally, all applications in the Gnome environment link to the platform libraries in addition to glib/gtk. This means about extra 25-30 library dependencies vs the gtk-only case when such a build is possible. The memory footprint and resulting impact on performance of this is the reason Xubuntu installs only GTK apps by default.

In some cases the dependency is essential for the functioning of the app, all uses of GnomeVFS and Bonobo fall in this category. There are however apps where the dependency is either only for historical reasons or because it was more convenient to use a Gnome library than gtk/glib directly (ex. GDM went GTK-only for 2.14 with no loss of features and with few changes)

Long term, Project Ridley addresses this problem, but for now there are still apps which for one or two functions depend on all the Gnome libraries.

Examples:

  • GnomeClient from libgnomeui for X session management (basically save/restore session)

  • gnome_program_init() when gtk_init() would do
  • GnomePasswordDialog

  • Possibly not as easy but some bonobo/corba could be switched to dbus

All of these bring in the whole dependency chain including vfs,bonobo,esd,avahi

Most of these functions are not done in gtk2.10 and have no alternatives in the Project Ridley wiki.

For the case of apps which cannot be made Gtk only and are using CDBS, we need to make CDBS support multibuild so we use the same source package at least. The method of making CDBS support multibuild is yet to be decided.

Implementation

IMPORTANT: since this is about reducing duplication, no new source package will be added(like evince-gtk, xubuntu-system-tools) So packages which we cannot make gtk-only and shared with gnome, or patch and have two binary packages (debhelper, or cdbs iff it gets the functionality) we will not consider as the maintenance burden is too high.

For each application

  • see if there's a clean way of making it work with Gtk only dependencies without loss of functionality in Gnome.
  • failing this, see if it can be cleanly built with a --disable-gnome option

Python Gnome bindings could be made more granular so when using only the gnomecanvas library only libgnomecanvas is depended upon (the case of hwdb-client, ldm, gcompris)

Code

Data preservation and migration

Outstanding issues

List of packages and what are the issues for each of them:

  • gnome-cups-manager
    • also depends on what Ubuntu goes with as a printer config tool (g-cups-m, or something new)
  • gnome-screensaver
    • might use gnome-menus (which pulls in gnome-vfs)
    • ...
  • gnome-power-manager
    • gnome client
  • gnome-system-tools
  • cdbs
    • does not support multibuild
  • evince
    • built using cdbs
    • gtk-only patch is not upstream
  • python2.4-gnome2
    • the python bindings are one package for all gnome libs vs. python-gnome-vfs, python-gnome-canvas, etc.
    • not a problem at runtime as only the imported modules will load their respecitive .so libs but using
    libgnomecanvas only cause the installation of the rest as well.
  • gnome-app-install
    • uses the python bindings and some hardcoded apps
  • update-notifier
    • uses g-vfs for monitoring file changes
    • uses GnomeClient

    • execs hardcoded gnome-terminal

BoF agenda and discussion

Comments

  • Completely agree with this idea, have been thinking the same since I started using Xubuntu. Two application you have missed are gnome system monitor (can easily be replaced with Xfce Task Manager) and notification daemon (can easily be replaced with xfce-notifyd). I have other suggestions of replacements here.


CategorySpec

Xubuntu/Roadmap/Specifications/Dapper/ReducingDuplicationSpec (last edited 2012-07-17 21:26:02 by knome)