It seems that ever since Docker began popularizing containerized apps a couple years ago, the idea of having self-contained applications really caught on. With Docker, a user doesn’t need to worry about package and library compatibility, since each container can come included with or pull the libraries it needs to work. The thing was, this convenience was largely the realm of servers. Until Snaps appeared.

Ubuntu 16.04 included support for Snaps, which was a way for developers to distribute desktop applications in a manner similar to Docker. Ubuntu even built support for the new format into its version of the GNOME Software application. Since Snaps can bring along runtimes and libriaries that an application needs, there’s no need to distinguish between distributions. This is why Ubuntu-maker Canonical hopes that Snaps will unify the fractured packaging landscape that users and developers have to deal with today.

Fedora 25 saw Ubuntu’s Snaps and raised it on freedom, introducing support for Flatpak, another universal package format that will compete with Snaps. Among Red Hat’s complaints with Snaps was the requirement that developers sign Canonical’s Contributor License Agreement, a point of contention for many in the free-software community. Like Snaps, Flatpak aims for cross-distribution, and Fedora built support for Flatpak into the GNOME Software application.

Besides giving people a reason to work on GNOME Software’s code, Snaps and Flatpaks both aim to make applications more secure by sandboxing them. This sandboxing is akin to running applications in a pseudo-virtual machine to isolate them from the system and one another. The problem with Snaps and Flatpaks is that these security features are nixed if the user runs X Window System (which is why Red Hat shipped Fedora 25 running Wayland by default).