News for hackers. Stuff that matters.
Re:World of Goo Update, 10 Years Later by skrebbel on Thursday May 02, 2019 @04:19AM (#19805809)
Doesn't that mean Linux is entirely broken? Isn't the whole point of OSes that things that used to work, keep working?

I mean, lots of things are wrong with Windows but I can double-click a .exe from 1998 and in most cases it'll just run. I'd assume Linux, being used a lot for servers and long-running apps, would have this too?

Re:World of Goo Update, 10 Years Later by pantalaimon on Thursday May 02, 2019 @04:26AM (#19805844)
Linux itself has this and is very strict about not breaking old userspace.

It's the userspace libraries that likes to drop compatibility with old binaries left and right and with most distributions it's not possible to install old versions of libraries.

Containers like Flatpack and Snap promise to solve this by just bundling the application with all the libraries it needs, frozen in time. The Kernel then can handle it.

Re:World of Goo Update, 10 Years Later by skrebbel on Thursday May 02, 2019 @04:41AM (#19805899)
I have little Linux experience, so pardon me for asking silly questions. Doesn't Linux then choose a weird place to put the border between "OS" and "userspace"? If, say, an opengl library or an ssl library installed by the distribution breaks backward compat with earlier versions, how is that not the OS breaking backward compat? Sure, if a user hand-installs some new library version, globally in the system, --force, y y y, then I get it. Things will break. But that's not what's going on, right?

It feels a bit weird to see the kernel folks put so much effort into "never breaking userland" only to have the distributions throw that all away with a "yolo, the new libyadayada is 1% faster and who cares about old programs!" kind of attitude. Is that really how this works? Or am I just misunderstanding some nuance? I'm not trying to be critical on anyone btw, I'm just trying to understand what's going on :-)

Re:World of Goo Update, 10 Years Later by majewsky on Thursday May 02, 2019 @05:25AM (#19806100)
> Doesn't Linux then choose a weird place to put the border between "OS" and "userspace"?

Your fallacy is assuming that "Linux" is a single entity with a single mind. Linus is very strict about backwards compatibility, but he only controls the kernel, not glibc or Mesa or KDE.

Re:World of Goo Update, 10 Years Later by DannyBee on Thursday May 02, 2019 @06:32AM (#19806402)
Sure, but that just means a failure of Linux as a product experience.

Users don't make that distinction, even a little bit.

This is also arguably a failure of the open source model in practice (though not in theory). It tends to generate projects that are really good at infrastructure and really bad at product. The ones who fill in the product experience as best they can are the companies that are trying to get paying customers, because those customers won't stand for a weird experience, regardless of the technical/governmental reasons

Re:World of Goo Update, 10 Years Later by magpi3 on Thursday May 02, 2019 @07:36AM (#19806776)
The open source model expects apps to be open source. And if they are then an app can be recompiled to support new library versions.

It is the hybrid open source library / closed source app that causes problems like this.

Re:World of Goo Update, 10 Years Later by badsectoracula on Thursday May 02, 2019 @09:34AM (#19807711)
Having the source code will not help you when the APIs change - see SDL1 to SDL2, Gtk1 to Gtk2 to Gkt3 -soon- to Gkt4, Qt1 to Qt2 to Qt3 to Qt4 to Qt5, etc and all the desktop environments and tons of applications wasting their time "upgrading" from lib version N to incompatible lib version N+1 because the lib's developers do not care about their users (both in the end user and library user sense) and broke backwards compatibility), just so that these applications will do the exact same thing, just now with a different API.

No, backwards compatibility isn't something you solve with open source, open source is perfectly capable of breaking it in all the fabulous ways possible as has been already demonstrated many times.

Backwards compatibility is something you solve by actually caring about it when you are designing your version N+1 library (and preferably, even when designing your version 1 library's API to allow for it).

Re:World of Goo Update, 10 Years Later by prg318 on Thursday May 02, 2019 @11:10AM (#19808678)
SDL1 can be installed alongside of SDL2. Same with GTK and Qt. I really fail to see the issue here. If a developer of a Qt4 application doesn't feel like updating to Qt5, users can still use the Qt4 version with Qt5 installed in their system. Most Linux distributions still package Qt5, Qt4, Gtk3, Gtk2, Gtk1.2, SDL1.2, SDL2...

On top of that, if a binary-only application really wanted to stand the test of time, it could statically link the libraries.

Re:World of Goo Update, 10 Years Later by pantalaimon on Thursday May 02, 2019 @03:03PM (#19811411)
At least Debian has dropped GTK1 and qt3 - it's not trivial to get old libraries on a modern system.
Re:World of Goo Update, 10 Years Later by badsectoracula on Thursday May 02, 2019 @05:19PM (#19813074)
This doesn't help much when the specific application you want to run is not available in your system because it doesn't ship Qt3 or Qt4 or Gtk1 or whatever (note that AFAIK none of these are shipped anymore in Debian sid) and it also doesn't help much if the application you are trying to run is using a library that, even though it exists in version N, there is already a version N+Y (Y=1, 2, whatever) that essentially provides the same functionality to the application but it is backwards incompatible while providing more functionality to the user that you'd like to use.

To make that last part more clear, imagine a theoretical "libopenfile" library that shows a file dialog, this library in version 1 exposes a function like "open_file(const char* path);" but in version 2 they improved the GUI a bit (e.g. making the dialog make better use of screen real estate, added a create folder button, etc) and changed the function name to "lof_select_file(const char* path);" because arbitrary tidyness reasons and in version 3 they changed the signature to "lof_select_file(const char* path, unsigned flags);" and added the ability to load plugins that could provide more actions for each file in the displayed file list, show overlay icons, etc.

As things are right now, a modern Linux system would need to have all three versions of the library installed - assuming the distribution cared about backwards compatibility to provide all of them instead of the latest and perhaps the previous version - meaning there would be three different libraries providing essentially the same functionality in three slightly different ways. Moreover, and also very important, version 1 applications do not get to use any improvements introduced in version 2 and neither version 1 nor version 2 can use the plugins introduced in version 3 - even though, again, all they want is to show a dialog to choose a file.

The way that would have been done right is for the version 2 of the library to still export the "open_file" function but simply make it call "lof_select_file" and version 3 make a "lof_select_file2" (or "_ex" or whatever, if the reason to not do that is because you dislike the naming, you are part of the problem) that accepts flags and have "lof_select_file" call it with a default set of flags. Then everything would work, from version 1 to version 3 and all applications would get the functionality introduced in subsequent versions (and as a sidenote, no, i wouldn't remove open_file from the header files to encourage using the renamed function since backwards compatibility in source form is very important too - not everyone who gets to compile a piece of code is the developer of that code, or even a developer).

Now the above is a bit of a strawman, but it is exactly the situation you get with Gtk1, Gtk2, Gtk3, Gtk4, Qt1, Qt2, Qt3, Qt4, Qt5, SDL1, SDl2, etc and pretty much most of libraries that you find on a desktop system (notable and thankful - so far - exceptions, being the X11 libraries and... Motif, although that isn't installed by default anywhere so it isn't really something you can rely on).

Re:World of Goo Update, 10 Years Later by magpi3 on Thursday May 02, 2019 @06:45PM (#19813696)
In a worst case scenario, couldn't you simply bundle a static version of an old library with an old open source app to avoid the problem of a distro dropping old dependencies?
Re:World of Goo Update, 10 Years Later by majewsky on Friday May 03, 2019 @04:40AM (#19816633)
This works when it's only libraries that are changing. As soon as protocols change, you're fucked. Case in point, Wayland. Right now, most Wayland compositors run Xwayland (i.e. an entire X server) under the hood to enable legacy applications without Wayland support to run on them. This will eventually not be supported anymore. Not today, not tomorrow, but maybe in 10 years. Then it's gonna be absolute game over for everything that's compiled against X libraries.
Re:World of Goo Update, 10 Years Later by magpi3 on Thursday May 02, 2019 @11:06AM (#19808640)
In a Linux distro you specify dependencies by library version and you are never required (as far as I know) to upgrade to a new major library revision. Games compiled for SDL1 are not required to upgrade to SDL2.

There are some absolutely ancient games (Xgalaga for example) that I used to play on Linux on 1996 that still play just fine today on my Debian machine.

Re:World of Goo Update, 10 Years Later by badsectoracula on Thursday May 02, 2019 @05:02PM (#19812877)
Games compiled for SDL1 are not required to upgrade to SDL2, but games compiled for SDL1 will also not get any functionality introduced in SDL2 that could have been transparently made possible to them if the API wasn't broken in SDL2 - e.g. supporting alt-tab, wayland, etc.

Xgalaga works because the X11 library developers have not broken backwards compatibility. This is a good thing. This is what i'm referring to when i'm talking about a library not breaking backwards compatibility and what something like Gtk and/or Qt (and, IMO, SDL) should strive for.

EDIT: i give a more detailed example here - https://news.ycombinator.com/item?id=19813074

Re:World of Goo Update, 10 Years Later by ForHackernews on Thursday May 02, 2019 @10:40AM (#19808375)
> Having the source code will not help you when the APIs change

Yes it will! If it's free software, you can update to use the new APIs!

Re:World of Goo Update, 10 Years Later by pantalaimon on Thursday May 02, 2019 @03:01PM (#19811389)
Developer time is neither free nor infinite.
Re:World of Goo Update, 10 Years Later by silversconfused on Thursday May 02, 2019 @06:08PM (#19813453)
Your personal dev time is as limitless as your desire allows it to be.
Re:World of Goo Update, 10 Years Later by DannyBee on Thursday May 02, 2019 @11:21AM (#19808790)
Errr

1. users needing to think about recompiling things is definitely not the experience they want

2. It assumes the compiler, runtime, etc don't change API ever. It also assumes the libraries don't change API ever. Or don't change implementations of existing APIs in incompatible ways.

Instead, both happen all the time.

Having source doesn't fix this.

Distros don't fix this either unless the only stuff you use is in the distro (and even then they still get it wrong).

Re:World of Goo Update, 10 Years Later by Wowfunhappy on Thursday May 02, 2019 @11:48AM (#19809177)
> users needing to think about recompiling things is definitely not the experience they want

I think the intended OSS experience would be for users to get everything from their distro’s repository, whose packages get recompiled by the distro maintainer.

I agree this doesn’t work in practice, but there’s a reason Debian tells people to only ever use packages from their official repos.

Re:World of Goo Update, 10 Years Later by DannyBee on Sunday May 05, 2019 @12:34AM (#19831189)
I mean I get it, but it's somewhat ironic given how often i see folks making fun of Apple/et al for saying people are holding it wrong, yet if you look at the other comments in this discussion, it's literally the same thing.
Re:World of Goo Update, 10 Years Later by wolfgke on Thursday May 02, 2019 @08:01AM (#19806906)
> It is the hybrid open source library / closed source app that causes problems like this.

There can exist good reasons to deliver the application as binary even though it is open-source.

The difference rather is: Microsoft cares about binary compatibility while the developers of userland libraries on GNU/Linux do not.

Re:World of Goo Update, 10 Years Later by thedudemabry on Thursday May 02, 2019 @10:52AM (#19808501)
Agreed. As a former MS-focused engineer in a previous life, I was constantly surprised by how many executables just continued to work 20 years after authorship. It's a different set of tradeoffs than other OSs have made, but a really remarkable one.
Re:World of Goo Update, 10 Years Later by magpi3 on Thursday May 02, 2019 @11:09AM (#19808672)
Gog.com makes their living specifically by updating games that no longer work on modern versions of Windows.
Re:World of Goo Update, 10 Years Later by wolfgke on Thursday May 02, 2019 @11:22AM (#19808812)
> Gog.com makes their living specifically by updating games that no longer work on modern versions of Windows.

Many old games that GOG distributes are not written for Windows, but for DOS.

Re:World of Goo Update, 10 Years Later by pcwalton on Thursday May 02, 2019 @05:20PM (#19813083)
Through emulation (DOSBox), in many cases.
Re:World of Goo Update, 10 Years Later by JetSpiegel on Thursday May 02, 2019 @09:17AM (#19807542)
Most distros are distributed as binaries.

But since the source is available and the licenses allow distribution, it's much easier to just recompile the thing.

Binary compatibility is not valued if you can just recompile the source. Why waste brain cells maintaining compatibilty when the compiler can bake you a new compatible binary?

Re:World of Goo Update, 10 Years Later by badsectoracula on Thursday May 02, 2019 @09:30AM (#19807666)
Because your users might be actually using more software than what you deem worthy to put in your distribution.
Re:World of Goo Update, 10 Years Later by JetSpiegel on Friday May 03, 2019 @07:33AM (#19817415)
Most, if not all, distros have no vendor-level restrictions on repository choice, you can make your own.
Re:World of Goo Update, 10 Years Later by chapium on Thursday May 02, 2019 @09:21AM (#19807592)
I think you are conflating kernel with distribution.
Re:World of Goo Update, 10 Years Later by kkarakk on Thursday May 02, 2019 @05:55AM (#19806226)
there's a reason people don't use linux outside of the server space and most of it is every piece of weirdness introduced above linus. the more esoteric your linux flavor(and closer to bare metal it is), the better your linux experience long term.
Re:World of Goo Update, 10 Years Later by sascha_sl on Thursday May 02, 2019 @06:36AM (#19806419)
A dependency is a dependency. The distro does not matter. It matters what the game depends on and what the distro ships.

Or, you know, snaps and appimage and flatpack. Where your only hard dependency becomes Linux. Which doesn't break userspace.

Some early linux games made the mistake of using low level graphics libraries (not one of the opengl levels), these might not work because the newest drivers just don't support it.

Re:World of Goo Update, 10 Years Later by AnIdiotOnTheNet on Thursday May 02, 2019 @08:03AM (#19806912)
Except that Snaps and Flatpack are over-engineered inflexible garbage compared to how this is handled in sane environments. Flatpack can't even handle the concept of installing to different media without building a brand new repository on it FFS (I don't know if this is true of Snap because it is far too Canonical-centric for my tastes). There's no reason it has to be like this.

Even AppImage is slightly over-engineered in my opinion, but otherwise the only real failing of it is that since there's no standard for ELF embedded icons (wtf is wrong with UNIX devs!?) it's a shit-show to get them to show up as anything other than a generic one.

This isn't hard, Linux people. Just standardize on a set of core libraries and stop breaking ABI outside of major versions, then you'll magically have this thing we call a "platform" upon which applications can run without being recompiled.

Re:World of Goo Update, 10 Years Later by v_lisivka on Thursday May 02, 2019 @10:31AM (#19808275)
Your helping hand is welcome! Even coordination of developers toward solution is helping a lot, because we have no free but dedicated managers. We are developers after all.

Create ticket in bug trackers of all major distributions and describe the problem and your proposed solution. If your vision is right and attractive, developers will join the movement. This isn't hard, it's just time-consuming.

Re:World of Goo Update, 10 Years Later by AnIdiotOnTheNet on Thursday May 02, 2019 @01:59PM (#19810597)
I would, except I've seen others do that and they are unsurprisingly ignored or ridiculed. Someone already made a standard proposal for ELF icons, nobody uses it.
Re:World of Goo Update, 10 Years Later by kkarakk on Friday May 03, 2019 @05:25AM (#19816807)
Linux open source - you can contribute but on your own fork over there in the dark far away from us enlightened folk that actually make worthwhile contributions to this project. I only contribute on things that clearly have no "stewardship" or vested interests, lots of useful proposals shot down
Re:World of Goo Update, 10 Years Later by sascha_sl on Thursday May 02, 2019 @07:32PM (#19814043)
Wow, very constructive, great post, love it, keep it up.
Re:World of Goo Update, 10 Years Later by kkarakk on Thursday May 02, 2019 @07:30AM (#19806741)
To the end user none of that matters, all they know is that this thing does not "just work". windows and macos has that, no flavor of linux does(currently). i look forward to the snap/appimage/flatpack war, it's long overdue
Re:World of Goo Update, 10 Years Later by dwighttk on Thursday May 02, 2019 @08:04AM (#19806922)
Eh, macOS breaks old apps like it makes Apple money.
Re:World of Goo Update, 10 Years Later by chronogram on Thursday May 02, 2019 @09:30AM (#19807667)
Like Aperture from what.. 2014? Won’t run on the next macOS.. that’s an Apple application that can’t last more than a few years on an Apple system.

Even Linux desktops are better than that, but not much better. They seem so emotional.

Re:World of Goo Update, 10 Years Later by badsectoracula on Thursday May 02, 2019 @09:35AM (#19807721)
And that was for me the main reason i stopped using macOS, as every new version of the operating system made software i had paid money for stop working - to the point that nothing works now.
Re:World of Goo Update, 10 Years Later by jacoblambda on Thursday May 02, 2019 @05:02AM (#19806005)
Basically, it's a matter of being able to force the issue. Distros are largely volunteer effort and are already a lot of work. Forcing library devs to cooperate would be a gargantuan task and just rejecting the changes would kill most distros (basically no libraries do this). Instead the distro devs just try to fix the compatibility problems themselves but they occasionally miss stuff.
Re:World of Goo Update, 10 Years Later by AnIdiotOnTheNet on Thursday May 02, 2019 @08:05AM (#19806929)
The only reason there are so many distros is because of how ridiculously complicated it is to build a functional Linux Desktop from the component software. If Linux were a more stable platform, you wouldn't need distros (or package managers for that matter).
Re:World of Goo Update, 10 Years Later by jacoblambda on Thursday May 02, 2019 @10:55AM (#19808535)
Welp this is where the issue and the meme is. This is where the Stallman rant: https://www.gnu.org/gnu/linux-and-gnu.html came from and is still a point of contention. The linux kernel is the only standard part of any distro. Anything beyond that is optional however it will most likely be GNU coreutils. Even then it may not be standard as coreutils may be replaced by busybox or BSD utils or any other core Unix utilities package.

So that's what we are left with. Linux is not an operating system. GNU/Linux is, Busybox/Linux is, and all the distros are operating systems but Linux is not. people just like to clump all these different operating systems together and pretend that they are different versions of the same OS.

If you want a "Linux" operating system that is well defined, look for the ones without Linux in the name. The BSDs have actual UNIX support (i.e. a standard library of tools) and Guix is a Unix-like/Linux-like that focuses on reproducibility and dependence stability.

Re:World of Goo Update, 10 Years Later by AnIdiotOnTheNet on Thursday May 02, 2019 @07:56AM (#19806878)
It's made worse by the common UNIX developer insisting on hard-coding fixed paths into things. The whole ecosystem is just plain hostile to the idea of applications that aren't recompiled every time something changes.
Re:World of Goo Update, 10 Years Later by easytiger on Thursday May 02, 2019 @10:09AM (#19808056)
Got a list of such software?
Re:World of Goo Update, 10 Years Later by dijit on Thursday May 02, 2019 @04:29AM (#19805864)
Serious question; doesn’t static compilation do the same thing essentially?
Re:World of Goo Update, 10 Years Later by ObscureScience on Thursday May 02, 2019 @04:35AM (#19805878)
Kind of, but I guess the other solutions are slightly better at accomodating services that are more than a single binary. I think static binaries really should be evaluated again as they seem to be written off by most big players. Though Go(lang) has preferred static linking which has been something that seem to have been appreciated.
Re:World of Goo Update, 10 Years Later by tfigment on Thursday May 02, 2019 @07:43AM (#19806811)
Static has its own issues. GPL vs LGPL forces a lot of apps to dynamic. Also security vulnerabilities in libraries become unpatchable.
Re:World of Goo Update, 10 Years Later by chronogram on Thursday May 02, 2019 @09:37AM (#19807748)
I’d rather be able to run something that’s security flawed than not run it at all. Those security issues in libraries are probably not such a big deal anyway, because you can run Unreal Tournament 1 multiplayer now and not immediately get hacked, I’m sure. Maybe I just got very lucky.
Re:World of Goo Update, 10 Years Later by AnIdiotOnTheNet on Thursday May 02, 2019 @08:05AM (#19806937)
Apps are always the most secure when they can't run at all because of ABI changes in their dependencies.
Re:World of Goo Update, 10 Years Later by badsectoracula on Thursday May 02, 2019 @09:16AM (#19807537)
Of course as far as graphical desktop software goes, 99% of the dependencies are in the userspace. Unless the userspace libraries (or parts of it) decide to follow Linus' mantra of not breaking the applications that rely on their code, kernel not breaking userspace isn't very useful to graphical desktop applications.
Re:World of Goo Update, 10 Years Later by gambiting on Thursday May 02, 2019 @04:49AM (#19805943)
The main difference is that most Windows apps are statically linked. A game from 1998 will very often come with its own set of .dlls that were built with the game and unless the underlying Win32 api changed, they should "just work". On Linux it's also possible to statically link libs, but it's far less common to do so - most apps rely on the libs in the system. Which in theory is a great thing, your app will always use the latest, safest version of whatever library it needs(while the windows app continues using the unsafe 1998 version of libs for instance). But of course in practice people who make the libs can't test their changes with every single app in existence, so inevitably the back compatibility gets broken, and Linux does have the issue of "oh I installed some system updates and now this app that always worked doesn't work anymore". Again, in theory apps are supposed to say which libs they need and package managers should respect that. But theory and real life are not necessarily the same.
Re:World of Goo Update, 10 Years Later by badsectoracula on Thursday May 02, 2019 @09:20AM (#19807575)
> The main difference is that most Windows apps are statically linked.

No, the main difference is that on Windows the GUI libraries (USER32.DLL, etc) are considered part of the OS and have an API that remains backwards compatible. The applications are not statically linking the GUI libraries, they are dynamically linked against them, pretty much like on Linux.

However on Linux the GUI libraries do not care a bit about preserving backwards compatibility (see Gtk1, Gtk2, Gtk3 and soon Gtk4, see Qt1, Qt2, Qt3, Qt4, Qt5 and soon Qt6 - although in Qt's case they cant do much thanks to C++'s ABI issues and TBH i wouldn't expect them do since Qt is primarily made by a company with interests in providing a crossplatform UI library, not the native GUI library for Linux).

Windows simply provides a much richer API than Linux as a standard that applications can rely on.

Re:World of Goo Update, 10 Years Later by v_lisivka on Thursday May 02, 2019 @09:43AM (#19807801)
There are *-compat[1] packages for backward compatibility. You are welcome to support them, if you really need them.

[1]: https://pkgs.org/download/-compat

Re:World of Goo Update, 10 Years Later by badsectoracula on Thursday May 02, 2019 @10:20AM (#19808146)
Compat libraries are band-aid to the real problem that is the developers of the libraries not caring about backwards compatibility and the only fix is to cultivate a culture of caring about backwards compatibility instead of writing excuses. Compat libraries are only applicable to a few libraries (where are the Gtk1-compat libraries?) and all they do is freeze the API in time without any updates to the provided functionality (where are the SDL1-compat libraries that work seamlessly with alt-tab in desktop environments, like SDL2 does?).
Re:World of Goo Update, 10 Years Later by v_lisivka on Friday May 03, 2019 @08:54AM (#19817943)
> where are the Gtk1-compat libraries?

Here: https://github.com/openSUSE/gtk1-compat

> and all they do is freeze the API in time without any updates to the provided functionality

Yep.

> where are the SDL1-compat libraries that work seamlessly with alt-tab in desktop environments, like SDL2 does?

It's open source. If you need it, take care about it, OR pay to a somebody else to take care about it. Nobody will work for you for free.

It's like roads. Roads are free, because lot of drivers are using it every day, so they are paying taxes to build and maintain them, but road to your house in the middle of nowhere is not free, because nobody shares it with you. However, road making tech is open sourced, so you can build your own road if you need it.

Of course, you can use paid road, if you want, because they are providing better service for small pay per ride, or you can hire developer company to build private road to your house and then payback loan to a bank. It's up to you.

But statements like "free and open roads are bad, because road to my own house costs lot of money for me" is just childish play. Roads are not free to build and maintain. Roads are free and open to use, but only because they are paid by someone else. For your own private road, pay with your own labor or money.

Re:World of Goo Update, 10 Years Later by wolfgke on Thursday May 02, 2019 @07:00AM (#19806566)
> The main difference is that most Windows apps are statically linked. A game from 1998 will very often come with its own set of .dlls that were built with the game and unless the underlying Win32 api changed, they should "just work".

Delivering a set of DLLs is not static linking.

Re:World of Goo Update, 10 Years Later by Sahhaese on Thursday May 02, 2019 @08:26AM (#19807097)
It's almost like the D in DLL stands for something.

That said, it's not strictly static linking but it is closer to it in effect than the global assembly cache or the shared DLLs which resulted in the kind of "DLL hell" that windows 95 was famous for.

Re:World of Goo Update, 10 Years Later by SmellyGeekBoy on Thursday May 02, 2019 @05:04AM (#19806017)
Day-to-day Linux system updates won't change major version numbers of libs in most distros, though. These breaking changes only seem to occur in major releases in my experience.
Re:World of Goo Update, 10 Years Later by josteink on Thursday May 02, 2019 @04:38AM (#19805889)
> Doesn't that mean Linux is entirely broken? Isn't the whole point of OSes that things that used to work, keep working?

"Broken" is a strong word. "Different" might be more fitting.

While I don't think anyone in the world of Linux and Linux-distros work with the explicit aim of breaking compatibility, you have to realize that Linux and most Linux-distros are built entirely around open-source software.

Most users install software via a distro-provided package-manager which fetches binaries from a repo. These binaries have been built from source, by the distro-vendor, specifically for that distro.

That means Linux compatibility traditionally has been more about source-level and compile-time compatibility more so than 100% uncompromised binary compatibility. If a change breaks binary compatibility, but the distro/system as a whole still builds fine, that's still compatible in most day-to-day scenarios of a common Linux end-user.

And unconstrained by having to maintain strict binary compatibility, it also allows developers to clean up historical garbage and technical debt they otherwise couldn't.

This approach obviously has both drawbacks and advantages, but calling it "broken" seems unfair, overly opinionated and really just wrong.

Re:World of Goo Update, 10 Years Later by badsectoracula on Thursday May 02, 2019 @09:24AM (#19807618)
> "Broken" is a strong word. "Different" might be more fitting.

No, "broken" is a perfectly fitting word, an application not running is broken, not different.

Re:World of Goo Update, 10 Years Later by v_lisivka on Thursday May 02, 2019 @10:02AM (#19807989)
Linux is working perfectly on lot of servers, computers, smartphones. It holds steady third place in the world rating for desktops, first place for smartphones, dominant at server/embedded/supercomputer markets. If a developer released an app which cannot be running at these platforms under Linux, then app is broken, of course. Why you blame perfectly working OS for developer fault?
Re:World of Goo Update, 10 Years Later by badsectoracula on Thursday May 02, 2019 @10:15AM (#19808102)
Because it is the OS that broke backwards compatibility and caused the application to stop working.

That the kernel is used in "servers, computers, smartphones" and wherever else metric of popularity doesn't magically make applications run. Developers who work on libraries that are relied on by others to provide basic functionality (like GUIs) not breaking their APIs is what make applications run.

Re:World of Goo Update, 10 Years Later by wolfgke on Thursday May 02, 2019 @07:03AM (#19806581)
TLDR: The developers of the GNU/Linux userland libraries do not care about binary compatibility.
Re:World of Goo Update, 10 Years Later by josteink on Thursday May 02, 2019 @10:29AM (#19808257)
Binary compatibility is only a pressing issue if the majority of the software you run is closed source and not provided by your distro.

Why waste time maintaining something which is not needed?

Re:World of Goo Update, 10 Years Later by wolfgke on Thursday May 02, 2019 @11:19AM (#19808772)
> Binary compatibility is only a pressing issue if the majority of the software you run is closed source and not provided by your distro.

Binary compatibility is a very pressing issue if there exist software that is closed source and you want to have more users than just some nerds.

Re:World of Goo Update, 10 Years Later by josteink on Thursday May 02, 2019 @12:23PM (#19809573)
I don’t care about closed source software. I don’t care about massive non-nerd adoption of Linux. None of those things benefit me or drives the things I care about.

Either way: The enormous success of Linux despite these issues seems to be evidence contrary to your claim.

Re:World of Goo Update, 10 Years Later by SmellyGeekBoy on Thursday May 02, 2019 @05:03AM (#19806010)
Yes and no. It's a different mindset. In many cases Linux can run CLI software from the 1960s just fine but the desktop moves fast and breaks things often.

The legacy support in Windows is admirable but does bloat the OS and create security and performance issues, for example. I suppose one could always fire up a VM with a 10-year-old version of Ubuntu to run older software, but it is indeed a hassle.

The correct answer depends where your priorities lie.

Re:World of Goo Update, 10 Years Later by wolfgke on Thursday May 02, 2019 @08:03AM (#19806915)
> Yes and no. It's a different mindset. In many cases Linux can run CLI software from the 1960s just fine but the desktop moves fast and breaks things often.

Serious question to all the GNU/Linux hackers: why can't we standardize the desktop on GNU/Linux similarly?

Re:World of Goo Update, 10 Years Later by pwinnski on Thursday May 02, 2019 @10:24AM (#19808197)
Two people can agree on a window manager if one of them is dead.
Re:World of Goo Update, 10 Years Later by wolfgke on Thursday May 02, 2019 @11:21AM (#19808793)
> Two people can agree on a window manager if one of them is dead.

But why is there no similar fight concerning CLI software?

Re:World of Goo Update, 10 Years Later by subway on Thursday May 02, 2019 @04:23PM (#19812429)
There absolutely is.

bash vs zsh vs tcsh vs csh

vim vs vi vs nano vs joe vs emacs

screen vs tmux

and thats before you even get to all the configuration tweaks a given user has made to each.

Re:World of Goo Update, 10 Years Later by JetSpiegel on Thursday May 02, 2019 @09:23AM (#19807606)
Some are trying to, but there is a bazaar of interests. Microsoft has no competing interests, they just enforce it top to bottom.

Lennart Poetering is trying to standardize from the bottom up, correctly IMHO, there's some push back, but mostly inertia and lack of resources.

Re:World of Goo Update, 10 Years Later by thedaemon on Thursday May 02, 2019 @10:10AM (#19808062)
Not exactly desktop, but for GUI Linux has GTK and QT. GTK is by far the most common and I'd say the standard. Anyone who argues is a KDE fanboy ;)
Re:World of Goo Update, 10 Years Later by brmgb on Friday May 03, 2019 @06:43AM (#19817150)
Qt sees far more industrial usage than GTK. It has a nice C++ API and the licensing situation has always been clear for companies. GTK was never really a success outside of the Linux open source desktop community.
Re:World of Goo Update, 10 Years Later by wolfgke on Thursday May 02, 2019 @11:17AM (#19808749)
Neither Qt nor GTK care about backward compatibility.
Re:World of Goo Update, 10 Years Later by v_lisivka on Thursday May 02, 2019 @09:19AM (#19807568)
I'm ready. Will you pay for my work to achieve your goal?
Re:World of Goo Update, 10 Years Later by wolfgke on Thursday May 02, 2019 @09:49AM (#19807861)
The problem rather is that even if you do, many distributions will not obey "your" standard.

EDIT: So the problem is that it is not a problem of work to be done, but a problem of willingness to standardize.

Re:World of Goo Update, 10 Years Later by ekianjo on Thursday May 02, 2019 @05:18AM (#19806066)
> Doesn't that mean Linux is entirely broken? Isn't the whole point of OSes that things that used to work, keep working?

Not Linux, libraries instead are the ones breaking compatibility over time. Or missing libraries as well...

Re:World of Goo Update, 10 Years Later by badsectoracula on Thursday May 02, 2019 @09:38AM (#19807756)
As far as the user is concerned it is "Linux", when people say they use "Linux" they do not just mean the kernel, they mean the entire OS.

On Windows these libraries have APIs that remain backwards compatible (new methods can be exposed, but existing stuff remains there). Unless the equivalent Linux libraries also decide to provide backwards compatibility, they'll just make Linux look broken (even if it isn't the kernel's fault).

(and no, this isn't something you solve by being pedantic about what is userspace and what is kernelspace and who controls what, as that information doesn't solve the actual problem - you solve it by cultivating a culture that actually cares about backwards compatibility)

Re:World of Goo Update, 10 Years Later by MisterTea on Thursday May 02, 2019 @08:21AM (#19807057)
> Doesn't that mean Linux is entirely broken?

It depends on how you look at it. Linux does not break kernel-userspace but userspace libraries, like the c libraries, constantly change as security holes and bugs are patched. This is a more secure approach as updates bring in security and bug patches. The flip side is that approach can sacrifice backwards compatibility if an api interface changes or removed. This forces the developer to constantly rebuild and check if anything is broken. The idea is everyone is proactive and stays up-to-date. That's how Linux works.

Microsoft's approach is to let the application developer bundle the libraries with the application if necessary. That's what all of those visual c++ updates are for when you install certain software, they install the libs the application was linked against. So your computer is littered with multiple library versions, some of which may contain security flaws.

The latest approach in Linux is to bundle the application and libraries in containers. It's a hybrid approach that takes the MS idea of bundling the linked libs with the application but wrapping it up into a neat container that in theory should isolate the system from any vulnerabilities the libraries may contain.

Re:World of Goo Update, 10 Years Later by ObscureScience on Thursday May 02, 2019 @04:28AM (#19805861)
No Linux distributions does not work like that. The kernel interface is pretty stable but userland is not. Dynamically linked executables will not work with new versions of the libraries they depend on in most cases. This is one of the problems flatpak, snap, appimage, docker and nix/guix are trying to solve.
Re:World of Goo Update, 10 Years Later by v_lisivka on Thursday May 02, 2019 @09:34AM (#19807695)
Flatpack, snap, aappimage, docker, static linking, etc. are solving other problem: how to bypass package manager and ship outdated and buggy libraries to user, because it will save some money for developer at expense of user.

Whole GNU foundation was created to bash with this "solution", then Linux kernel + GNU runtime was used to create Linux distributions, which are free from binary-only distribution problem, but developers are creative.

Why not just ship partially compiled binary or IR code, or obfuscated source with open-source adaptation layer? It will make adaptation problem much easier for end user at any distribution or/and architecture.

Re:World of Goo Update, 10 Years Later by PhasmaFelis on Thursday May 02, 2019 @10:22AM (#19808174)
> I mean, lots of things are wrong with Windows but I can double-click a .exe from 1998 and in most cases it'll just run.

There are many old games that won't run properly on modern Windows.

Re:World of Goo Update, 10 Years Later by yani on Thursday May 02, 2019 @05:15AM (#19806054)
Missing a runtime... missing dll... missing direct3d or different version of it, compatibility for certain version of Windows. It is all the same everywhere.
Re:World of Goo Update, 10 Years Later by wolfgke on Thursday May 02, 2019 @07:02AM (#19806573)
On Windows, you can easily install lots of parallel versions of libraries.
Re:World of Goo Update, 10 Years Later by icebraining on Thursday May 02, 2019 @04:48PM (#19812718)
So can you on Linux. Libraries are installed with their full version in the filename (e.g. /usr/lib/libpurple.so.0.13.0) so you can keep lots of parallel versions.