Do you want to know how to tell real Linux geeks from people who just use it? Ask them what their favorite application packaging system is. Hardcore old-school Linux users will soon be telling you all all about RPM vs. DEB and before it's over someone is sure to chime in about going straight to source code ala Gentoo Linux's Portage.
The short version is there's a lot of Linux software application packing and installation systems out there already but Ubuntu will soon be adding another one.
Canonical, Ubuntu's parent company, is doing this because, as Ubuntu moves into attempting to become popular consumer operating system on smartphones and tablets, it needs a faster, easier way for independent software vendors (ISV)s to get their programs to customers. The Ubuntu developer site describes the software installation problem in these terms:
Today we face a significant challenge in Ubuntu. If an application author wants to get the latest version of their software in Ubuntu they have two options:
1. An Ubuntu developer packages the software and delivers it in the development release.
2. The app developer can submit their apps via MyApps in the stable release for review.
Neither are ideal. So it is that:
The goal here is to provide a safe, reliable means in which app developers can upload their stable releases directly into Ubuntu.
With this goal in mind we want to resolve the common bottlenecks that we have experienced with the current process for app developers:
We should not rely on manual reviews of software before inclusion. Manual reviews have been found to cause a significant bottleneck in the MyApps queue and they won’t scale effectively as we grow and open up Ubuntu to thousands of apps.
Requiring app installation into the /opt directory is significantly challenging to app developers and not well supported in Ubuntu; this should be made transparent to the developer.
We also want to enhance the platform experience for both users and developers who are building applications for Ubuntu:
Provide a standard, stable and useful platform for developers, and a rapid path to delivering their apps to Ubuntu users
Give users a safer access to the growing ecosystem of independent applications being developed for Ubuntu.
Keep the user informed and in control over who is providing the software they install, and what access to their system it will have.
Colin Watson, a long-time Canonical software engineer who's worked on both Debian and Ubuntu Linux, explained -- in an e-mail message to the Ubuntu developers mailing list -- how they're addressing these issues. The goal, Watson wrote, is "to make it quicker and easier for app developers to get their software into Ubuntu. There are several pieces … but it seems clear that one of those is some kind of simplified packaging format which we can offer to third-party application developers."
This does not mean that Ubuntu is going to dump the DEB method it currently uses. Watson wrote, "This is not aimed at changing packages that are already part of the Ubuntu archive; for the most part our existing system works well for those, and they tend to have non-trivial dependency structures. We'll continue to use dpkg and apt for building the Ubuntu operating system, syncing with Debian, and so on."
Instead, the scope of what Watson has been been working on is for a package management setup for "apps built on a fixed 'base system,' which in the case of the initial target of the Ubuntu phone/tablet work would be the runtime part of the Ubuntu SDK [Software Developer Kit]. The radically-reduced dependency structure means that most apps will be Ubuntu-SDK-specific to start with, although I'd like to make sure that the package format design includes enough support up-front to allow this to be useful for other platforms that define suitable base system profiles in future."
This is still very much a work in progress. As for the obvious objection of why not use one of the existing Linux package systems, or even borrow Android's Android application package file (APK), Watson replied, "Many of the existing app packaging systems are more of a reflection of the system they were built for than anything else. If you look at, say, Android's APK format, it's essentially a zip file with a manifest and some conventions about Dalvik class installation and the like. Most of the other mobile app formats are similar. Things like Listaller might be a reasonable fit, but I'm worried about importing things like a full dependency solver into this: much though I love dependency-based packaging systems, they necessarily involve scanning the system packaging database at some point and I would much prefer app packages to be as independent of that as possible, mainly for performance but also to be as bulletproof as possible."
That's not to say that Ubuntu is re-inventing the wheel. Watson wrote, "The proof of concept I wrote also isn't entirely new code. It's tiny due to using .deb as a container format (minus maintainer scripts, full dependencies, etc.), so I get to save effort by using dpkg to unpack things, which leaves us room to selectively use more of its features in future if we want to." As Watson added in another message, "To be clear - hi Slashdot - I'm very fond of the dpkg/apt system and have put a great deal of effort into it over the last decade or so, both on my own time and for pay; I think it's excellent and have no desire to kill it.
So, while Ubuntu will be adding yet another Linux program packaging method, it's building on what's gone before to give ISVs a quick and simple way to get their applications to Ubuntu touch device users. While it's very much a work in progress, the end result should help Ubuntu have a rich set of applications when Ubuntu smartphones and tablets start shipping later this year.