Flatpak seems to be the best choice for consistency and to have it working straight out of the box. I think Linux currently needs this because we’re getting a lot less tech-savvy Linux users nowadays. Don’t get me wrong; package managers should still be used, but how are we going to get people to change if they run into package conflicts or accidentally uninstall a wrong package?
Until it doesn’t work. There’s a lot of subtlety, and at some point you’ll have to match what the OS provide. Even containers are not “run absolutely anywhere” but “run mostly anywhere”.
That doesn’t change the point, of course; software that are dependent on the actual kernel/low level library to provide something will be hard to get working in unexpected situations anyway, but the “silver bullet” argument irks me.
Well, that’s the neat part. We don’t need to do that because what Flatpak does, doesn’t matter for them. People can just install Flatpak in their system and they have access to everything. I realise for system components it’s a different story, but that’s not the use case, it’s for applications.
Why would you want the app devs to make that? The whole problem with distro-specific packages is having to package for multiple formats and it’s a painstaking process that really isn’t worth any amount of time investment at all. If you’re an app developer, you’d much rather just make a universal package and hope that some distro package maintainer packages your app for their distro. That’s just basic common sense…
Because Flatpaks can’t share libraries or anything. It creates a lot of bloat that doesn’t need to be there. It’s great for users that want to make sure the app will always work, but it isn’t great for being efficient.
This is just a straight up lie. Flatpaks do share libraries, both as runtimes (as seen even in the screenshot here) and through deduplication between different runtimes and runtime versions. There’s usually very little bloat, if any, especially if you use Flatpaks a lot, which you probably should, given the huge number of advantages especially with proprietary apps.
and through deduplication between different runtimes and runtime versions. There’s usually very little bloat, if any, especially if you use Flatpaks a lot,
~20 different GUI applications, flatpak ended up using 14 GiB of storage while the appimage equivalent used 3.2 GIB.
And note I was not able to find flatpaks for ghostty, goverlay, kdeconnect and a few other apps, meaning the actual bloat of flatpak is even higher.
Edit: And this is even worse if you are an nvidia user, flatpak will download the entire nvidia driver as well.
Has security issues even 123 and not to mention the whole bunch of flatpaks that use EOL runtimes which are even worse, not only for security, but also because that single flatpak ends up pulling an entire runtime for itself which makes even more bloated.
And is insanely bloated as you saw already.
I think enough people have summarised that on the internet by now.
Such as? but I likely know already what is going to be said, hopefully is none of the following:
“Depends on libfuse2” (not true since 2022 with the static appimage runtime, this also allows making appimages that work on musl systems, which several like ghostty, goverlay, Steam, gimp, cromite, citron already do)
“You need to build on an old distro and it is hard”, once again not true anymore since you can now bundle the glibc as well (and it is needed for appimages to work on musl systems).
“No wayland”, this is only true if you use linuxdeploy-qt to make the AppImage, the project has been abandoned already for several years and the only project I know that still uses it is qbittorrent-enhanced.
EDIT: And also hopefully you are aware that a lot of flatpaks are literary an AppImage shipped in a flatpak runtime, like:
I just what to install an app. I don’t want to spend an evening figgering out how to get a PWA to install. I don’t want to consult a form or your git repository to install some package I will use once and will be patched out in the next version.
Flatpak seems to be the best choice for consistency and to have it working straight out of the box. I think Linux currently needs this because we’re getting a lot less tech-savvy Linux users nowadays. Don’t get me wrong; package managers should still be used, but how are we going to get people to change if they run into package conflicts or accidentally uninstall a wrong package?
And universal compatability. One repo, for all distros. That’s a big plus too!
Until it doesn’t work. There’s a lot of subtlety, and at some point you’ll have to match what the OS provide. Even containers are not “run absolutely anywhere” but “run mostly anywhere”.
That doesn’t change the point, of course; software that are dependent on the actual kernel/low level library to provide something will be hard to get working in unexpected situations anyway, but the “silver bullet” argument irks me.
Everything is flawed, there is no silver bullet. But again, it’s still a massive improvement over what we had previously.
That’s called having just one distro.
Great… Now, you just need to convince the big distros to do that… Easy!!!111
Well, that’s the neat part. We don’t need to do that because what Flatpak does, doesn’t matter for them. People can just install Flatpak in their system and they have access to everything. I realise for system components it’s a different story, but that’s not the use case, it’s for applications.
Edit: typo.
Thats… the point of flatpak.
It is also nice to have independent packages. Consistent user experience means a lot.
It’s useful, but it isn’t the best option for everyone, so other options should be available.
Why would you want the app devs to make that? The whole problem with distro-specific packages is having to package for multiple formats and it’s a painstaking process that really isn’t worth any amount of time investment at all. If you’re an app developer, you’d much rather just make a universal package and hope that some distro package maintainer packages your app for their distro. That’s just basic common sense…
Because Flatpaks can’t share libraries or anything. It creates a lot of bloat that doesn’t need to be there. It’s great for users that want to make sure the app will always work, but it isn’t great for being efficient.
This is just a straight up lie. Flatpaks do share libraries, both as runtimes (as seen even in the screenshot here) and through deduplication between different runtimes and runtime versions. There’s usually very little bloat, if any, especially if you use Flatpaks a lot, which you probably should, given the huge number of advantages especially with proprietary apps.
~20 different GUI applications, flatpak ended up using 14 GiB of storage while the appimage equivalent used 3.2 GIB.
And note I was not able to find flatpaks for ghostty, goverlay, kdeconnect and a few other apps, meaning the actual bloat of flatpak is even higher.
Edit: And this is even worse if you are an nvidia user, flatpak will download the entire nvidia driver as well.
AppImage isn’t a good comparison for a lot of different reasons and I think enough people have summarised that on the internet by now.
Alright what does flatpak offer in this case?
Has performance issues 1
The thing is not XDG Base dir compliant 1 2
Has security issues even 1 2 3 and not to mention the whole bunch of flatpaks that use EOL runtimes which are even worse, not only for security, but also because that single flatpak ends up pulling an entire runtime for itself which makes even more bloated.
And is insanely bloated as you saw already.
Such as? but I likely know already what is going to be said, hopefully is none of the following:
“Depends on libfuse2” (not true since 2022 with the static appimage runtime, this also allows making appimages that work on musl systems, which several like ghostty, goverlay, Steam, gimp, cromite, citron already do)
“You need to build on an old distro and it is hard”, once again not true anymore since you can now bundle the glibc as well (and it is needed for appimages to work on musl systems).
“No wayland”, this is only true if you use linuxdeploy-qt to make the AppImage, the project has been abandoned already for several years and the only project I know that still uses it is qbittorrent-enhanced.
EDIT: And also hopefully you are aware that a lot of flatpaks are literary an AppImage shipped in a flatpak runtime, like:
https://github.com/flathub/dev.vencord.Vesktop/blob/master/dev.vencord.Vesktop.yml#L34-L46
https://github.com/flathub/com.ultimaker.cura/blob/master/com.ultimaker.cura.yml#L24-L44
https://github.com/flathub/xyz.armcord.ArmCord/blob/master/xyz.armcord.ArmCord.yml#L40-L43
https://github.com/flathub/com.heroicgameslauncher.hgl/blob/master/com.heroicgameslauncher.hgl.yml#L191-L196
https://github.com/flathub/chat.simplex.simplex/blob/master/chat.simplex.simplex.yml#L22-L31
https://github.com/flathub/menu.kando.Kando/blob/master/menu.kando.Kando.yml#L33-L40
So yeah AppImage isn’t ideal, lets ship it in a container anyway 😁
I just what to install an app. I don’t want to spend an evening figgering out how to get a PWA to install. I don’t want to consult a form or your git repository to install some package I will use once and will be patched out in the next version.