Zero-Dependency Applications

Zapps are a packaging convention that bring zero-dependency hassle-free drag-and-drop application installation to Linux.
open tar (or unzip); done
all dependencies bundled
no post-install hooks
works on all linux distros
works on read-only media
unpack at any path

Zapps are a packaging style for Linux executables. They run on any Linux system, in any install path, with no setup.

For users, Zapps provide simplicity and freedom: a Zapp can be installed in any location, on any linux distribution, and will "just work".

Zapps can run fine directly from a jumpdrive. Zapps can run just fine from read-only media. And Zapps allow easily running varying versions of the same application on the same computer with no fuss. They're liberating: with Zapps, you can do whatever you want, with as much (or as little) organization as you wish.

For developers and packagers, Zapps provide simplicity and predictability: do the work to package something as a Zapp just one time, and now you have a package anyone can use, anywhere.

You don't have to handle distro-specific worries, and maintain dozens of different scripts for different distros. You don't have to test your application against different versions of libraries that a host system might throw at you, or field bug reports from library versioning problems. And users can always get the latest version of the application, direct from you.

For whole systems, yes, Zapps still support deduplication of shared libraries -- so you can have a small on-disk footprint, and an efficient system overall.


Less is more. Zapps are as simple as we can make them.

Learn more:

Technology

Read more about the Zapp Technology in depth here.

Demos!

If you want to download and run a Zapp today, here are some of our favorites:

(These are links to a Warpforge Catalog website -- so you can choose from the download links there, and also, you can follow the "replay" link to see how these packages were built!)

In these demos, you can see both language interpreters and system tools, and sizable applications. And you may also notice that both C and Rust projects are represented here: Zapp-style packaging is a general technique for any linux executables, regardless of source language!

Media

Zapps were presented in 2022 at an event called IPFS Camp. You can find the recording here:

Tradeoffs

Does the Zapp format have tradeoffs or drawbacks?

Everything has tradeoffs.

However.

We consider most of them to be either "worth it", or "mitigated".

See more in the deeper docs about tradeoffs.

We also compare Zapps to several alternative approaches in that doc!

Variants

The core Zapp standard is meant to be utterly simple, foolproof, and portable.

However, there are a few variations! These generally trade some complexity in order to satisfy some other goals, or make more efficient or more compact packages.

Check out the Variant docs!

Join the Community

Zapps grew out of the work on Warpforge! We develop the spec alongside the Warpforge and Warpsys projects.

We'd love to have you join our community!

Our primary chat is in Matrix. (Regrettibly, we've suspended the IRC bridge, due to the frequency of issues caused by bridging.)

This spec's source code is on our Github repository.