The Berlin Packaging API: the Solution?

Installing software on Linux. In the world of online minefields, this is the big one. Back in the day, you installed software on Linux by compiling it manually. Time-consuming, but assuming you had a decent knowledge of gcc, make, and maintaining library files, this could actually work. Later one came the package management systems that were supposed to make installing software on Linux a breeze: rpm, dpkg, and so on, and so forth. Since human beings have the innate tendency to assume that everyone else is wrong and only they are right, we are now stuck with 3453495 different Linux package managers. Denis Washington, a Fedora developer, is taking steps to resolve this issue.“Some time ago,” Washington writes to the Linux Foundation desktop mailing list, “it was discussed on an LSB face-to-face meeting that an API should be developed that allows ISVs to install software packages which integrate into the package manager.” The idea, the Berlin Packaging API, sizzled out, apart from a Wiki page with a rudimentary proposal. Washington decided to take matters into his own hands, and has designed and implemented a prototype of this packaging API – and he imaginatively called it the LSB Package API, and it uses a simple D-Bus interface and an XML-based package description format.

The implementation currently supports integration into RPM and dpkg; due to its modular nature, support for more package managers could be added
later on.

I hope this implementation will act as a starting point for resurrecting the Berlin API process. Let us overcome the “Third-party software installation on Linux sucks” problem and strive to a brave new world of easily distributable Linux software!

Some may think this sounds a lot like PackageKit, but Washington is quick to point out this isn’t the case. PackageKit provides an abstraction layer on top of the existing package management systems, providing users with a front-end for managing repository-based package systems. “However, it does not address the problem of software distribution itself,” Washington explains, the repositories and package files are still specific to the packaging system.”

The Berlin API, on the other side, does exclusively deal with providing a package-manager-neutral software distribution method. So the Berlin API is not a replacement for PackageKit, but a complement. In fact, as the software installed with the Berlin API is added to the package system’s database, it can be managed (e.g. uninstalled) with PackageKit afterwards – a dream team!

Personally, I have my doubts about these so-called solutions, and not only from a hard-to-implement point of view (have fun getting all those noses to point into the same direction), but also from the point of view that these solutions do nothing to fix the actual underlying problem that most package managers and software installation systems (Linux, Windows, OS X) deal with: the complicated nature of installing software, and the inability to give users control over and insight in how they manage their own systems.

I wrote down my own preferred way of installing and managing software in an article earlier this year, and I still believe that pretty hefty choices need to be made in order to make the process of managing software as flexible, easy, and powerful as possible – all without limiting the power user, or overwhelming the novice user.

I’m still open for suggestions.

34 Comments

  1. 2008-06-23 5:45 pm
  2. 2008-06-23 5:52 pm
    • 2008-06-23 6:16 pm
      • 2008-06-23 6:37 pm
        • 2008-06-23 7:45 pm
          • 2008-06-23 7:56 pm
          • 2008-06-23 8:25 pm
          • 2008-06-23 8:17 pm
        • 2008-06-24 8:03 am
          • 2008-06-24 1:18 pm
          • 2008-06-24 2:02 pm
    • 2008-06-23 6:34 pm
      • 2008-06-24 7:15 am
  3. 2008-06-23 6:06 pm
    • 2008-06-23 11:24 pm
      • 2008-06-24 1:51 am
        • 2008-06-24 3:37 am
          • 2008-06-24 7:18 am
          • 2008-06-24 6:40 pm
        • 2008-06-24 10:43 am
        • 2008-06-24 12:05 pm
      • 2008-06-24 4:39 pm
        • 2008-06-24 5:04 pm
          • 2008-06-24 5:16 pm
      • 2008-06-24 6:48 pm
  4. 2008-06-23 6:25 pm
    • 2008-06-23 6:29 pm
      • 2008-06-23 6:37 pm
        • 2008-06-23 7:06 pm
          • 2008-06-23 8:26 pm
          • 2008-06-24 6:04 pm
  5. 2008-06-24 1:45 pm
  6. 2008-06-24 2:36 pm
  7. 2008-06-24 3:10 pm