Ubuntu / Linux news and application reviews.


According to a recent message posted on the Ubuntu Devel mailing list by Colin Watson, Installer Team leader, Ubuntu might get a new, simplified packaging format and app installer which should make it easier for developers to get their software into Ubuntu. This will target, at least initially, the Ubuntu phone/tablet but it should be usable elsewhere too, even on non-Ubuntu or non-Linux systems.

The already existing packages won't change and Ubuntu will continue to use dpkg and apt, syncing with Debian and so on.

"Click packages" (the new packaging format) is aimed at making it easier to build packages for Ubuntu: no dependencies between applications, no maintainer scripts and each app will be installed in its own directory.


The new package format needs a new installer and there's already a proof of concept low-level app package installer that's entirely new code - highlights of what it can do so far:
  • no dependencies between apps; single implicit dependency on the base system by way of a Click-Base-System field;
  • installs each app to an entirely separate directory;
  • entirely declarative: maintainer scripts are forbidden;
  • base package manager overhead, i.e. the time required to install a trivial package containing a single small file, is about 0.15 seconds on a newish x86 laptop and about 0.6 seconds on a Nexus 7 (and that's with the current prototype implementation in Python; a later implementation could be in C and would then be faster still);
  • not limited to installing as root, although there may be similar constraints elsewhere to ensure that apps can't edit their own code at run-time
  • packages built by feeding the intended output directory tree to a simple Python tool, plus a manifest.json file;
  • building packages requires only the Python standard library, with the intent that it should be possible to build these packages quite easily on non-Ubuntu or even non-Linux systems;
  • binary packaging format sufficiently similar to existing one that we could add support to higher-level tools with minimal effort;
  • strawman design for hooks into system packages, which will be entirely declarative from the app's point of view;
  • unit-tested from the start.

The Ubuntu developers have also looked into similar existing tools such as Listaller or 0install but there are some things which they prefer to do differently; e.g.: Listaller is dependency-based and they prefer this to be as independent as possible and 0install would also need some system integration problems to be solved, so instead, they've decided to create a new installer.

The proof of concept installer is currently under 300 lines of code (Python) and obviously, still needs work. The prototype will be ready in time for UDS next week and there's also going to be an UDS session to discuss this.

For more info, see Colin Watson's message @ Ubuntu Devel mailing list