Technically speaking, AppImage and xdg-app (now known as FlatPak) has been around long before Snaps ever were a thing by Canonical. And avid users had been using git
for updating software via repo syncs and pip
for installing software.
These formats and methods alone do not bother me. It’s the standards competing for ubiquity that frustrate me, because each format has strengths and weaknesses associated with them, even though they essentially do the same thing. It’s like everyone trying to patent the same idea without legal authority that drops the hammer for which patent wins.
For cross-platform distribution to succeed, there has to be one format for people to use, but that runs steadfast against the spirit of open-source, where people can make an improvement upon an existing idea by iteration. I am sure if it were up to most old-school Linux users everyone would be on the latest version of Slackware and using tarballs, instead of having to screw around with competing shared library methods that also have their own strengths and weaknesses. Even then, iterative systems that build from that one system would certainly have package incompatibilities, leading to the kind of dependency hell that users shouldn’t ever be burdened with. (It still happens, but it’s easier to deal with it on systems with frontends for package management backends.)
Since I know nothing about Flatpak, let me run through what I know about the others;
- Snaps
- Canonical intends for this to be the universal independent package format
- Developers can build from a variety of locations
- Most developers may end up using snapcraft.io for hosting
- May cause duplicate libraries to be installed
- AppImage
- Intended for app portability between systems regardless of distribution
- Has already a large application repository
- Puts the onus upon users to update, not a software manager
- Linus Torvalds thinks it’s awesome
So AppImage was created for user convenience, while Snaps (and maybe FlatPak also) appears to be created for developer convenience. None of this is awful. In fact, a lot of it is pretty good, and it isn’t like Windows doesn’t have multiple methods of installing software, from being able to sideload store apps, to using binaries with different installation software, to Microsoft Installer (MSI) files. They generally do the same thing, and they generally act upon the Windows Registey and Windows filesystem in the same way. The difference between what’s in Windows and what’s going on in Linux is there’s no central management utility, or even a way to report to a central management utility.
As for what Steve mentioned, Snaps may be encouraged to developers of non-free software for the exact reason it could be “Black-boxed” and rendered non-open. Contrary to popular belief, I say whether or not this closes off third-party developer accessibility doesn’t matter, because if somebody really wants to keep prying eyes away from their code they’d use a different format anyway which would permit such a thing. Even GitHub sources can be rendered private and inaccessible to the general public should one choose it.