Lots of people talk about what is needed to get Linux onto the desktop and I think that one of the most important things is for “user x” (let’s presume that “user x” is completely new to Linux, barely computer literate in fact – that’s who we’ve got to target) to be able to download and install any piece of software irrespective of their distribution, kernel version or anything like that. What we need is a new package format.
Now, this package format should be able to work across all distributions, but wouldn’t replace their own native formats (if it is ever to do so, it will do so naturally). In order to avoid needing separate packages for different distributions, there needs to be a config file for the package management app, shipped with each distribution. This would contain things like where it’s libraries live, where it’s binaries live, where it’s config files live and so on. The most important thing here is the interface: there needs to be a single graphical interface common to all distributions which allows user x to simply click on a package they’ve downloaded to install it. So that will help a lot, but won’t solve every problem, so let’s keep going.
Suppose our application needs to be compiled against the installed version of glibc or something – normally this is when distribution-specific packages are needed. So what do we do about this? Our new package format should be able to handle source packages as simply as it handles binary packages. User x downloads it, clicks on it, it says “Compiling”, then “Installing”, then “Done”. It can grab all it’s configure and make options from the distribution’s config file and can do all the nasty stuff behind the scenes and completely hidden from the user. If the compilation fails, it simply needs to say “There was a problem. Click here for more information.” which will provide something user x can forward to the developers of the program if it’s a bug. If it needs a particular library to compile, it just needs to say “Please get the FooBar library from www.foobar.com then retry the installation.”. If we want to avoid sending the user off to download library after library, every distribution needs to have a Debian-style repository so that our package management app can just grab the library it needs with little or no user involvement.
So this package format will handle programs which aren’t fussy about working with different library versions – they are simply distributed as a generic binary package. If our program does need to be compiled against the installed version of glibc (for example), then it simply needs to be distributed as a source package.
So that solves our problem. Irrespective of distribution, user x can now download and install ANY program with nothing more than a click. I’m sure everyone would agree that this would make a HUGE difference to the usability of Linux and would really fire up the fight for the desktop.






