Very often I find myself remembering the "bad old days" of Linux. If you wanted to install a simple app, you had to add a random PPA repository, run apt-get update, and pray that it didn't break your system dependencies. If you used Arch Linux instead of Ubuntu, you had to hope someone made an AUR package for it.
Today, the Linux desktop is much better. We have "Universal Package Managers". They bundle the app and all its dependencies into one single package that runs on any Linux distribution.
But now we have a new problem. There are three competing standards: Snap, Flatpak, and AppImage.
I have used all of them extensively over the years. Here is my honest breakdown of how they work, the pros and cons of each, and which one you should actually use.
1. AppImage (The Portable USB Drive)
AppImage is the simplest of the three. It is the closest thing Linux has to a Windows .exe file or a macOS .dmg file.
How it works:
You don't actually "install" an AppImage. You just go to a website, download a single file, make it executable, and double-click it.
# Download the file
wget https://example.com/cool-app.AppImage
# Make it executable
chmod +x cool-app.AppImage
# Run it
./cool-app.AppImage
The Good:
- You don't need root (sudo) privileges to run it.
- You can put it on a USB drive and run it on any Linux computer instantly.
- It leaves your system completely clean. If you want to delete the app, you just delete the file.
The Bad:
- There is no central "App Store" to update them. If a new version comes out, you have to go to the website and download the new file manually.
- It doesn't automatically add a shortcut to your desktop menu (unless you install a third-party tool like AppImageLauncher).
2. Snap (The Corporate Monolith)
Snap was created by Canonical (the company behind Ubuntu). It was designed to solve package management for both servers and desktop computers.
How it works:
You install it via the terminal, similar to standard package managers.
sudo snap install spotify
The Good:
- It handles background services and CLI tools very well. If you need to install a database or a server utility, Snap is actually pretty great.
- Auto-updates are forced in the background, so you are always on the latest version.
The Bad:
- Proprietary Backend: The client is open source, but the server that hosts the Snaps is closed source and controlled 100% by Canonical. The Linux community generally hates this.
- Clutter: Snaps mount themselves as virtual hard drives. If you type
lsblkin your terminal, you will see a massive, ugly list of "loop devices" clogging up your screen. - Performance: Historically, Snaps have been very slow to start up. They have improved recently, but they still feel heavier than the alternatives.
3. Flatpak (The Community Winner)
Flatpak was developed with backing from Red Hat. Unlike Snap, it was built specifically and exclusively for Desktop GUI applications.
How it works:
You add the Flathub repository, and then you can install apps either through your graphical software center or the terminal.
# Install an app
flatpak install flathub com.spotify.Client
# Run the app
flatpak run com.spotify.Client
The Good:
- Decentralized: Flathub is the main store, but anyone can host their own Flatpak repository. It is truly open source.
- Sandboxing: This is the killer feature. Flatpak isolates apps from your main system. An app cannot read your personal files or access your webcam unless you give it permission.
- Flatseal: There is a fantastic GUI app called
Flatsealthat lets you toggle permissions (like Network, Filesystem, Microphone) for every Flatpak app with simple switches.
The Bad:
- Because apps are sandboxed, sometimes they struggle to integrate with system themes or custom cursors.
- File sizes can be large at first, because it has to download shared "runtimes" (like the GNOME or KDE base files). However, once you have the runtimes, future apps install very fast.
Summary: Which one should you use?
If you are setting up a Linux workstation for development or daily use, here is the golden rule I follow:
- Use Flatpak as your default. If a GUI app like Discord, Spotify, or VSCode is available on Flathub, use the Flatpak version. It is secure, updates easily, and respects your system.
- Use AppImage for quick tests. If I just need to use a tool once (like a crypto wallet or a specialized video editor) and don't want to install it permanently, I grab the AppImage.
- Avoid Snap unless absolutely necessary. Unless I am setting up an Ubuntu server and need a specific CLI tool that is only packaged as a Snap, I remove
snapdfrom my system entirely.
That's pretty much it. The universal package war was messy for a few years, but in 2026, the community has spoken, and Flatpak is the clear winner for the Linux desktop.
Top comments (0)