AppImage is distro (not) agnostic

AppImage is distro (not) agnostic

Today is the first day, when I regret my website is not developed enough, as I’d love to tack on some tags on this piece and also I’d like to assign it to a series. I hate to make “quick spammy” content the way everybody seems to advise, but in my case I think there’s a case for it. Anyway, this is about programming and why is it so hard. Well, seemingly hard, but I’ll explain in detail.

This will be related to a past piece. I want you to imagine you have an idea, to make a very complicated piece of software. Got it? Good. The piece of software you just imagined is glued together with Python, but leverages incredible hardware facilities found only on CPUs in the last few years. Naturally, there’s a CPU fallback and also GPU acceleration. It’s really a pinnacle of modern technology. Got it? Now imagine it’s a tool, for building a local AI chatbots/agents. No need for subscriptions, but more importantly, very private. You see why it leverages dedicated circuitry and GPU? Good. Here’s the problem. You’re a manufacturer of those very processing units and you’re imagining this very complicated piece of software to build it, so you can sell more units. Now imagine, you built it. Congratulations, I am thrilled to lay my hands on GAIA!

So far so good. But wait, I just want to lay my hands on it, I didn’t get a chance to yet. And this is our problem. You see, the tool works on your machine, not my. But you decided to ship .exe for Windows users, .dmg for MacOS users and finally, .AppImage for Linux users (and I see you provide .deb as well). As I’m daily driving Linux nowadays, I am excited that even Linux gets and “easy” setup option. Let me quote from github:

GAIA now ships as a native desktop app for every platform (PR #731). Download the installer and double-click — no Python, no pip, no terminal required.

Also (please note “non-developer users”:

Install in one click, no terminal required — One-click .exe / .dmg / .deb / .AppImage installers with automatic backend setup on first launch, background auto-updates, and native uninstall. The primary path for non-developer users.

Alright, something anyone can do, so why not me? Well, here’s a spoiler and how I heard about this new release that could have been exciting. Turns out, it doesn’t work. I really want to try it though, so I thought I might open an issue, to draw attention to the problem. If I was a betting man, I’d say this will get fixed, but before it gets fixed, let’s talk about modern programming.

I reported, that the app doesn’t work as intended, just like it didn’t for Michael from Phoronix. My issue was closed, with explanation that only Ubuntu 24.04 is supported. I naively thouhght, that they chose .AppImage, because it’s distro agnostic (well, it’s supposed to be). But just to be sure, I fresh installed vanilla Bubuntu 24.04 LTS, to see if I will be able to use this awesome tool (it has awesome in the name!) or not. Turns out, Utumbu doesn’t ship with curl, which is required to pull the resources from the internet. And that means it’s also not packaged with the GAIA neither. Okay, I can fix that. What happens next?

I get exactly the same issue I got on my Arch machine. So the supported OS doesn’t ship with a dependency and the package, that is supposed to be distro agnostic actually behaves the same across distros. I am deeply saddened. Anyway, I had a look if I can do the same workaround as Michael from Phoronix did, but I couldn’t find the folder. I suppose I can install GAIA the way intended for developers, but I was drawn to the appeal of a single file, that gets the job done. Oh, well, maybe one day.

Before I sign off, I’d like to make a following point. Did anyone ever show you, how to package your program? And if so, can you do it on Linux? Some people sign up to the “Unix philosophy” - do one thing and do it well. And that would be fine and dandy, if all the tools talked to each other flawlessly. Also, if they don’t you might want to have all the tools open-source, so you can fix them to work with your tool. But we live in closed-source world, so this is out of the question. So the Python glue has to be really versatile, because you never know, what is your host OS and what tools you have at your disposal. So you attempt to bundle everything in one package. But somehow, even this Unix antithetical approach fails miserably.

And to drive the point home, did you know, that part of the compilation is a linking process? Do you know that this was invented, because the programs at the time were not possible to get compiled in one go (as a single compilation unit)? This was a time when RAM was measured in kB, but in 2026, when phones have many GBs of RAM, we still do this. I suppose we have to keep this method around for some projects (say Linux kernel or Chromium, both roughly 40 million lines of code), but just about anything else should be compiled straight up. Hell, Jonathan Blow’s sokoban game gets compiled as a single compilation unit (last time I heard, it was about 300k lines of code). The whole commercial grade video game! Partly it’s because of his ingenious custom language, but that’s kinda the point. Maybe if we rewrote the OSes from the 70s, we wouldn’t have to do most of the things we used to do in the 70s. Case in point, Windows is from the 90s, and on my friends Windows machine it just worked TM. And since we started this piece by imagining things, now imagine what could an OS conceived today do! The possibilities are endless.

In conclusion, this is not a jab at anyone in particular. It’s really a jab at how stupid SW is nowadays. We have the thing, but somehow, we can’t set it up, so we can use it. How did we get here? And is there a way out? I look forward to trying GAIA out, but hopefully I will be able to get up and running with the promised “one click install”.