Snap vs. Flatpak vs. AppImage: Know The Differences, Which is Better

When it comes to Linux apps, you can install the apps from three different types including Snap, Flatpak, and AppImage. Let's find out which is better for your use.

In recent years, three different distribution independent package formats have become more prevalent in the Linux systems. These new package formats are Snap, Flatpak, and App image. And there are few others who chose an entirely different route. Linux distributions like Endless OS and Fedora entirely depend on independent package formats to run applications.

Package managers enable developers to package, distribute, install, and maintain applications in Linux systems. Distribution independent package managers are different from the traditional package managers like ‘.deb’ and ‘.rpm.’ which are platform dependent.

Distribution independent package formats vs. Traditional package formats

Unlike traditional package formats, distribution independent package formats bundle applications with all the dependencies to install and run the app as a single package. Therefore, any software distributed by these package formats will run on any Linux system, which has supported the framework for that particular package format.

With traditional package managers, we have applications built for a specific platform, and users will need to install the required dependencies for the package to run on the system. That might seem to be a significant drawback in traditional package managers, but there is also an issue to note for the distribution dependent package managers.

When a developer makes use of distribution independent package managers to distribute his work, he has the full responsibility of ensuring the dependencies are up to date with the latest security measures. If ignored, the package will pose a security threat to the system. On the contrary, traditional software packages are maintained by the Linux distribution developers, ensuring that dependencies are updated with the latest security updates.

Snap vs. Flakpak vs. AppImage

In this article, we shall explore three distribution independent package formats – Snap, Flatpak, and AppImage, know their differences and summarize a few key findings.

1. Snap

Snap is a distribution independent package format developed by Canonical and first released in 2014. It was initially developed for Ubuntu but has been adopted by other Linux distributions like Arch, Linux Mint, CentOS, Gentoo, and Fedora, and also included support for the Snap framework.

The main aim behind this package format development was to come up with a single unified format for software packages to run in a wide range of devices. That includes IoT (IoT), embedded devices running Ubuntu Core (a minimalistic version of Ubuntu), and computer systems that ran some Ubuntu version.

Snap also offers an online app store – Snapcraft, where users can find and install the software packages. It creates a large pool where users can find all available a snap package. Snapcraft is itself controlled and maintained by the Canonical team.

Snapcraft
Snapcraft

Other than app users, Snapcraft provides application developers with guidelines on publishing Snap packages. Additionally, Snapcraft comes with both open and proprietary software.

2. Flatpak

Like Snap, Flatpak is another distribution independent package format aimed to simplify overall app distribution and usage in Linux systems. Previously known as xdg-app, the framework was based on the concept of running applications in a secure virtual sandbox without requiring root privileges or posing a security threat to the system.

Flatpak was officially released in 2015 with a reliable backup from Red Hat, Endless Computers, and Collabora. It targeted primarily three Desktop Environments. That is FreeDesktop, KDE, and GNOME. The Linux distributions currently having this framework are arch Linux, Debian, Fedora, Mageia, Solus, and Ubuntu.

The Flatpak framework itself is developed in C programming and released under the LGPL license. The lead developer is Alexander Larsson – a Red Hat employee.

Like Snapcraft for Snap, Flatpak also has the Flathub app store where users can find and install all Flatpak packages. Initially, Flathub only allowed open-source publishing applications on the website but has recently approved the publishing of proprietary apps.

Additionally, unlike Snap, where we have a single repository controlled by Canonical to install and update software packages, Flatpak supports the use of multiple repos. The one significant disadvantage with this package is the lack of support for Servers.

3. AppImage

AppImage is another widespread distribution independent package format first released in 2004 with the name Kik. Regarded as a portable package format, this follows the “One app = one file” concept. That means, it is a regular independent file containing a single app and everything it needs to work. To run the application, the user only needs to make it executable and double-click on it to start.

Users can find the packages on the AppImage website. Another feature to note is that it does not use repositories to install package updates like Snap and Flatpak. Instead, the AppImage package comes with additional information on how to install updates. Packages without this update information can be updated with a tool like AppImageUpdate.

The table below gives a detailed summary of the key differences between Snap, Flatpak, and AppImage. Although most of the features are self-explanatory, we have elaborated some of them below the comparison table.

FeaturesSnapFlatpakAppImage
Permission Controls Toggles (GUI and CLI) like in Android devicesYesYesNo
Sandboxing SupportYesYesYes
Sandboxing MandatoryYesYesNo
App PortabilityYesYes No
Native Theme SupportYes (with caveats)Yes (with caveats)Yes (with caveats)
Support for Bundled LibrariesYesYesYes
Fully Contained Single Executable Support . Like an exe file for Windows systemsNoNoYes
Online App StoreYesYesYes
Multi-version Parallel Apps SupportYesYesYes
Automatic UpdatesYesYesYes(with caveats)
Support for Chrome OS (through Crostini containers)YesYesYes
App SizeCan vary but higher than AppImageCan vary but higher than AppImageLowest
Number of Applications Available in the App StoreHighestLowestSomewhere in between
Plugins for Desktop App Store SoftwareYesYesNo

Permission Controls

Most applications need to access different system features to run smoothly. Luckily some of these package formats provide users with a simple way to control some of these permissions.

Snap provides both a graphical and a command-line interface for user-controlled permissions. You can use the Ubuntu Software to manage permissions of applications with Snap.

Leafpad permissions
Leafpad permissions

From the above image, you can see the different permission for Leafpad. You can either enable or disable each permission by clicking on the toggle button.

To access permissions of a snap application via command-line run the command-line below:

snap connections leafpad

Replace ‘leafpad’ with your snap name.

Snap CLI permissions
Snap CLI permissions

To see all the installed snap applications, run the command below:

snap list

Snap List
Snap List

To grant network permission to Leafpad snap, execute the command below:

snap connect leafpad:network

To revoke network permission, execute the command below:

snap disconnect leafpad:network

Snap CLI permissions
Snap CLI permissions

Flatpak also provides users with a permission control interface. You can use GNOME Software to manage Flatpak apps permissions graphically.

To see all permissions in a Flatpak app, run the command below:

flatpak info --show-permissions com.spotify.Client

Be sure to replace ‘com.spotify.Client’ with the name of your Flatpak app.

To view all Flatpak applications installed in your system, run the command below:

flatpak list

AppImage doesn’t provide user permission controls as of now. However, developers have hinted that this feature may be implemented in the future.

Sandboxing

Sandboxing is the process where an application runs in an environment (a sandbox/container/filesystem/archive) fully isolated from the host system. Any interaction with the system is done through APIs and user permissions. Snap, Flatpak, and AppImage offer support for Sandboxed environments.

A Sandboxed application enhances overall system security compared to an app with full system access. A good example would be android applications. They run in a sandboxed environment and have access to the system only via user permissions.

Native Theme Support

Both Snap, Flatpak, and AppImage package formats support the native look and feel for GTK and QT applications, though with some limitations. For example, Snap and Flatpak require the system themes packaged in their specific formats. If you are running third party themes and icon packs, you might not get the correct system theme, cursor, and app icons. Even though this has improved over time, there is still some notable difference from apps installed from the official package manager of distribution.

App Portability

An AppImage application is similar to the Windows system single executable’ .exe.’ file. An AppImage contains one app with everything it needs to work. To run the application, the user only needs to make it executable and double-click on it to start.

That is not the case with Snap and Flatpak applications. However, they can be made portable by packaging the app itself, and the child repositories it depends on. This whole process is not as easy as AppImage and requires running multiple Terminal commands.

Conclusion

Each of the three distribution independent package formats discussed above has its advantage and disadvantages. I think there are still some improvements by each of them to make any of them the main package format for Linux distributions. Luckily, all these package formats can co-exist. You don’t have to stick to a particular package format when you can enjoy software from different package formats.

Arun Kumar
Arun did his bachelor in computer engineering and loves enjoying his spare time writing for FOSS Linux. He uses Fedora as the daily driver and loves tinkering with interesting distros on VirtualBox. He works during the day and reads anything tech at night. Apart from blogging, he loves swimming and playing tennis.

5 COMMENTS

  1. As far as I know, Snap is not allowed in Linux Mint 20. Like you said: “Snap, where we have a single repository controlled by Canonical to install and update software packages”

    Canonical apparently wants to be the be the Apple store for Linux.

  2. Mint 20 doesn’t come with snap but there’s nothing to prevent you from installing it. I understand their decision and agree it should be something that the user has to explicitly opt-in. But, Canonical wanting to be Apple is a stretch.

    I installed the latest Manjaro GNOME recently and had weird dependency problems with spell check in every app that uses spell check (LibreOffice, Evolution and Zim), and I looked through the wikis, couldn’t find anything that fixed it (aspell and hunspell were installed). Then I see flatpak has the LO.7 (I have it on another machine, I like it, it’s new and shiny) so I uninstalled official repository and installed the flatpak. Works. So I did the same with Evolution and Zim. Works! That’s what I want, for apps to work.

    I’m sure somewhere in the Arch wiki there is a solution but, really, it shouldn’t be difficult for a basic function like spell check to work. Although I’ve always tried to stay away from both snap and flatpak, this has changed my view on flatpak, at least from a functionality standpoint. I can’t say how more or less secure it is.

  3. You obviously have never developed an application for Windows when you claim that:
    > An AppImage application is similar to the Windows system single executable’ .exe.’ file.

    It is in NO WAY self contained. It is the gateway to dependency hell.
    You COULD make a self contained .exe application, but that is nothing like any of the app distribution technologies described here.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

STAY CONNECTED

23,241FansLike
389FollowersFollow
16SubscribersSubscribe

LATEST ARTICLES

MUST READ

The Ubuntu Cinnamon Remix brings together Linux Mint's Cinnamon desktop with the Ubuntu Core. While some users are welcoming the new flavor of Ubuntu with open arms, others are scratching their heads, wondering where it fits in.
The wait is finally over (almost) for all you Ubuntu fans out there. The latest version of Ubuntu, 20.10 codenamed "Groovy Gorilla," is currently available in the beta version. I have tested out the distro myself, and it is stable enough to take out for a spin.

The 10 Best Linux Network Monitoring Tools

Having total control over your network is essential to prevent programs from overusing your network resources and slowing down the overall performance. This is why you should install a network monitoring tool on your system, giving you a visual overview of everything that's happening on your network. Networking Tools are like swiss-knife for the system administrators for troubleshooting system issues.

10 Top Reasons to Switch to Manjaro Linux

Manjaro is Linux distro based on Arch-Linux which follows a rolling release model. Is this distro good for you? Let's find out the main reasons for using Manjaro.

Pop!_OS 20.04 Review: Professional Linux Distribution Ever Made

Linux is growing faster than ever. As per the latest report, there is a drop in the Windows 10 market share for the first time, and Linux's market share has improved to 2.87% this month. Most of the features in the list were rolled out in the Pop OS 20.04. Let's a detailed look into the new features, how to upgrade, and a ride through video.

The 10 Best Linux Server Distros For Home And Businesses

By the year 2020, it is estimated that there are close to 600 Linux distributions in the market. It includes both servers and Desktop versions; therefore, if you are looking for lightweight Linux distribution for your old PC or a reliable desktop version for employees in your organization, you may be overwhelmed with the number of choices for finding one for your use.