As a user, the best way to handle applications is a central repository where interoperability is guaranteed. Something like what Debian does with the base repos. I just run an install and it’s all taken care of for me. What’s more, I don’t deal with unnecessary bloat from dozens of different versions of the same library according to the needs of each separate dev/team.
So the self-contained packages must be primarily of benefit to the devs, right? Except I was just reading through how flatpak handles dependencies: runtimes, base apps, and bundling. Runtimes and base apps supply dependencies to the whole system, so they only ever get installed once… but the documentation explicitly mentions that there are only few of both meaning that most devs will either have to do what repo devs do—ensure their app works with the standard libraries—or opt for bundling.
Devs being human—and humans being animals—this means the overall average tendency will be to bundle, because that’s easier for them. Which means that I, the end user, now have more bloat, which incentivizes me to retreat to the disk-saving havens of repos, which incentivizes the devs to release on a repo anyway…
So again… who does this benefit? Or am I just completely misunderstanding the costs and benefits?
So again… who does this benefit?
It benefits me because I can install 32 bit software as Flatpak without any troubles and without messing up my whole system with 32 bit libraries dependency hell.
It benefits the end-user.
People do not want to be in dependency resolution hell; where they have three programs that all use different versions of libssl and require them to install all of them properly and point each application to the correct one. Most users have no ability to resolve problems like that. By not bundling, the application developer is forcing them to either try anyway or just not install their software.
Bundling dependencies with Flatpak or Snap helps the end user at the cost of only a few extra megabytes of space, which most users have in abundance anyway.
Traditional distro repositories also solve these dependencies for the user.
Only if everything you need is in the repository. If you have a application you want to install that doesn’t work with your repo supplied version of library, then you are gonna have fun making it work without messing other stuff up. And end users don’t really want to deal with that. Also disk space today is cheap, compared to the time it takes to learn and fix such issues.
Not really; they will try to automatically download dependencies, but they don’t provide the application with resolution to the correct dependency. So upgrading libssl for one dependency could still break another.
It benefits both devs and end users.
Many people don’t have the time or resources to manage a broken application especially devs who have to deal with that on several Linux distributions simultaneously.
Many distros use different package install scripts and repos to suit their specific needs. If I were to use a Debian-based distro, I would need to use apt to grab from a Debian-compatible repo. If I somehow got apt to work on Fedora, then not only would the program I installed not work, it would likely annihilate many of the preexisting dependencies and possibly brick the system.
I personally use Arch Linux which uses pacman, my package manager of choice, and a lot of times I’ll find an application that doesn’t work on my system due to mismatched dependencies. Arch is incompatible with .deb and .rpm files and does not use the Debian repo and its derivatives. It uses the AUR and its own derivatives of that repo. I don’t have the time or skill to get a program to work with a newly updated dependency on one distro nevermind however many exist on the internet. Many devs do that for free after they’ve been working at their job for hours and/or taking college courses.
What a Flatpak or appimage (ignoring goofy aah snaps) really does is allow a developer to update dependencies for their application at their own pace without having to play catchup when something inevitably breaks due to an update. It allows for a more stable system. As a Debian Bro, you might not need that, but on rolling-release distros like Arch and funky distros like Manjaro that can be very much welcome.
Yes I enjoy that extra stability and organization, especially as I use a rolling distro as a gamer. Hearing talk about Flatpak I disliked it but I decided to try it out after Steam Native bugged due to a system library update. I enjoy it now also because it feels good that installing apps don’t get a root password and scatter files everywhere they please in the system.
Bloat is often held up as the ultimate evil without further ado, scaring everybody. I think a little extra disk space would be more concerning on an embedded system. Snap is also aimed at embedded systems btw.
Snaps benefit Canonical. They’re trying to build their own walled garden, and anyone else benefiting is not a consideration.
Flatpaks are different, because they aren’t purpose-built to benefit a single company. I wouldn’t use them to install most things, but there’s a few places where there’s benefits for at least some people. It’s a lot easier to maintain large projects like Firefox on older distro releases for example. You get sandboxing, so that say a bug in Firefox won’t let malicious javascript take over your system. It lets vendors release closed source software that would never be included in your distro’s repos. These are all things that may not benefit you, but in theory they’ll benefit enough people that it’s worth it.
I’ve also moved onto NixOS so don’t use either one anyways. I think Nix or something like it is the future, even if you’re running a more traditional distro, though that might just be misplaced optimism, see the success of worse is better.
That’s a fascinating topic, and I wonder how AppImages sit in this argument.
AppImages are kind of harmless in this, as they are just bundled up binaries and dependencies. They don’t force you into a store, update system or even installing of the app, they are just files that sit on drive. They can be very useful if you want to quickly change between old and new versions of an app.
They wouldn’t work for replacing a traditional Linux package manager, but as for portable Linux binaries, I quite like them.
OH I asked a question like that not to long ago. Appimages do tend to be smaller, they have sandboxing, and getting updates can be hard. Sometime you have just download the new appimage and delete the old one. Other then that is does serve the same function of universal install format.
As for Flatpaks: Me. It’s easier, simpler, cleaner, more secure and overall more convenient. It’s like on mobile, permission based. But without the shady corporations behind it.
About Snaps: some edge devs but more importantly: Canonical.