Did you evaluate flatpak/appimage/snap before developing XARs? If so, what were the shortcomings that you noticed in them?
I have found reasonably good success with snap on Python and node apps, but am not an expert on them. Just want to know from other practitioners about any gotchas that others might have studied/stumbled upon.
Snap and Flatpak are very much not portable (in the Portable Application sense). Snap relies on a repo and Flatpak heavily encourages one, although it does have a single-file bundle concept. Sadly both of them suffer from many of the other restrictions I mentioned.
AppImage is pretty great, I wish more projects used it.
I don't understand why people favor Snap or Flatpak to Appimage, which looks to be the simplest of the three. Would anyone mind sharing their experiences?
In theory Flatpak allows for sharing of dependencies and has sandboxing built in. This comes at the cost of needing special tooling, a repo, and non-portable (portable here meaning you can put the files wherever you want) applications. In practice you're probably better off using Firejail or the like on AppImage if you want the sandboxing anyway, because of things like the issues noted in the article. Snap is like Flatpak but even worse because it is entirely controlled by canonical.
I wouldn't put appimage on the same level as snap and flatpak. It's more like a random compiled .exe that you just run, it doesn't have an integrated update mechanism, you're supposed to download a new one with every update.
And between snap and flatpak, flatpak sure seems like a winner. For one, other distros can run it their own store instead of Flathub, while snap is pretty much limited to Ubuntu and Snapcraft. Even Ubuntu's forks like Mint and elementary are ignoring snap and going all in on flatpak.
To chime in: I'm super impressed by flatpak. There is a small learning curve as with any tool, but once you get through it it works very well.
Snap uses a compressed image format that makes startup horrid. And snaps don't seem to work well with hidpi resolutions when scaling is enabled (snap doesnt know about the scaling so it draws everything super small).
I haven't used AppImage but between apt, snap, and flatpak, I really see flatpak as the winner for how games should be installed.
On paper snap is great, but at this point we've got better alternatives. If you want to use something snap-like either flatpak or appimage will likely work and be way less user-hostile.
AppImage has a feature that neither Snaps nor Flatpak do: You don't need a repository or special manager for them to work. You can literally just take the AppImage file to (almost) any Linux Desktop on a thumb drive and run it.
For sure, I do agree that Flatpak is better than Snap in general (and appimage works fine too, I guess its lack of a, uh, 'snappy' name for the format has kept it from getting as much mindshare...) In principle all three of them seem acceptable for apps I don't use much, or don't need maximum performance from, but for my main browser...
Provided that the application inside the AppImage is built in a portable way, for which AppImage provided zero support whatsoever, last time I checked.
FlatPak has Runtimes/SDKs for this, Snap has the one true Canonical-controlled base snap.
Snaps have some cool use cases, like the one you mentioned. flatpak isn't there yet for CLI apps or hosting stuff from when I last checked, and the snaps for things like nextcloud just work. On a desktop system though, it's clear that everyone should just adopt flatpak for a universal app standard for the time being.
IMO AppImage is better for his needs. Snap, like Flatpak, are as much distribution systems as they are packages and they are not widely enough adopted yet to make packaging for each worth it vs just providing the binary to download yourself.
Good to hear you're considering it. It may be worth looking into appimages as well. They don't seem to focus as much on security, but perhaps their isolation is better? Flatpaks seem to share quite a bit with each other, and I worry it may create another X11-situation. Flatpaks may still be better overall, though, if they can also have good isolation.
I doubt you should even bother with snaps. They don't seem to be that well supported outside of Ubuntu, and I doubt they will ever be.
Did you evaluate flatpak/appimage/snap before developing XARs? If so, what were the shortcomings that you noticed in them?
I have found reasonably good success with snap on Python and node apps, but am not an expert on them. Just want to know from other practitioners about any gotchas that others might have studied/stumbled upon.
Thanks!
reply