[lsb-discuss] Rethinking Linux software distribution

Eugene Gorodinsky e.gorodinsky at gmail.com
Sun Nov 1 07:25:32 PST 2009

Hi list. I'd like to share some of my thoughts on software
distribution in the Linux world.

When the first distributions started to appear, communities of
enthusiasts have formed around them and the software started getting
developed and packaged for them. Due to the ease of communication
between the members of these communities it was easy to package
software in a cathedral style, synchronising everything. Unfortunately
the communication was easy only between the various hackers that
worked together on one distribution. Communication between hackers
using different distributions was practically nonexistent. And
although the communication between different distributions has
increased, the packaging still happens in a cathedral style (if you've
developed another package which can replace the functionality of an
existing package, ask the maintainer of the dependent package to
include your package and you're all set). This dramatically hinders
the evolution of Linux as a platform, because invasive changes are
impossible to make without cooperation in a large community. Not only
that, but also since ISVs don't necessarily communicate with the
distribution's community, the software that is packaged by these
vendors might break easily because of the changes made.

In order to move to a bazaar style of packaging and distributing
software, two changes need to happen:
1. Currently the packages can depend on other packages. However what
the package really depends on is not clear. Is it a library in the
package? Or is it some binary? Or maybe just the data? Maybe it's the
dBus interface which that package provides? It's not clear. The
dependencies field has to express interfaces a package or parts of the
package rely on, not packages. It should express the smallest parts of
the LSB specification a package relies on. This approach gives the
distributions a huge freedom to innovate, while being able to stay
compatible with existing packages or break only a small number of
packages. It is much more flexible than the current one. And to my
knowledge no package format provides it to date.

2. The other problem is most software being installed is not
relocatable. People would call me crazy if I tried to install my
software in existing directories inside /System on a Mac or inside
C:\Windows on a windows machine, so why are we installing software
like Pidgin and Banshee in our system's /usr/bin, /usr/share,
/usr/lib, /usr/man etc? It's better to install the software into for
example /opt/<program_name>. That would make software rely less on the
filesystem's hierarchy, which in turn would allow other distros to
change the hierarchy. If the software is relocatable, then it won't
even have to be installed into /opt, and could be installed into some
other directory, which would help distributions with very different
filesystem hierarchies, such as GoboLinux.

I believe this is the minimum, but there are more things that should
be considered. Things like packages that contain plugins for specific
software which require to know where that software has been installed
before being installed themselves.

More information about the lsb-discuss mailing list