For the longest time, Linux received a bad rap for not just being difficult to use, but for not having the software necessary to be productive. I remember, back in the early days of using Linux (I started in '97), those issues were very much true. Not only was Linux complicated to get up and running, but installing software generally required a nightmare of dependency installations and manually compiling software.
Those days are long since gone. Now, Linux is incredibly easy to use and offers hundreds of thousands of applications that can be installed using package managers that make the process very user-friendly.
However (there's always a however), you will find that not every package manager is created equal. For example, Ubuntu has apt, which makes installing software from the command line as easy as:
sudo apt install firefox -y
RHEL-based distributions have dnf, which is equally as simple:
sudo dnf install firefox -y
With these package managers, the software is installed from repositories and sometimes you'll find installing one piece of software requires you to first install another. Now, package managers like apt are very good at picking up and installing dependencies for you. And on the off-chance that fails, you can always go back and issue the command:
sudo apt install -f
The above command will fix any missing dependencies. It's quite handy and something I have to depend on regularly.
That's where Flatpak and Snap come into play. These are considered universal package managers that are distribution agnostic (meaning you can use them on just about any Linux distribution) and make installing software just as easy (if not easier) than the built-in package manager.
One of the reasons why Snap and Flatpak were developed was to remove the dependency issues found with traditional package managers. You see, both Snap and Flatpak packages contain all the software necessary to install the package in question, including dependencies. So, when you go to install a certain piece of software via either Snap or Flatpak, you don't have to worry about installing dependencies because the developer of the Snap or Flatpak package has taken care of that for you.
Ease of use isn't the only appeal to both Snap and Flatpak. There's one other major point that can be a bit of a sticky issue with open-source purists.
With both Snap and Flatpak, you gain access to plenty of proprietary software. For example, you can't simply install either Zoom or Spotify using apt or dnf (not without first locating and adding repositories and even that might cause you problems). With Snap and Flatpak, a whole other world of software is opened for the Linux user.
For example, I can open a terminal window and install Zoom with:
sudo snap install zoom-client
I can also visit either the Snapcraft store or Flathub and find all kinds of necessary software available that I might not otherwise have access to.
So, not only do both Snap and Flatpak make installing software much easier on Linux, but they also open the floodgates to software that would otherwise be either challenging or impossible to install on Linux. To make this even more appealing, some distributions roll Snap and/or Flatpak support into the GUI app store. For example, I can search for Zoom in the Pop!_OS Pop Shop and find an entry listed (Figure 1).
As you navigate the waters of Linux, you'll find that it's not all rosy concerning Snap and Flatpak. Within the Linux community, there's been a pretty consistent state of unrest about which is the best option and why these tools aren't necessarily good for Linux as a whole.
However, I'm all for anything that makes Linux easier for the average user, and both Snap and Flatpak do just that. So, from my perspective, both Snap and Flatpak have done a world of good for the open-source operating system and end-users in general. Because of that, I highly recommend users new to Linux not bother listening to the bickering on either side of the fence. Although both camps have valid reasons why their package format is the best, both of them offer significant benefits to Linux as a whole and those who use it.