Ubuntu dev proposes new package format for mobile apps
Faster, less clunky than old-school Linux installers
In a move that could see Ubuntu veer even further away from the Linux mainstream, Canonical has proposed a new software packaging format designed to make it easier for developers to publish apps for Ubuntu's tablet and phone–friendly future incarnations.
"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," Canonical's Colin Watson explained in a post to an Ubuntu developer mailing list on Wednesday.
Canonical will continue to use the Debian-derived dpkg and apt package-management tools for the base Ubuntu OS and the major software packages that come along with it, he said.
What Watson proposes, on the other hand, is a new, much simplified packaging format for the kind of lightweight, self-contained apps that will run on Ubuntu fondleslabs and phones.
Most of these apps will be based on the recently announced (and still highly preliminary) Ubuntu SDK, Watson said, and he expects most of them to have no dependencies on other software at all, save the core Ubuntu SDK libraries.
To that end, Watson has developed a proof-of-concept app installation system, dubbed "click-packages," that runs on top of the current Ubuntu packaging system but delivers a user experience that's more in line with how apps are installed on other mobile platforms.
The system places each app into its own directory, and users don't need root access to install them. It's also fast – Watson says a typical app installs in about 0.15 seconds on an x86 notebook and in 0.6 seconds on a Nexus 7 fondleslab.
The app packages themselves are simple, consisting of only binary files and assets. Unlike .deb packages, they're not allowed to run any maintainer scripts when they're installed, updated, or removed. Creating new packages is as easy as feeding a prebuilt application directory into a simple tool, along with a JSON manifest file.
Watson's prototype is written in Python, though he imagines it would run faster if it were ported to C. As it stands, however, it has the advantage of being small – less than 300 lines of code – which means it should be easy to debug and maintain.
Implementing the system in Python also means it's highly portable. Developers can potentially build packages on non-Ubuntu Linux distributions, Watson says, or even Windows or OS X, as long as they have Python installed.
But although Watson's proposal is in its earliest stage, not everyone is thrilled with the idea of inventing a brand-new app packaging system for Ubuntu, especially given that other, similar efforts are already underway elsewhere.
"I find it very sad that so many parties currently start reinventing the basic ideas of Listaller, instead of helping the Listaller project to improve, and kill the remaining flaws," Matthias Klumpp, creator of the Listaller package-management system, wrote in reply to Watson.
Canonical has been earning a reputation for suffering from not-invented-here syndrome, of late. First it broke away from the Gnome desktop project with its own GUI layer, called Unity. Then in March it announced that it was planning to build a homebrewed graphics engine to replace the X Windowing System, ignoring the competing Wayland project, which had already gained the support of several other Linux distributions.
Canonical honcho Mark Shuttleworth has said that he's quite content for Ubuntu to chart its own course with Canonical at the helm, and that developers who don't like the way the OS is going should "move on" – so it should come as no surprise if Ubuntu bases its mobile app packaging system on homegrown code, rather than anything already in development.
According to Watson, he expects to have his prototype of the click-packages system ready for others to look at by the next Ubuntu Developer Summit, to take place online May 14 through 16. ®