Hacker News new | ask | show | jobs
by torginus 73 days ago
Finally - I think the biggest issue of Linux today is the inability to ship a binary and have it just work across distros.

While there was - an unfortunately failed - push for having ABI compatibility (remember Linux Standard Base?), this has been an issue since Linux has existed

And in customary Linux fashion we had 3 solutions for this in Linux-land, snap which was the ubuntu solution that was slow and buggy - and forced on users in a customary ubuntu fashion way before it was ready, AppImage, which was very rudimentary and involved shipping half the userland, and Flatpak, which seemed to be the best engineered (but far from flawless) of the 3.

And in customary Linux fashion, users decided to just wait this one out.

I think it's great that Valve has taken the time and money to get Flatpak across the finish line.

Btw another thing about Valve - it's really great that they could've went their own way and reimplemented huge chunks of the Linux stack rather than going with what's there, and the associated communities and politics (I'm mainly referring to Wayland, and now Flatpak), but they've decided to go for the popular move and actually bring the existing infrastructure up to a commercial standard.

1 comments

It's easier to ship a Windows binary and have it run reliably everywhere on Linux then a Linux binary right now.
I wish you were joking, but one of the giant companies we work with as a supplier suggested we switch to the Windows version of their (desktop) software, running it under Wine.

In fact they told us they have plans to discountinue the true native Linux version, and going forward. they're going to package their Windows version with their version of Wine as the 'native' Linux solution.

This is a company that has both tremendous resources and deep Linux expertise.

I've been wondering if a linux GUI applucation can be made by compiling wine libraries into a linux ELF executable, skipping the EXE format. Do I still need the wine supporting extra processes or is this shippable?
I know I'm probably going to get some shit for this, but, this actually is one of the reasons I like using Rust. I know, I know, but, the fact that cargo can be used as a package manager universally across distros (and operating systems!) is a pretty huge boon to me as a developer.

Zero (Linux) package manager involvement and onerous rules.

I mean it's a general sign of the times across all of computing that problems keep getting solved wrong at all levels of the stack, and since the low level implementation can't be relied on for some reason, an implementation gets stacked on top.

More specifically to your case, Linux package management is an unmitigated disaster when it comes to development. Having to have root access just to install a few headers of whatever version your distro happens to ship with, have some scripts discover said versions (too bad if they are not the ones you wanted).

Every single professional (for profit model) piece of software tends to carry half the userland with it. Steam, Spotify etc..

Besides, Rust isn't big on the concept of dynamic libraries anyways, which once again, I don't think is a purely good thing, but there are a lot of arguments can be made pro or contra.

Let's just say it's a devil we know, which is more than can be said about a lot of other approaches.