Flatpak is currently winning the race with the highest adoption rate (Hell, even pirates are using it), snap is mostly being backed up by Canonical with SolusOS using it after Canonical paid them in some event. AppImage are something different IMO and I will explain why later.
Flatpak and snap are pretty similar in features:
- Both are sandboxed (Flatpaks with SELinux and snap with AppArmor)
- Both are self-contained (Flatpak, however, can load external libraries through runtimes)
- Both can do delta updates
Flatpak is quite nifty IMO, it can share libraries through runtimes, which saves spaces and allow the runtime provider to update libraries with security patches or bugfixes if needed, or load themes, it also can use third party repos (currently, the biggest one is Flathub, followed by GNOME) which leads to more flexibility in available apps and less dependency on a single provider. Snap is more self-contained, similar to AppImage, it load external components and currently only Canonical has the know-how to host a snap server, and they insist on you to use it, which pretty much makes it centralized, furthermore I don't know if every AppArmor patch used by snap are upstreamed, so its sandbox might be lacking outside Ubuntu.
Sadly flatpak isn't the magic bullet I wished it was, its command line tool is a bit weird syntax-wise compared to the standard package manager and its devs want it that way, furthermore it seems impossible to flatpak a command line utility such as htop or cmus (I have yet to see someone doing it, while snap have command line tools packaged for usage on IoT devices).
AppImages are more alike to PortableApps, they are a self-contained disk image which runs everywhere without having to install something else, it is limited but at the same time useful since it is truly portable, but IMO not really suitable for proper package management since it is pretty much a big magical blob. You can sandbox it manually btw.
Besides those three options mentioned, there is also
Nix (and its GNU fork,
Guix) which is distro-agnostic and work more like package managers but with more powerful features and support for multiple versions of the same package being installed, without dealing with dependencies (it pretty much hardlinks and keeps a X version of a library around until nothing else uses it).
It is totally possible to use a stable distro (such as Debian) without dealing with outdated software and adding external repos to the main package manager already. I know quite a few users on /r/debian use Nix and flatpak to complement Debian's packages and run up-to-date selected software. It is also useful on cutting edges distros like Fedora too, for example, one could use
GNOME 3.26 apps on Fedora 26 while it is stuck with GNOME 3.24..