Welcome to glick2, a application bundle system for linux

Glick2 is a runtime and a set of tools to create application bundles for Linux. An application bundle is a single file that contains all the data and files needed to run an application. The bundle can be run without installation, or be installed by just putting the file in a known directory (/usr/lib/bundles or ~/.local/bundles).

Glick2 has been designed to be used pervasively in a desktop OS, i.e. almost all applications installed and running on the system is expected to be bundles, and it would be the primary way software is shipped. I explain some reasoning for this in this (slighly out of date) blog entry.

There are several other bundle-like systems for linux, like 0install, Chakra, PC-BSD PBI. However, they are not ideally suited for an OS with pervasive use of bundling.

Here are some of the properties that make Glick2 an especially good fit for this:

Glick2 also has the traditional advantages shared by all bundling systems: At the moment Glick2 is only a lowlevel implementation of the bundle runtime. A full OS design based on bundles would also contain an automatic application installation and updates system. This is mostly orthogonal to the bundle implementation, but certain details like the sha1 indexing of file content in bundles does lend itself to a smarter incremental download of bundles.

At the moment there is just the glick-mkbundle tool, but for serious use some level of tooling would have to be created to automate the building of bundles. Various approaches are possible, including using existing packages from current distributions.

Bundling isn't perfect, there are some well known disadvantages. Increased disk footprint is one, although current storage space size makes this not such a big issues. Another problem is with security (or bugfix) updates in bundled libraries. With bundled libraries its much harder to upgrade a single library, as you need to find and upgrade each app that uses it. Better tooling and upgrader support can lessen the impact of this, but not completely eliminate it.

The code is availible in the glick2 git module in gnome git.

Alexander Larsson, alexl@redhat.com