We defined what Flatpak, Snap, and AppImage are within the article How Do They Stack? revealed over 2 years in the past and whereas the applied sciences have improved rather a lot since that point, I’m evaluating them from the attitude of a software program developer.
Sandboxing / Confinement
You possibly can run AppImage with out sandboxing in addition to use it with completely different sandboxes e.g. AppArmor and Firejail.
Snap can run with out sandboxing however you can not use it with completely different sandboxes as it’s tightly coupled to AppArmor.
Flatpak can neither run with out sandboxing nor can or not it’s used with completely different sandboxes apart from Bubblewrap.
Set up / Execution
One can run an AppImage after setting the executable with out root entry, with out decompressing it, and on an offline system.
Snap must be put in by snapd, can’t run with out root entry till after it’s put in nor can its downloadable file be positioned subsequent to .exe and .dmg which customers can set up on offline techniques, however it will probably run from an uncompressed supply.
Flatpak must be put in by a Flatpak client-side device, can’t run with out root entry till after set up, can’t run from an uncompressed supply. Additionally, .flatpakref information require Web and .flatpak bundles require a run-time to be put in.
AppImage can retailer and run functions from non-standard places resembling CD-ROM and community shares. Flatpak can do the identical after some configuration, whereas Snap at the moment can’t.
On this part, AppImage takes the cake as a result of its functions are extra versatile.
Utility Distribution & Updates
The central repository for AppImage, Flatpak, and Snap is AppImageHub, FlatHub, and Snap Retailer respectively. Not like AppImage and FlatPak, nevertheless, the Snap Retailer is the one dominant app retailer with one repo per machine. Whether or not that may be a good or dangerous factor is so that you can resolve.
Apps packaged utilizing all three strategies can have a number of variations operating in parallel and will be simply copied to a different machine. Nevertheless, they’ve their distinctive implementations.
All three assist binary delta updates however solely AppImage apps will be self-updating as Snap apps want snapd to be put in and Flatpak apps want Flatpak to be put in.
AppImages and Snap stay compressed always (Flatpak is compressed solely on the server-side) and are sometimes smaller in measurement than Flatpak apps. AppImage can be unbiased of any distro maker and goals to unify Linux platform ecosystems.
Snap is owned by Canonical and locations its base snap over the underlying distro, whereas Flatpak is a Purple Hat initiative that locations a Yocto distro over the underlying distro. Additionally, in contrast to with Snap the place builders have to pay to Canonical, AppImage and Flatpak are free to make use of.
From the place I stand, AppImages are the best packaging methodology to make use of as a result of it’s the most handy for each builders and finish customers. Nevertheless, it’s potential for them to coexist particularly when there are circumstances builders will favor to make use of one of many different. Inform us what you assume within the feedback part under.
My analysis for this text was vastly influenced by Related initiatives and the Reddit threads right here and right here. Be at liberty to verify them out for extra perception.