I'm feeling a bit lost when it comes to the different Linux package formats like Flatpaks, Snaps, AppImages, and system packages. I recently stumbled upon these while browsing the software manager, and I tried looking up information online, but I still can't find clear answers. Can anyone break down the main differences between these formats and suggest which one I should consider using?
4 Answers
Distro-native packages (like .deb or .rpm) are archives that contain everything needed for a program, plus metadata for dependencies. They are generally safe and vetted by maintainers but are specific to the distro you're using. Flatpaks and Snaps work across different systems and allow for a more isolated installation, but they take up more space and can be tricky with permissions. AppImages are supposed to be more versatile since they work on multiple distros, but they don't manage dependencies as well and can sometimes become outdated if not manually updated.
System packages are your standard installers that make sure all necessary dependencies are installed along with the software. Flatpaks are more portable, including their dependencies and often being more up-to-date than system packages, but they can have some access restrictions. AppImages are single executable files that are easy to run but usually need to be downloaded fresh each time for updates.
There's a constant push to standardize packaging across different Linux distributions, given the variety we have. If you can find what you need in your system's repository, I'd recommend starting there. But when that's not available, using Flatpaks or AppImages can be a solid alternative, even if they take up more space. The best thing is just to install what you need as the developer intended!
You can actually use all three formats—Flatpaks, Snaps, and AppImages—at the same time. It's just a matter of preference and what you're comfortable with! Just dare to compare them and see what works best for your needs.

I noticed Discord and Spotify had larger sizes in Flatpak compared to the EXE files. Why is that?