One Package Manager for them All

by Ostatic Staff - Jan. 25, 2011

The idea of one universal package format for all distributions has been batted around a few times over the years. One of the most notable was Ryan C. Gordon's idea of FatELF files. Reactions varied from supportive to skeptical to down right opposed. Well, it seems a new team from major distributions is coming together to implement a "common application installer API and infrastructure."

Developers from RedHat, Fedora, Debian, Ubuntu, openSUSE, Mandriva and Mageia got together last week at the SUSE office in Nürnberg to discuss how they might implement a universal application installer they are referring to as an Application Store. This is in response to the belief that end users aren't interested in libraries, dependencies, compatibility, and other technical details. They think users only care about screenshots, basic descriptions, ratings, user reviews, and such. The idea is to define and write a tool to find and install applications.

Ryan "icculus" Gordon's idea was to package software archives so that needed kernel modules, dependencies, libraries, and software files were all included in one larger package. His idea also provided for all system architectures and would work across all distributions. He explained, "it adds some accounting info at the start of the file, and then appends all the ELF binaries after it, adding padding for alignment. FatELF lets you pack binaries into one file, seperated by OS ABI, OS ABI version, byte order and word size, and most importantly, CPU architecture."  One of the main ideas was that the package installers would look very much alike in much the same way that most Windows software installers look very similar.  Well, it didn't take too long before the wave of opposition halted the project.

But the idea is being revived, albeit by a totally different mechanism. AppStream builds on the idea introduced by the Bretzn Project, which will do the packaging for various architectures and distributions after the developer sends up the code, publish the package, and send out release announcements.

The AppStream team think the Ubuntu Software Center is the right user interface and plans are to port it to PackageKit. They plan to use Xapian servers to provide search results for users and use Open Collaboration Services to allow user ratings and reviews. Metadata will be stored on a server which will hold package information, icon location, repository type and location, and such. A compose server will extract the package information from the .desktop file (which participating distributions will need to provide for each package) and output all the information to a common XML file. The AppStream user interface will be the front-end for PackageKit, which then will instruct the distribution's package management system to install the desired application.

The significant difference between FatELF and AppStream is that FatELF was to include all the files needed for a universal package while AppStream compiles only the metadata needed to populate a universal installer. This can then be the main or only graphical package manager of most distributions if desired replacing (or in addition to), for example, Synaptic or Mandriva's RPMDrake.

The main goal would be to have a unified software experience for Linux as a whole, or in the words of the AppStream team, "to make installing and removing software on Linux suck less."

UPDATE:  Seems those involved are beginning to blog some about this project and they are referring to it as a cross-distro App Installer rather than AppStream.