Live data from Hacker News

Linux apps that run anywhere

appimage.org

101–110 of 117 posts

Re: Linux apps that run anywhere

#101

It makes me really sad that this is necessary. Unix has a concept of shared libraries. And somehow it managed to get ruined so irrevocably that there's no going back. This—this was a solved problem! It really was. It was solved, and then we unsolved it when we decided that 'move fast and break things' was more important than ABI stability. And now shared libraries are completely useless. I struggle to name a single u…

It was never really solved. Shared libraries create huge integration testing headaches and the linux landscape fragmented early. This means that there are a lot of combinations of libraries out there in lots of different versions. Some distributions stick to really old versions of stuff to preserve backwards compatibility. E.g. Red Hat is really awful if you are a developer since it pretty much has the wrong version of anything you'd care about. But I remember this being a real PITA when you wanted to use e.g. the current versions of java, node.js, python or whatever and then realize that all of these basically are 2-3 years behind because the LTS version of the distribution was released just before the major release of what you need. That, and the wide spread practice of engineering around that (e.g. building from source, installing from debian unstable, etc.) results in a lot of problems.

Luckily these days you package the correct versions up as Docker images so, it's much less of an issue. The amount of space you save with sharing your libraries does not really outweigh the benefits of shipping exactly those things you need as a statically linked binary.

Doing the same for user space software makes a lot of sense. Apple figured this out in the nineties already. Mac software never really needed installers. Drag the app to the Applications folder, delete to remove. Just works. The only package managers on OSX are for managing OSS linux software.

Re: Linux apps that run anywhere

#102
post #97
post #93

Earlier quoted context omitted.

Ah, like the C based security exploits are the fault of programmer and not the lack of safety features to start with.

Absolutely correct. Those who do not understand the hardware on the register and machine code level should go master that first before dabbling with C. One has to learn to walk before one attempts to run. Working on and with computers requires competence and insight; no technology can replace that nor ameliorate it.

Nice point of view, then you wonder why devs prefer package managers that abstract OSes.

Re: Linux apps that run anywhere

#103
post #102
post #97

Earlier quoted context omitted.

Absolutely correct. Those who do not understand the hardware on the register and machine code level should go master that first before dabbling with C. One has to learn to walk before one attempts to run. Working on and with computers requires competence and insight; no technology can replace that nor ameliorate it.

Nice point of view, then you wonder why devs prefer package managers that abstract OSes.

I do, because in long term sight their approach is irrational and expensive.

Re: Linux apps that run anywhere

#104

FYI, AppImages do not run anywhere. There are a lot of issues with them in NixOS, since NixOS is all about having explicitly-linked dependencies, and AppImages still often have implicit dependencies that aren't in the image itself, since they are assumed to exist on the host system. See https://github.com/NixOS/nixpkgs/pull/51060 for an example.

but who really uses NixOS? a 0.001% of linux users?

In my circle, roughly 30%.

Re: Linux apps that run anywhere

#105
post #85

Earlier quoted context omitted.

AppImage makes me nervous because they don't actually create promise cross distro compatibility—it depends on what libraries the developer decides to ship alongside the AppImage, and which they assume the distro has. This also raises questions about forwards compatibility with future OS releases. Snap and Flatpak, by contrast, have explicit systems in place to prevent this. Of the two, I much prefer Flatpak for being…

On the other hand, AppImages are dead easy. They do not assume any host infrastructure installed which is especially handy if you are lacking root on a shared system.

I'd prefer we just standardized around Flatpak being installed by default on most distros. Once the base package is installed, you can also install Flatpak apps without root. AppImage's won't work either if certain base packages haven't been installed (by a root user), like FUSE.

Re: Linux apps that run anywhere

#106
post #96
post #77

Earlier quoted context omitted.

I assume you install different browser than Safari. So is it frustrating that you have to install 3rd party browser? Come on homebrew is awesome. Install is easy and then you just point brew bundle to file with everything you need, go for coffe and your computer is ready.

> I assume you install different browser than Safari. So is it frustrating that you have to install 3rd party browser? That’s not really the same because Firefox isn’t a core part of an OS and Safari is actually a pretty decent browser in its own right. Whereas a package manager should be a core part of an OS (just as it is on any other UNIX-like OS) and OSX is, in my personal opinion, crippled without running homebr…

> And no, the App Store doesn’t count because that’s completely inadequate in almost every department.

Apple would disagree. They quite clearly believe that all software should be able to fit inside their sandboxed app store model. I think they're completely wrong about this, but that's beside the point.

Re: Linux apps that run anywhere

#107

It makes me really sad that this is necessary. Unix has a concept of shared libraries. And somehow it managed to get ruined so irrevocably that there's no going back. This—this was a solved problem! It really was. It was solved, and then we unsolved it when we decided that 'move fast and break things' was more important than ABI stability. And now shared libraries are completely useless. I struggle to name a single u…

I hit this when I wrote some C on a modern Ubuntu machine.

I wanted to sort an array based on information in another array. I don't think qsort has the power to do this, so I used qsort_r.

I later found it didn't compile on another system (termux on android) because qsort_r didn't exist there.

I don't feel like 'move fast and break things' is the culprit here (although it undoubtedly is in other cases).

Having qsort_r in some unixes and not others feels wrong. And doing without qsort_r also feels just wrong. I don't know the solution.

Re: Linux apps that run anywhere

#108
post #96

Earlier quoted context omitted.

> I assume you install different browser than Safari. So is it frustrating that you have to install 3rd party browser? That’s not really the same because Firefox isn’t a core part of an OS and Safari is actually a pretty decent browser in its own right. Whereas a package manager should be a core part of an OS (just as it is on any other UNIX-like OS) and OSX is, in my personal opinion, crippled without running homebr…

> And no, the App Store doesn’t count because that’s completely inadequate in almost every department. Apple would disagree. They quite clearly believe that all software should be able to fit inside their sandboxed app store model. I think they're completely wrong about this, but that's beside the point.

Of course Apple would disagree. It’s hardly surprising that companies will defend their income streams even when those products are actually pretty rubbish.

Re: Linux apps that run anywhere

#109
post #66

It makes me really sad that this is necessary. Unix has a concept of shared libraries. And somehow it managed to get ruined so irrevocably that there's no going back. This—this was a solved problem! It really was. It was solved, and then we unsolved it when we decided that 'move fast and break things' was more important than ABI stability. And now shared libraries are completely useless. I struggle to name a single u…

>HOW DID THIS HAPPEN? Microsoft treats Windows APIs as a contract with the developer, with behavior defined by specifications. Are Linux libraries typically managed that rigorously?

Linux the kernel does that—see linus's rants about how 'kernel does not break userspace'. Unfortunately, someone decided at some point that versioned libraries should be a thing, and then all hell broke loose when openssl and glibc decided to break compatibility in minor versions so now it's just a free-for-all.

Re: Linux apps that run anywhere

#110

Earlier quoted context omitted.

The problem that's being solved is that vendors are incompatible, which could easily be solved if they were compatible. They all run a linux kernel. They all use ELF and x11 and opengl. If I compile 'hello, world' on one distro, I can drop it onto another random distro and it'll still work, but after a certain threshold of complexity, that stops working. It doesn't have to stop working.

Even a simple hello-world doesn't work across distros since it requires a specific version of glibc.

The glibc version tagging has to do with specific symbols; hello world just uses printf which is there since forever. (Actually the compiler probably optimizes it down to a syscall but.)
Post reply on HN