Defragmenting the Linux Desktop
Several times each year a familiar cycle repeats itself
in the Linux world.
A new Linux distribution-release/widget-set/framework is
announced that is expected to
revolutionize the Linux desktop, and pave the way towards
world domination.
The reality: Linux is still stuck in the same old rut.
No-one can agree on anything: Ubuntu vs Fedora/SUSE, KDE vs Gnome,
and lately, Mono vs No-Mono.
It makes you want to scream
"nothing really ever changes".
From an end users prespective it may seem that the problem
is really just an issue of getting that pesky printer or
camera working. However, device driver support is really
just a symptom of a broader problem: supporting GUI software
at all in this Babylon we call Open Source.
GUI Bedlam
Traditionally, Linux/unix evolves from a highly
developed command-line oriented
system. GUI's are definitely an add on and there is
really no standard GUI to program applications against.
X11 is really to low-level of a protocol and time has proven
it is unsuitable for the development of sophisticated applications.
This has resulted in the development of diverse widget
sets as a lot of squabbling over which is the best.
Evolving Distributions
Distributions have evolved into complex beasts.
The've gone from providers of static of package
collections to dynamic repositories containing
many thousands of applications.
This is of necessity because Linux GUI applications
basically have little in the way of binary compatibility.
This means applications must be rebuilt for each distribution
and release. However,
building applications in Linux typically require
managing many dependancies, and this is a major role
in provided by modern distributions.
The Development Cycle
In the open source world an
application is updated by commiting it's changes
to the source repository. Then it must wait for each
distribution to pick up these changes and update their own
repository. Only then can users running a distribution
update their application.
The problem here is that application distribution is out
of the developers control. They can not push out a new release
without interfacing with the distributors.
They also can not easily release
multiple versions and let the user decide which version
to use.
The process of changing an application in Linux requires that
source changes be picked up by each distribution,
rebuilt and the repositories updated. It is not feasible
to for a developer to centrally rebuild and redistribute
an application.
© 2008 Peter MacDonald