I have been getting this question lately from students and although I have a lot of information to offer, I have not found a source that I can point people to where they can read an update answer (I have found a lot of misinformation and obsolete information). So, some of the questions I have for package formats like snap, appimage, flatpak and others in this evolution of universal packaging systems are:
- Who created the package format?
- What features does it offer?
- What features are unique to it? (That the others do not yet have)
- Who supports it?
- What Distributions use it?
- What focus does the package have? (For Desktop, Clouds, Mobile, etc..)
- Which are more actively developed?
Here is a long tabular comparison of AppImage vs. Snap vs. Flatpak features. It is from the AppImage Wiki on GitHub:
Note that this comparison is mainly from the perspective of AppImage, although it tries to represent each project fairly.
General
Adoption
Usability
AppImage Download from site, then drag-and-drop a single file in the file manager to desired installation location. Snap Install via distribution app store (supported out of the box on Ubuntu, Zorin OS, KDE Neon, ..) or via CLI:
Flatpak Install via distribution app store (supported out of the box on Fedora, EndlessOS, ..) or via CLI:
Sandboxing / Confinement
Application Installation / Execution
Application Distribution
flatpak create-usb
to copy to USB drive)Application Updates
Linux Distribution Support
Objectives and governance
Application Size
Execution speed
Package Format
Project Codebase
Snaps were created by Canonical for Ubuntu. The main advantages of snaps are:
The main drawback of snaps is that software can only use libraries included in its package. This is a potential security risk as the author of the package needs to keep all libraries patched and updated.
Snaps can currently run in Ubuntu, Arch Linux, Fedora, Linux Mint, CentOS, and Gentoo. They are also used in Ubuntu Touch. They are designed for desktops, servers, phones, IoT, and routers.
Flatpak has the same advantages as snaps. However, it uses Namespaces instead of AppArmour for sandboxing. The main difference is that Flatpaks can both use libraries included in the package and shared libraries from another Flatpak.
The developer of Flatpak is the Red Hat employee Alexander Larsson. Flatpak software is currently available in Arch Linux, Debian, Fedora, Mageia, Solus and Ubuntu. It is focused on desktops only.
AppImages are developed by Simon Peter. As in snaps or Flatpak, the package includes all libraries necessary to run the program. AppImage programs are not sandboxed and they don't require root rights to run. According to website of the project, AppImages should run on Arch Linux, Centos, Debian, Fedora, OpenSUSE, Red Hat Linux and Ubuntu.
I have found an interesting performance (CPU+Memory) comparison for these packaging systems.
VLC
LibreOffice
Gimp
Source: https://verummeum.com/portable-package-formats/
do not forgot the main thing, is it Open source ?
AppImage
Open source Client ✅ Yes
Open source Server ✅ Yes
Snap
Open source Client ✅ Yes
Open source Server ❌ No
Flatpak
Open source Client ✅ Yes
Open source Server ✅ Yes
If you have several flatpaks running, the filesystem does not work properly. For example, if I have Openscad and Flashprint open, I can write to disk(s) from Openscad, but not from Flashprint. In Snap there seems to be no problemos.