One of the advantages that GNU+Linux distros have is that you can install various desktop environments on your computer at your will. I personally like Cinnamon a lot but for using Cinnamon DE, I’m not limited to a specific operating system. This is a problem when you’re using macOS or Windows.
To get Windows desktop environment, you have to install Windows OS. Same goes for macOS. To get Aqua (or whatever it is right now), you have to buy an Apple device running macOS. However, we see Apple Mac devices and Microsoft Windows OS dominating the computer industry and one of the reasons is of course the user interfaces.
Working with Mac and Windows devices is very easy and enjoyable for people. Most users prefer using Windows and macOS because working with them is super easy. The can install an app by dragging the file to Applications folder or just by double-clicking on its installation file.
They can update their apps just by opening Update Center and clicking on “update”, without seeing hundreds of codes appearing on a terminal emulator. Also, on macOS or Windows, you don’t need to manually install 10 – 15 dependencies to run a software.
Of course there are a lot of apps and software available that are easy to use on GNU+Linux but it’s needless to say that majority of apps are having mentioned problems. I believe one of the biggest problems for widespread use of GNU+Linux is the user interface and user experience of the DEs.
Most users are afraid to install even famous and user-friendly distros such as Ubuntu and Fedora. If we want GNU+Linux operating system to dominate the computer world and give users software/computer freedom, we should indeed find a solution (or use current solutions) to fix these problems.
What should we do?
There are good solutions for these problems for sure. The best way to fix it is to develop a software center or appstore for distros. Currently, we have Snapcraft’ doing it for us but it’s really slow, lacks some serious features and somehow misleading for some people.
Snapcraft’s goal is to bring distros a central software center to make installing apps as easy as it could be. It’s a great idea and makes installing software on GNU+Linux much easier. Snap can end this crisis in GNU+Linux world but sadly it has some terrible problems in it that should be fixed in order to become a complete solution for installing apps on GNU+Linux distros.
First of all, Snapcraft servers are proprietray and non-free. That’s a huge problem for people like me. Unless Canonical makes its servers free (as in freedom), Snapcraft can’t be trusted.
Improving Snapcraft and snap packages could be a huge step. However, many people don’t like it as many of these apps are not trusted by users and they are also very slow comparing to software installed from distro repositories. Apps installed by snap are not very smooth. You’ll feel the difference.
This is one of the problems users will see when they first come to the free (as in freedom) software world. They definitely feel that they have a less good experience on GNU+Linux comparing to their previous OS. Believe me, many people put experience on top of their priority list, above userfreedom, privacy, etc.
Also, the installation process of apps is slow. I tested Snapcraft on two most-used GNU+Linux distros, Ubuntu and Fedora, and I had the most ridicules experience. I couldn’t see the apps being installed. The progress bar wasn’t going forward and sometimes when it suddenly goes to 100%, it starts again without explaining anything.
Now, a technical or experienced user may understand how this works and knows that it tries to install dependencies, etc. but a typical normal user won’t find it very satisfying.
Another problem is that ‘Snap’ packages all of their dependencies along with the program. So a program that uses libPNG will come with its own copy of libPNG. This is good for reliability and simplicity but it introduces several problems.
The installs are much bigger and most of the size is wasted space. Duplicate libraries of things you already have. Also, you don’t really know what the libraries inside the snap are. They may be out of date, they may even by incompatible with your system in some way.
Also, another problem that not many people mention about it is that it doesn’t provide a good accessibility tools/experience. Many people with disabilities/differences are unable to use it. When they are using a distro (based on that distro) they can use various accessibility tools even for using a terminal emulator but that doesn’t go for Snapcraft.
Localization is also another problem. Many users who use apps that need UTF-8 formatting are experiencing problems. At least many of my Persian-speaking friends tell me that they see rectangles instead of letters. Snapcraft (or some snaps) is/are not localized properly.
One of my biggest problems with Snaprcraft is licensing. Many apps in Snap Store are labeled as “free” which refer to price and it can be misleading. People may think that free means software libre or free as in freedom and install that app without knowing that it’s proprietary software being installed on their computer.
Finally, there’s this article on Linux Mint blog that explains why Linux Mint removed snaps from itself:
[…] as you install APT updates, Snap becomes a requirement for you to continue to use Chromium and installs itself behind your back. This breaks one of the major worries many people had when Snap was announced and a promise from its developers that it would never replace APT.
A self-installing Snap Store which overwrites part of our APT package base is a complete NO NO. It’s something we have to stop and it could mean the end of Chromium updates and access to the snap store in Linux Mint.
Applications in this store cannot be patched, or pinned. You can’t audit them, hold them, modify them or even point snap to a different store. You’ve as much empowerment with this as if you were using proprietary software, i.e. none. This is in effect similar to a commercial proprietary solution, but with two major differences: It runs as root, and it installs itself without asking you.
Flatpak is one of my favorites. I believe it’s much better than Snapcraft in many ways. Flatpak introduces itself as “the future of apps on [GNU+]Linux” and I believe they’re right. Flatpak runs smoothly and it provides a really great experience.
Sadly it’s not as much-known as Snapcraft but even without snap’s fame, it’s doing a great job. The goal of Flatpak is same as Snapcraft but it seems that the community behind the Flatpak are doing it better and more efficient.
Flatpak features that makes me want to use it includes
- Build for every distro
- Consistent environments
- Full control over dependencies
- Easy to use build tools
- Future-proof builds
- Distribution of packages made easy
Also, Flatpak servers are free (as in freedom) and it’s an advantage over Snapcraft.
Since a desktop application would require quite extensive changes in order to be usable when run inside a container you will likely see Flatpak mostly deployed as a convenient library bundling technology early on, with the sandboxing or containerization being phased in over time for most applications.
However, just like Snapcraft, it packages all the dependencies in the software package and it’s not using shared libraries. So if three apps need a library, you’ll have three of that library if you use Flatpak.
Also, same as Snapcraft, Flatpak may contain less updated apps so comparing to software stored in distros’ repositories, it has some updating problems. This comes in attention specially when the software releases a serious security update.
Also their source format doesn’t even have application name and version clearly defined, and their repository format is some binary I see no way of reading.
Just like Snapcraft, licensing is also a problem in Flatpak. Some Flatpak apps may be proprietary and users may install/use them without knowing about it.
As a user who cares a lot about software freedom, Flatpak has a serious problem for me.
Another problem is that there are reports that Flatpak is a security nightmare!
Let me start about AppImages this way: If a company/project offers AppImages for their software, I surely will use AppImage.
AppImage is focusing on desktop applications operated by end users. AppImage is a software for GNU+Linux that can be run everywhere. No matter what distro I’m using or whether I install a platform on my computer or not, I can run AppImages by only making them executable.
As a user, I want to download an application from the original author, and run it on my GNU+Linux desktop system just like I would do with a Windows or Mac application. An AppImage runs very smooth and weighs less than snaps and Flatpaks.
There’s no licensing problem as well as it’s the developer itself who provides the AppImages and you can make sure they are licensed properly and free (as in freedom) or not. For example, one of the most famous cloud solution software developers, Nextcloud, provides AppImage and you can be sure that Nextcloud is free (as in freedom).
AppImages are also can be considered as more secure than snaps and Flatpaks. AppImages are just as secure as existing GNU+Linux applications: AppImage does not do anything about sandboxing, unlike Flatpak and Snappy.
However, one of the biggest problems with AppImages is that there’s no app store for AppImages. For every software/app, you should check the developer/provider to see whether they provide an AppImage or not. Because of this, AppImage is still not a good solution to introduce against software centers of Windows and Mac.
There is AppImageHub but it’s still can’t be compared or even considered as an app store; it’s more of a directory of AppImages which is also good.