These are random problems I've been noticing, which I think deserve being fixed, and most preferibly coordinated and driven by distros (several if possible).

Lack of plugins support

Some applications have huge amount of dependencies, that's a problem when the user is not going to ever use those specific libraries, or on embedded systems as it requires the software to be modified and recompiled just to disable some of those options.

Some systems have tried to solve this in different ways but none is generally useful. Gentoo have USE flags, but that needs every user to rebuild their software, it also makes testing a cohesive groups of packages more difficult as the possible combinations explode in complexity. Ubuntu has started PPA, more or less a private Debian repository per user, this also has the same testing problems as the Gentoo case, but it additionally fragments the distro and incentivates the forking culture. Maemo is in a similar situation.

The problem solution is to modify all those applications to move all those build time optional components to run time optional, through a plugin system.

Currently there's several options, on Solaris there is «dlsym(RTLD_PROBE, …)» and «-zlazyload -zdefs», libdl for POSIX systems, gmodules for glib based apps, libltdl from libtool for maximum portability. But those mostly cover the low level symbol loading. Maybe there is a need for a more higher level API implementing support for plugins as first class entities.

Lack of consolidated implementations

Home directory mess

XDG base dir spec:


Lack of proper library dependencies

Libraries should be switched away from foo-config scripts and libtool .la files to pkg-config .pc files, or the latter added if the projects do not support any of those.

Would be good to move upwards the Debian shlib information to upstream projects via pkg-config, so other distros and users compiling directly from upstream could equally benefit. Other distro might have similar information already.

Common warnings

Portability problems

Direct inclusiong of headers files.

Coinstallability of services/daemons

Port clashes

Generalized inetd handling

Services starting/sopping default policies