Flatpak -- It's not without it's own issues, of course, but it does the job. I'm not fan of how snaps are designed, and I don't think canonical is trustworthy enough to run a packaging format. Appimages are really just not good for widespread adoption. They do what they are designed to do well, but I don't think it's wise to use them as a main package format.
Flatpacks give me the least trouble so I guess those. All though appimages seem alright too. Snaps however seem to never want to install. I like the idea of easy one click installs for every distro but I think we are a few years away from that.
As far as I know, Flatpaks have the best foundation currently, there are a number of issues, but they are fixable and not entirely by design. And with Fedora Silverblue/Kinoite and OpenSUSE MicroOS you can really see how native debs/rpms/whatever isn't really that good of an idea for the average user and Flatpak is a solution to that.
Appimages at a glance seems like a perfect solution for apps that for some reason or another needs to be kept outdated. But there is (was?) an issue of it not really bundling everything it needs, it looks and behaves as it is portable, but as far as I'm aware, it really isn't.
And then there's Snap. Yeah, that one is just weird, it honestly just doesn't feel like a proper solution to any of the problems it tries to fix.
The vast majority of flatpaks are not made by the developers of the software. I could fork any software that is not in flathub, make modifications without permission, bundle a flatpak and distribute it as the official version. You would be none the wiser about it.
For me it's Flatpaks at the moment. Adhering to FOSS means that I try to avoid Snap. AppImages are pretty good, since it's just an executable (and I think there's an AppImage updater as well?), but Flatpak is preferred for me since I like the idea of having containerised systems because it's easily manageable under this sort of central manager, i.e. Flatpak. I typically just install everything using Flatpak and update through that.
Flatpaks because their updating works (compared to my experience with Appimages) and the Apps starting instantly (compared to my limited experience with snaps). But sadly, a lot of production software doesn't want to support either of this package formats? I haven't seen support from Davinci Resolve or Mari, as an example.
Appimages could've been great if they had a store front like Flatpak, so while I do not always prefer Flatpak (because of how big the first download is) I use it the most.
package myself; I chose Gentoo (and previously Arch) in part because its reasonably easy to package things there.
Most build systems are covered by eclasses ( libraries) that handle the repetitive minutia every package that build system needs.
Here's the tuba ebuild for example (from GURU, the Gentoo equivilant of the AUR), 90% of it is just listing the dependencies and telling it to use a few eclasses to handle everything else.
Appimages are nice, self-contained apps and I do like that they're super simple to install and run. Downside is that they're often a bit bigger in size and not all apps can be packaged as appimages. Oh and the guy who runs many appimage repos is a dick.
Snaps have good security, OS-integration (on Ubuntu at least) and can run CLI apps well. Downsides are that Canonical controls the technology and repositories, which end users may enjoy because higher curation of apps, but the system is less open and reliant on Ubuntu for its existence.
Flatpak imo is the best compromise. It's an open standard which works well across various distros without hassle. Downsides are that it's not super integrated into your OS very well and it's larger than a native app. For one, I have a couple flatpak apps that don't respect my system's themes yet.
That being said, these are issues being worked on by flatpak, and being worked on openly! I prefer to go with Flatpaks where I can, but AUR and Pacman when those aren't available. If I only need an app to do one thing and then can discard it (ie. flashing a USB with balena etcher) appimages are nice because they don't leave an impact on the host system.
The biggest problem with Flatpaks and Snaps is the sandboxing; I've had so many sandbox related issues, specifically around trying to get system libraries talking to IDEs. I wish developers could choose to not sandbox specific things, one size does not fit all!
True the sandboxing sucks, but it's good security practice -- It just needs to be implemented better. Even now you can sort the issues with sandboxing via flatseal.
Like, Flatseal is awesome but it could be better integrated into DEs by default - especially ones like GNOME and KDE that focus on the less technical users. I think Flatpak contributors are working on a lot of the pinch points with Flatpak UX.
Some sensible defaults wouldn't go amiss so you didn't have to manually configure apps later on. Or a mobile-like permissions system for accessing these resources. Beyond my pay grade though.
Flatpak and Appimages. Flatpaks are the best solution IMO, just better than snaps in about every setting except servers. Appimages are great simply because of their easy portability, just being a single executable. I like having GUI apps in Flatpaks because it separates the updates for those applications from my package manager.
True, I barely ever use them (Yubikey manager is most easily offered via AppImage). I only actively use Flatpaks. I think AppImages should exist though, as the portability aspect could be useful (Syncthing syncing a directory with all your applications to different machines, etc.)
IME Appimages often don’t work cause they don’t actually bundle everything they need (not sure if this is a fault of application developers, or some limitation). When they do work I actually prefer them to Flatpaks, which are honestly too complex IMO.
Although I mostly use native software, I find AppImages useful for testing beta software, since they're one file and easy to try out.
For example: I've been using it with the Krita 5.2 beta and I have also used it before for Godot betas.
I use Flatpak when the native package doesn't work properly or isn't updated at the rate I'd like, although there are cases where I will use it for other reasons, like sandboxing when I don't want an app to have access to everything.
none of them. I don't like the idea of putting security updates in the hands of the developers of each individual application I use.
Oh your app only works with an old broken insecure version of the library? Fuck you then, you can't just decide to install and use the insecure version.
If I'm not using the package manager, I use mostly Flatpak. I will use a random AppImage here and there.
I prefer those two because I can pick when I update them, and I've not had a lot of issues so far. I don't like Snap because it reminds me too much of Windows Update. I know it can all be adjusted to my taste, but I already have an option that works out of the box.
I've used Flatpak, it feels somewhat sluggish;
I had once upon a time used Snap (unwittingly), never again;
Appimages... with a lack of options, they seem to run well, although the two I've used seem to take away quite the chunk of memory.
But if it's a reasonable choice, I'll always go with natively distributed or locally compiled binaries. They may be janky sometimes, but in my opinion they beat the "just ship the entire computer br0" philosophy that clearly comes from the Windows ecosystem.
AppImage is a nice idea, and avoids some of the performance overheads from containerised systems, but lacks a reasonable self update mechanism, lacks code signing and the desktop integration (having icons show up in the start menu) is poorly implemented.
Snap is essentially a Canonical-proprietary apt replacement with some very serious drawbacks around performance and desktop integration (themes).
Flatpak has some drawbacks but it largely achieves it's design goals, and actually provides some advantages over installing things via the system package manager.
Real talk? I genuinely don't care. I have actual work that needs to get done. I'm going to use whatever I can to make that faster/easier. Of all the decisions I need to make in a day, this is a pretty inconsequential one.
I'm not really incredibly up on the pros and cons outside of user experience, but as a user just trying to use an app, for me flatpak has always seemed the most user friendly. I can install and update them on Pop_OS using the included app store tool, as well as install them from outside the tool. To my memory, snap always requires CLI and hasn't felt smooth, and appimages have felt sketchy AF to me. And like someone else said, updating them isn't smooth or automatic at all.
I prefer AppImages on my Debian desktops as they normally simply work out of the box (download, start) and I had (many years ago) trouble with snap and flatpak.
For personal use, Flatpak when there's no native option, in most cases. They always seem to work and with Flatseal, you can more finely control permissions and local filesystem access of them.
For servers, if it's a single-purpose VM (like I do with my PiHole/AdGuard servers), I'll also go native. Otherwise, Docker for compatibility and ease of management.
I'm still trying them out, but if they work as advertised, then AppImages. That's mostly because I use my desktop and laptop pretty much equally, so being able to copy and AppImage from one to the other and keep going would be really handy.
On a similar note, if a computer dies, being able to just copy and paste them to a new computer, or run them from a portable drive would be great.
There's one called AppImageUpdater, and as you can probably guess, it updates your AppImages.
It's not perfect, as it can only update them if they've been set up for it, and can update one at a time before closing, but it can integrate the AppImage by moving it to your Applications folder and putting shortcuts in the start menu 👍
Flatpak is my preference since it supports multiple remotes (repos) and sandboxing. With flatseal tweaking the sandbox is also easy.
Snaps work great on Ubuntu and support cli tools as well as system components. But their sandboxing doesn't work on many distros and the one and only repo is controlled by one company. If I'm not on Ubuntu, I don't see any reason to choose it over flatpak.
Appimages are great for putting on a USB stick or keeping a specific version of software. But I want to install software from a trusted repository, which Appimages support at best as an afterthought.
Flatpak is the best one imo. Never used appimages, and snap is pure trash (close source, slow, made by canonical). Overall, native packages are imo the way to go, but flatpak is also fairly good.
Snap isn't really closed source, it's common misconception, the closed source is only backend (canonical servers), the snap core itself, which is installed on Ubuntu, is fully open source
I prefer the AUR, but if I have to use one of the three it's gotta be an AppImage these days.
I used to swear by flatpak, but because I'm on nvidia it just turns into a stupidly bloated mess since it never removes older driver versions.
They're certainly not "bad" though, and I use them on my SteamDeck for sure.
For multiple reasons, I don't use Appimage unless I absolutely have to. I avoid snaps completely. IMO, they haven't been performant, and accessing my home folder requires breaking the sandboxing.
Flatpaks are the only ones I use to any degree, much better experience in terms of adjusting app permissions (including home folder access), and better theme integration.
tbh never looked into snaps flatbacks or appimages. However my instinct as a staunch linux is that anything besides apt-get or apt or aptitude is utter trash. we already have apt, why do people feel the need to divert energies to these unneccessary packagemanagement-fads?
Snaps is too well controlled by Canonical and does have it's limits.
Flatpaks can be very secure, and works in most distros. It is one of my favorites.
AppImages are real easy, and is designed to work on most distros. The only problem is that many apps aren't current. So I don't recommend it unless an app provides it on their own sites. AppImages are often made by somebody else.
Out of the three, I prefer Flatpaks. Mainly because they have a nice centralized-capable model for performing updates (but not locked centralized like Snaps are), and I can't say I've personally run into a distro where Flatpaks didn't work.
I haven't taken a look at them from a developer standpoint, but from what I hear the development experience isn't bad? If that isn't the case though, I'd love to hear more about why.
I've only used flatpak and I honestly see no reason to try anything else.
The only issue I've encountered is that Steam games launched by the Steam flatpak occasionally act strange (sometimes they can't locate graphics drivers or connect to online services).
Depends on the goal. For systems admin on Ubuntu servers, snaps work well. They have a lot of functionality that flatpak lacks sorely. AppImages are good for seldom used software that is not on the repository. Flatpaks are…functional, I guess. They are boring but inconsistent, at least flatseal helps to mitigate their flaws a little bit. And they are the most end user friendly of the bunch. In general containerized applications on Linux suck ass. All of them. Also, I hate using the flatpak utility, the reverse domain naming is retarded and brings nothing of value.
Edit: I've also noticed that on old hardware flatpaks are horrendously laggy. That might just be my experience but I've not been happy using flatpaks.
Same here. I don't really like Appimages because (AFAIK, unless there's some tool I don't know about) you have to just check each one individually for updates which feels old fashioned, like Windows.
Snap is just a worse version of Flatpak as far as I can tell, so I don't bother with it.
@CrabAndBroom@throwawayish I like flatpacks and their integration into some stores and the ease of update makes me not hate them. Unfortunately, this is where Linux is headed. Containerization and immutability.
Luckily, we will always have lots of distros to choose from.