For simple “apps” it is fine, but my computer is not a phone and I don’t use it like one. I mostly don’t want simple apps that have their own little sandbox to play in.
I want full-scale applications that are so big they have to use system libraries to keep their disk size down. I also don’t want them in a sandbox. I want them to have full access to the system to do everything they need to do, I want them to integrate with far-flung parts of the system and other applications too. I only use applications I trust and don’t want them constantly pestering me about configuring permissions and access in just the right ways and opening all the right doors and ports and directories to make them work, I trust them by installing them, they have permission, and the easier they make it to access everything I will inevitably be asking them to access, the happier I am.
My practical concern with distribution methods like AppImage and Flatpak is that now I have to do a lot of extra thinking every time I’m installing anything. To pick how I’m going to install something, I have to solve the matrix of “what kind of distribution method do I prefer for this type of software” combined with “what distribution methods are available for this software” and “what versions are the available distribution methods for this software” and “what distribution method provides the best way for this software to get updates”.
In the olden days, when the distro’s package manager was the only choice, all I had to care about was “is it available in my distro” and the decision tree was complete. I appreciate all the availability of choice that things like AppImage provide, but it doesn’t actually make it easier for me, it just makes it easier for the packager of the software. They’re doing less, but making more work for me, as a user. Distro packages are a lot of work for the maintainer precisely because they at least make an effort to solve many of these issues for the user. The value-add that maintainers provide is real.
omg I cannot fucking believe that while I was typing this I just saw another distro package nonsense:
There is this very good tool called soar which I use for static binaries. (It also has support for appimages but to be honest it is not as good as AM rn).
Well we just got a complain that fastfetch is not displaying the package count of soar, which fastfetch is able to do.
Turns out this is because the archlinux package is built without SQLITE3 which is needed for that feature to work 😫
And what’s worse is that account registrations are disabled in the archlinux gitlab, so I have to jump thru some hoops to get a basic bug report filed…
I want full-scale applications that are so big they have to use system libraries to keep their disk size down
Linux is in such sad state that dynamic linking is abused to the point that it actually increases the storage usage. Just to name a few examples I know:
most distros ship a full blown libLLVM.so, this library is a massive monolith used for a bunch of stuff, it is also used for compiling and here comes the issue, by default distros build this lib with support for the following targets:
Gentoo used to offer you the option to limit the targets and make libLLVM.so much smaller, but now rust applications that link to llvm have issues with this with caused them to remove that feature…
Another is libicudata, that’s a 30 MiB lib that all GTK applications end up linking to for nothing, because it is a dependency of libxml2, which distros override to build with icu support (by default this lib does not link to libicudata) and what’s more sad is that the depenency to libxml2 comes because of transitive dependency to libappstream, yes that appstream that I don’t even know why most applications would need to link to this.
And then there is archlinux that for some reason builds libopus to be 5 MiB when most other distros have this lib <500 KiB
Sure dynamic linking in the case of something like the coreutils, where you are going to have a bunch of small binaries makes sense, except you now have stuff like busybox which is a single static bin that acts as each of the different tools by checking the name of the symlink that launched it and it is very tiny at 1 MiB and it provides all your basic unix tools including a very good shell.
I have all these applications using 3.2 GIB of storage while the flatpak equivalent actually uses 14 GiB 💀: https://i.imgur.com/lvxjkTI.png
flatpak is actually sold on the idea that shared dependencies are good, you have flatpak runtimes and different flatpaks can share, the problem here is that those runtimes are huge on their own, the gnome runtime is like 2.5 GiB which is very close to all those 57 applications I have as appimage and static binaries.
but it doesn’t actually make it easier for me, it just makes it easier for the packager of the software
Well I no longer have to worry about the following issue:
My application breaking because of a distro update, I actually now package kdeconnect as an appimage because a while ago it was broken for 2 months on archlinux. The only app I heavily rely from my distro now is distrobox.
I also get the latest updates and fixes as soon as upstream releases a new update, with distro packaging you are waiting a week at best to get updates. And I also heard some horror stories before from a dev where they were told that they had to wait to push an update for their distro package and the only way to speed it up was if it was a security fix.
And not only you have to make sure the app is available in your distro packages, you also have to make sure it is not abandoned, I had this issue with voidlinux when I discovered the deadbeef package was insanely out of date.
Another issue I have with distro packages in general is that everything needs elevated rights to be installed, I actually often hear this complains from linux newbies that they need to type sudo for everything and it doesn’t have to be this way, AM itself can be installed as appman which makes it able to work on your HOME with all its features. And you can take your HOME and drop it in any other distro and be ready to go as well.
I couldn’t agree more. Occasionally I’ll use an appimage where something is not packaged for my distro version and I only need it temporarily.
Maybe I’m just long in the tooth, but linux used to be a simple, quite elegant system, with different distros providing different focuses, whether they were trying to be windows clones, something that a business could bank on being there in ten years, or something for those who like to tinker. The common theme throughout was ‘the unix way’, each individual tool was simple, did one job, and did it well. Now we seem to be moving to a much more homogenous ecosystem of distros with tooling that tries to be everything all at once, and often, not very well.
I agree, there’s a place for flatpaks and appimages, but for the most part my computer isn’t it. If I was setting it up as more of an appliance or as a work computer in a fleet of devices, sure they’d be great. I installed VLC in it’s flatpak form on accident once and it was worthless because the entire reason I installed it was to watch either a DVD or Blu-ray, and it didn’t have the libraries to read the disc. It took me far longer than I’m willing to admit to figure out it was because flatpak. I’m sure there’s a way to work around that, but at that point I was done with any flatpaks for anything that might need additional anything.
They do cut down on needing multiple versions of the same package, so I’ll sometimes install the flatpak version to try something out if I’m not sure it’s what I want.
AppImage is meant to be updated using the embedded zsync info the runtime, that is the user should never have to open the app to update it.
The user needs to have something like AM, appimagelauncher or appimaged that is then able to parse the info and update the appimages using appimageupdatetool
This method also provides delta updates, meaning it doesn’t download the entire app but only a diff, see this test with CPU-X where it downloaded 2.65 MiB to update the app:
For me it is the “Windowsy” feeling of downloading an executable from some website. I prefer having all my packages managed in one place.
Makes sense, I kinda like it from a distributor standpoint. Flatpak is my favorite though.
For simple “apps” it is fine, but my computer is not a phone and I don’t use it like one. I mostly don’t want simple apps that have their own little sandbox to play in.
I want full-scale applications that are so big they have to use system libraries to keep their disk size down. I also don’t want them in a sandbox. I want them to have full access to the system to do everything they need to do, I want them to integrate with far-flung parts of the system and other applications too. I only use applications I trust and don’t want them constantly pestering me about configuring permissions and access in just the right ways and opening all the right doors and ports and directories to make them work, I trust them by installing them, they have permission, and the easier they make it to access everything I will inevitably be asking them to access, the happier I am.
My practical concern with distribution methods like AppImage and Flatpak is that now I have to do a lot of extra thinking every time I’m installing anything. To pick how I’m going to install something, I have to solve the matrix of “what kind of distribution method do I prefer for this type of software” combined with “what distribution methods are available for this software” and “what versions are the available distribution methods for this software” and “what distribution method provides the best way for this software to get updates”.
In the olden days, when the distro’s package manager was the only choice, all I had to care about was “is it available in my distro” and the decision tree was complete. I appreciate all the availability of choice that things like AppImage provide, but it doesn’t actually make it easier for me, it just makes it easier for the packager of the software. They’re doing less, but making more work for me, as a user. Distro packages are a lot of work for the maintainer precisely because they at least make an effort to solve many of these issues for the user. The value-add that maintainers provide is real.
omg I cannot fucking believe that while I was typing this I just saw another distro package nonsense:
There is this very good tool called soar which I use for static binaries. (It also has support for appimages but to be honest it is not as good as AM rn).
Well we just got a complain that fastfetch is not displaying the package count of soar, which fastfetch is able to do.
Turns out this is because the archlinux package is built without SQLITE3 which is needed for that feature to work 😫
And what’s worse is that account registrations are disabled in the archlinux gitlab, so I have to jump thru some hoops to get a basic bug report filed…
Linux is in such sad state that dynamic linking is abused to the point that it actually increases the storage usage. Just to name a few examples I know:
most distros ship a full blown
libLLVM.so
, this library is a massive monolith used for a bunch of stuff, it is also used for compiling and here comes the issue, by default distros build this lib with support for the following targets:-- Targeting AArch64 -- Targeting AMDGPU -- Targeting ARM -- Targeting AVR -- Targeting BPF -- Targeting Hexagon -- Targeting Lanai -- Targeting LoongArch -- Targeting Mips -- Targeting MSP430 -- Targeting NVPTX -- Targeting PowerPC -- Targeting RISCV -- Targeting Sparc -- Targeting SystemZ -- Targeting VE -- Targeting WebAssembly -- Targeting X86 -- Targeting XCore
Gentoo used to offer you the option to limit the targets and make
libLLVM.so
much smaller, but now rust applications that link to llvm have issues with this with caused them to remove that feature…Another is libicudata, that’s a 30 MiB lib that all GTK applications end up linking to for nothing, because it is a dependency of libxml2, which distros override to build with icu support (by default this lib does not link to libicudata) and what’s more sad is that the depenency to libxml2 comes because of transitive dependency to libappstream, yes that appstream that I don’t even know why most applications would need to link to this.
And then there is archlinux that for some reason builds libopus to be 5 MiB when most other distros have this lib <500 KiB
Sure dynamic linking in the case of something like the coreutils, where you are going to have a bunch of small binaries makes sense, except you now have stuff like
busybox
which is a single static bin that acts as each of the different tools by checking the name of the symlink that launched it and it is very tiny at 1 MiB and it provides all your basic unix tools including a very good shell.Even Linus was surprised by how much dynamic linking is abused today: https://lore.kernel.org/lkml/CAHk-=whs8QZf3YnifdLv57+FhBi5_WeNTG1B-suOES=RcUSmQg@mail.gmail.com/
https://github.com/ivan-hc/AM
I have all these applications using 3.2 GIB of storage while the flatpak equivalent actually uses 14 GiB 💀: https://i.imgur.com/lvxjkTI.png
flatpak is actually sold on the idea that shared dependencies are good, you have flatpak runtimes and different flatpaks can share, the problem here is that those runtimes are huge on their own, the gnome runtime is like 2.5 GiB which is very close to all those 57 applications I have as appimage and static binaries.
Well I no longer have to worry about the following issue:
My application breaking because of a distro update, I actually now package kdeconnect as an appimage because a while ago it was broken for 2 months on archlinux. The only app I heavily rely from my distro now is
distrobox
.I also get the latest updates and fixes as soon as upstream releases a new update, with distro packaging you are waiting a week at best to get updates. And I also heard some horror stories before from a dev where they were told that they had to wait to push an update for their distro package and the only way to speed it up was if it was a security fix.
And not only you have to make sure the app is available in your distro packages, you also have to make sure it is not abandoned, I had this issue with voidlinux when I discovered the deadbeef package was insanely out of date.
Another issue I have with distro packages in general is that everything needs elevated rights to be installed, I actually often hear this complains from linux newbies that they need to type
sudo
for everything and it doesn’t have to be this way, AM itself can be installed asappman
which makes it able to work on yourHOME
with all its features. And you can take yourHOME
and drop it in any other distro and be ready to go as well.It doesn’t sound like they’re making more work for you. It sounds like you’re making more work for yourself, and it sounds exhausting.
I couldn’t agree more. Occasionally I’ll use an appimage where something is not packaged for my distro version and I only need it temporarily.
Maybe I’m just long in the tooth, but linux used to be a simple, quite elegant system, with different distros providing different focuses, whether they were trying to be windows clones, something that a business could bank on being there in ten years, or something for those who like to tinker. The common theme throughout was ‘the unix way’, each individual tool was simple, did one job, and did it well. Now we seem to be moving to a much more homogenous ecosystem of distros with tooling that tries to be everything all at once, and often, not very well.
I agree, there’s a place for flatpaks and appimages, but for the most part my computer isn’t it. If I was setting it up as more of an appliance or as a work computer in a fleet of devices, sure they’d be great. I installed VLC in it’s flatpak form on accident once and it was worthless because the entire reason I installed it was to watch either a DVD or Blu-ray, and it didn’t have the libraries to read the disc. It took me far longer than I’m willing to admit to figure out it was because flatpak. I’m sure there’s a way to work around that, but at that point I was done with any flatpaks for anything that might need additional anything.
They do cut down on needing multiple versions of the same package, so I’ll sometimes install the flatpak version to try something out if I’m not sure it’s what I want.
Interesting you compare it to Windows, given how in OS X you literally just drag applications into your Applications folder to install them.
https://github.com/ivan-hc/AM
So, vibes?
And the added work with keeping them updated.
AppImage is meant to be updated using the embedded zsync info the runtime, that is the user should never have to open the app to update it.
The user needs to have something like AM, appimagelauncher or appimaged that is then able to parse the info and update the appimages using
appimageupdatetool
This method also provides delta updates, meaning it doesn’t download the entire app but only a diff, see this test with CPU-X where it downloaded 2.65 MiB to update the app:
Most update themselves & flatpaks are the worst when you need them to work with your system (ie: scripts).
So I guess your opinion is just wrong, sorry! (That’s a joke you guys)
I despised the Windows way of everything having their own updater either running in the background or only alerting you when you want to use an app.
AppImage to me feels like a big step backwards.
Damn, should have said that sooner, I see people don’t tolerate that kind of talking to others in here. Respect the community.
I know! All those down votes are really going to tank my Social Credit Score :(
Yes… good thing this isn’t reddit, right? :)