Zero Install

Dr Thomas Leonard [ contact | GPG public key | blog | donations ]

Goals

Let's expand a little on the goals set out on the title page:

Anyone can install software

A Debian user asks for help

A Debian user tries to read the OpenOffice documentation.

Zero Install would have offered to download it instead.

You don't have to be root just to install a word-processor, or its documentation. Most packaging systems only allow the root user to install software.

Traditionally, if a user needs a package that isn't installed, they just get an error message. In the screenshot, the system administrator must install the openoffice.org-help package before the user can read the documentation, or the user must install from source and handle any dependencies themselves. On a Zero Install system, Zero Install would have offered to download the documentation when the user selected Help.

Of course, Debian could fix this particular problem by making the OpenOffice package depend on the documentation package. But then, installing OpenOffice would require far more disk space if you didn't need the documentation (and most of the time, for most versions of most software packages, you don't need the documentation... but an administrator can't know ahead of time what will be needed by their users). Also, users still wouldn't be able to install OpenOffice itself in the first place.

Anyone can distribute software

One of the more frustrating aspects of open source software is finding a program you want, only to discover that there is no package available for your distribution. Eg, on Debian (I'm not picking on Debian, it's just I've got a Debian system here!):

# apt-get install rox-session
E: Couldn't find package rox-session

You don't need to be blessed by a distribution (or anyone else) to be part of Zero Install; all you need is a web page. Software is named by URI:

$ 0launch http://rox.sourceforge.net/2005/interfaces/ROX-Session

See the "Decentralised Installation Systems" essay on OSNews for a more complete introduction to the subject.

See the developer documentation for information on distributing software using Zero Install.

It doesn't matter whether software is installed or not

Traditional systems make running software a two-step process: first you install it, then you run it. In a Zero Install system, you just run it and the system handles the rest (downloading and caching as needed). You can delete the downloaded programs later to save space, and they will be fetched again automatically if they are needed in the future.

The screenshots page has an example showing how software is run this way.

Shared downloads

If one user installs a 20 Mb application, another user can run it without downloading it again. Most packaging systems solve this problem by only allowing root to install software. The systems which don't have this limitation (eg, autopackage) typically end up downloading and storing multiple copies of a program; one for each user. Zero Install shares downloads (safely) between users.

With Zero Install, each user downloads a small feed file which gives the cryptographic digest of the full package. The digest can be used to check that a package already on the computer (downloaded by another user) hasn't been tampered with. Most simply, each user can make a copy of the original download this way (which shares the download but not the disk space). With a special helper, even the disk copies can be safely shared.

See the Sharing page for information about using this feature.

Good security

If one user downloads a malicious program, other users aren't affected.

Installation does not execute any of the downloaded code.

Digital signatures are always checked before software is run.

See the Injector security page for more information about Zero Install's security features.