I’m wondering if a package manager like flatpak comes with any drawback or negatives. Since it just works on basically any distro. Why isn’t this just the default? It seems very convenient.
Others have mentioned disk usage and desktop integration. There is some truth to them, but shared runtimes keeps disk uasge down (although worse than native apps). Desktop launchers now search /var/lib/flatpak/exports/share/applications by default, but I’m still having issues with themes in one or two niche apps.
Trust is the big one. The benefit of your distro’s packages is that they are maintained by a limited number of maintainers. Flatpaks have a much, much larger number of maintainers, which is where sandboxing comes in. Flathub now marks apps with lax permissions as “potentially unsafe”, which is a huge step in communicating this to the average user.
Most desktop apps can get away with having next to no access, as long as they support the appropriate XDG desktop portals.
Ultimately, your mileage will vary, as there are many classes of application which are ill-suited to being sandboxed. Program launchers, programming languages, IDEs, file managers are a few.
As a basic end-user I have not been too happy with my experience with flatpaks. I do appreciate that I can easily setup and start using it regardless of what distro I’m using. But based on standard usage using whatever default gui “app store” frontends that usually come with distros, it tends to be significantly slower than apt, for instance, and there seems to be connection problems to the repos pretty often as well.
I’ve used flatpak for a while because it’s the default ob Fedoras GUI Software Center, but I’ve recently switched back to dnf and native packages where I can.
The thing is, that I have a shitty 500GB SSD with a shitty 50Mbit Internet connection (which is closer to 30Mbit because my house still has lead cables instead of copper). So downloading 300+ MB of libraries for a 2MB Program is just not feasible for me.
It does not. Flatpak uses the full platforms, the native package manager will install the individual libraries that are needed. This is technically a flathub thing and could be implemented more granularly, but I don’t think that is going to happen.
I’ve started getting warnings about deprecated platforms but flathub is very slow to update the packages that use them (even with reports), which is unfortunate too and not something I’ve encountered in my distro repository.
Yes, of course. But afaik the idea of flatpak is, that every program has a list of libraries and versions of them that it wants. So when program X was built with libfoo version 1 and program Y needs libfoo version 2, you basically download the library twice.
When you go through the package manager, you just download the current version that’s in the repository. This can lead to problems when a program expects some functionality that has since been deprecated, but I never actually had issues with that.
Also, a lot of the libraries a flatpak downloads are already installed on the system, just in a different version, I noticed.
I’m on a home computer that I use by myself, mind you. So if something breaks, it’s just my own problem. If I were to use software in production or even just administer the computer of a tech-unsavy relative, I’d likely use flatpaks or similar for stability and security reasons.
I’m a little put off by the inconvenient command line and the mandatory bells and whistles (flathub is nice and all, but must it be baked into the main executable rather than having the package manager as an optional thing on top?).
So far, AppImage just looks superior to me. Works without installing a runtime into my system, no need to become root and integrate an app into a system-wide managed package repository, I can just run it.
One of the use cases I would like to have used Flatpak for is Visual Studio Code. Unfortunately, I found the isolation to be too onerous for developer needs. Take the Rust compiler toolchain. There’s no way to access that from VSCode. There are ways to add on tools to the VSCode environment, but that feels like a kludge when I already have everything installed and set up. And if the toolchain isn’t available for Flatpak, tough luck. Other features just simply don’t work. I eventually switched to using the Ubuntu builds from the VSCode developers.
Edit: The Rust compiler toolchain can be added onto Flatpak because there is a packaged version of the toolchain, but it’s not the host environment’s version. Other tools like the fish shell might be entirely unavailable.
If you have an unusual setup, it can be annoying trying to give programs permissions and sometimes it just outright doesn't work. For example, I mainly game on a laptop which has a pretty small hard drive, so I tend to put most of my games on an external hard drive. Flatpak really doesn't play well with that.
I don’t use Flatpak much, but I rarely see issues. Sometimes I see minor things like themes not quite being right, but its never been bad enough for me to spend the time to fix it.
I suppose another downside is the need to have the base runtime packages, so it could take more disk space if each app uses a different one. In practice apps will share runtimes though.
The biggest downside is that it’s only for distributing applications with a graphical user interface. Command line utilities still need another method of distribution.
The main reason I don’t use them is because when I move my nixos config to a new machine as far as I know you cant get them to auto install. I have to remember which ones I had installed and redo them manually.
Which is why if for some odd reason I don’t want to just install from the nix pkgs repo. I use app images. I can keep them in a directory which I can just copy over to the new machine with my nixos config files.
GPU drivers. It uses the Ubuntu 22.04 (LTS) userspace side of drivers. Could be incompatible with your kernel. Had all sorts of graphical weirdness with my AMD GPU with flatpak Steam.
Generally using only a few flatpaks is where it’s generally “bloaty”. Adding more actually balances out the equation ans you have more apps using generally shared runtimes.
I feel like this should be required reading for a lot of Linux users. That article is a couple years old now, but I think is even more true now than it was when it was written. Having a middleman (package maintainer) between the user and the software developer is a tremendous benefit. Maintainers enforce quality, and if you bypass them, you’re going to end up with Linux as the Google Play Store (doubly so if you try and fool yourself into thinking it won’t happen because “Linux is different”)
What I find most annoying is the extra drive space required. It makes backing up and restoring my computer so much more annoying. The upside of this is that I’ve ended up learning how to install from source so I can avoid them when a deb package is not available!
Add comment