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?

  • hottari@lemmy.ml
    link
    fedilink
    arrow-up
    20
    ·
    1 year ago

    Benefits any software dev on Linux, as flatpak ships all your dependencies in one “container”. This allows you to deploy once and forget about whether some Ubuntu system dependency is on the same version/compatible with your test environment. Software that works everywhere is the biggest win of flatpaks. One could also make the same argument for snaps except the package repository is closed-sourced.

    For me, it allows an easy configurable sandbox with Flatseal. This is the main reason I use flatpaks TBH, software is packaged with too much express permissions on Linux. You also get delta updates. Plus I don’t have to worry about mucking around with system packages if for example some dependency is not available or needs building/installing.