On the other side you have Flatpaks, essentially similar in many ways to Snaps, except it is more open source and relies on individual repositories instead of one central location. This technology can also be installed on nearly anything. So, which one is better? Which one should you use? And most importantly, what are the differences? Let’s find out!
What are the differences?
The differences between Snap packages and Flatpaks aren’t really that numerous. Snap was created in-house by Canonical – the company behind Ubuntu – and the technology is hard-coded to use the Snap package store. Some may be nervous of this, as Ubuntu has total control, and in fact in order to make a Snap package you’ll need to sign a Contributor License Agreement (something that some people are very much against).
With Flatpaks everything is open sourced and is not as centralized as Snaps. What’s more important is that Flatpaks are more focused on delivering software to desktops, and Snap packages are basically just server technology that Canonical has adopted for the desktop but works for both. Flatpak has no centralized store to speak of. Even now, if you install it, you’re not necessarily going to be able to get stuff going that easily. The software essentially works much like the Ubuntu PPA system. You have to go out and find a repository and then add it. This is in contrast to how Snaps work, which only come from the Canonical snappy store and nowhere else (for now).
When you install a Snap package you are essentially getting every single piece of software component you need to run something in one entire package (if you’re confused, think of Docker containers). For example: you install a Snap that bundles the entire Gnome desktop. It’d be bundled with everything, libraries and all. With Flatpak, everything is a little different. Take the Gnome example. The Gnome Desktop flatpak would have all of the files required but not every single library – unless the developer chose to do so. The Flatpak team created a runtime that should house everything you need.
Which one should you use?
It’s hard to say what technology will be the leader here. There is no doubt my opinion on this matter will be met by some angry comments arguing for one position over the other, so before I go any further, I’d just like to be clear. Flatpaks and Snap packages are both very interesting and unique ideas.
It is clear to me, right now at least, that Snap packages would be the thing to use if what you want is a “universal package format.” With Snapd available for nearly every distribution that it can build on, it’s increasingly easy to get going. What’s more important is that anyone can figure it out. You don’t need to hunt down repository urls like Flatpak. Just install and go.
That isn’t to say that Flatpak isn’t worthwhile. If you’re on Fedora 24, for instance, you should take full advantage of Flatpak. You can also get it working on Arch, if you’re into that by installing this AUR package, or by building it yourself from Github.
Conclusion
Though Flatpak and Snappy are not new ideas, they have a lot of force behind them. We’ve had tools like AppImage (and others) in the past, and they never really got that much traction. However, I think that both Flatpak and Snappy have what it takes to make more universal installation tools on Linux take off – even if it means we have two main formats instead of one. Some people say that too much choice on Linux is bad. We have too many distributions, too many binary package formats, too many file system choices, too many desktop environments, and the list goes on. However, I think that what some say is a weakness is also a great strength. We can hedge our bets with both Snappy and Flatpak. If one ends up being bad we can try something else, or if they’re both goo it’s a win-win situation where we all reap the benefits. How do you feel when it comes to Snap packages versus Flatpaks? Tell us below!