At some point we have all downloaded an App recommended by someone or seen somewhere a file with the ending .Flatpak, .Snap or .AppImage. These are three standards or formats which at this moment are struggling to define themselves as the Universal format that runs on all Linux distributions. Although we have already written articles about some of them, today we will at least try to explain the biggest differences between them.
What is .Flatpak and how does it work?
Flatpak is a relatively new format and has been created from scratch, which means that all the code is new and emphasizes security above all else. It allows users to run applications built in that format regardless of what Linux distribution they are using. This format is built and designed to isolate the applications from each other and also from the rest of the system.
It works in principle in a similar way to how other older package formats did, for example the application is packaged with all its dependencies in a single package. But also within a Flatpak application there is a collection of "runtimes" and "libraries" shared between multiple Apps in the system, which means that the user does not have to worry about what has to do with updates in a specific distribution. This also implies an advantage of Flatpak over the other formats, since by sharing these elements the applications created in Flatpak occupy less disk space than the other styles of formats explained here.
Flatpak, however, has its weak side, applications created in this format tend to start a little less quickly than those in other formats, and these sometimes do not respect the window theme chosen by the user on the system.
Deepin has adopted the .Flatpak format as its preferred and default format in all its native applications. (Although the user is free to use the format he prefers. Both versions .flatpak and .deb are available in the store with each launch of a new native application created by Deepin for its users. At the same time as users of other distributions they can also install the .flatpak version on their systems if they wish.)
What is .Snap and how it works?
Like the other formats explained today, Snap packages can also run on most distributions, including of course Deepin. These however, unlike .Flatpak, come with ALL their "dependencies", "runtimes" and "libraries" contained within the package which considerably increases the weight or size of the app, thus consuming more disk space. A Snap package is practically a virtual machine dedicated to the specific App. Users of applications built in Snap must wait for their distribution to validate the package and approve it before it can be used in a safe way without fear of security problems (Although the user is still free to install the application even if it is not up to date with respect to security) which means a delay in getting security patches for said application or simply to be able to use the latest version of it.
An advantage of the Snap packages however is the speed with which they run once they have been installed on the system and have run at least once. (It is noteworthy that the first time the user opens the application they will notice a considerable slow start on that first attempt, but this is only the first time, after that the application will run quickly almost the same as a regular .deb package) Snap is very popular at the moment, but it remains to be seen how long Canonical (the firm that created it) will support the format.
What is .AppImage and how does it work?
There is also a packaging format called AppImage which, like Snap, contains ALL of its "dependencies", "runtimes" and "libraries" contained within the package itself, effectively making it almost as a virtual machine dedicated to the specific app for the which has been created. When you download an application in .AppImage unlike the other formats there is no need to even install it. You just click twice on the file and it should run immediately and at full speed (even the first time you open it).
The two main disadvantages of AppImage however are the following: These applications also take up considerably more disk space than for example those built in .Flatpak. Also and this is of great importance for Deepin users particularly is that Deepin Files (Deepin File Explorer) does not natively support AppImage. so if you try to open a file with the ending .AppImage you will find a message from Deepin Files telling you that there is no App associated with that type of file and that you should choose one. Of course there is no App for that. The solution for the moment is to put the mouse over the file in question, click with the right side and in the new window check or select where it says: "Allow Execute As Program". Once this is done, the application should run in Deepin without problems.
It is good to have competition in this field since for some, perhaps a specific format is more convenient due to the available resources or it runs better on your computer than with another of the formats, etc. For example: on my machine the office automation package LibreOffice in .Snap format is the only one that supports my HiDPI (4K) monitor.
Now that you know the main differences between the universal packages in Linux tell us which one you prefer and why through a comment. We would love to hear your opinion. Do you think Deepin has chosen the correct option by supporting the .Flatpak format?