Counter-example: Soldier of Fortune is broken on modern windows because of a misapplied compatibility hack. Rename the binary and it works with no problems.
This is an awful way to implement backwards compatibility. Opaque and ad-hoc. They have been using similar toolset to break competitors applications.
The choice of what old version of windows to run the program on is typically to try them one by one.
Linux is no better with no stable ABI. Mac is a mixed bag of excellent Rosetta and breaking apps for no reason. Who did it better? FreeBSD? Some extinct “grown-up” OS like VMS?
> Mac is a mixed bag of excellent Rosetta and breaking apps for no reason.
They will probably retire Rosetta2 in a few years, like they did with Rosetta.
Apple usually seems to care about getting the bulk of applications to transition over, and the rest is just collateral damage/the devs should’ve just updated their software.
> They will probably retire Rosetta2 in a few years, like they did with Rosetta.
Counterpoint: The PPC-to-Intel version of Rosetta was licensed technology (QuickTransit); Apple was undoubtedly paying for it, possibly even per user, so there were financial reasons for them to get users off of it ASAP.
Rosetta 2 was developed in-house by Apple, so there isn't the same hard timeline to get users to stop using it. I wouldn't expect it to survive long beyond support for running the OS on x86, though.
Yes, just like they had valid technical reasons to kill 32-bit iOS apps. The point is that they don’t go above and beyond like Microsoft (although of course even MS has deprecated e.g. 16-bit apps).
Gee isn't it great when modern businesses don't have to compete with decades old software and can sell you their crapware for whatever price they want because there is no alternative.
The general idea behind capitalism is that the market provides alternatives. Why would there only be evil giant corporations whose applications are so bad that they would be trumped by those great ancient, obsolete applications? There is also room for small vendors to provide innovative new alternative, and for the open source community to try their hand.
The reality is that on the Apple platforms these ancient, obsolete applications are not available and instead there are new, modern, better applications because there is a market for them. While on the Windows platform it’s a big, inconsistent insecure mess because everyone is clinging to obsolete, unsupported software that is barely good enough.
By the way, keep pressing that button you think is the disagree button!
In a world with only one developer, yes. In the real world, where other developers can create new apps that do the same thing better, more secure, easier or in a more modern way, no.
And sometimes users do not get what they prefer and they have to make do with what they get. In the Microsoft world and in the Apple world. Tough luck.
It’s not worth living in the past because some hypothetical users want to cling to it. It’s worth promoting innovation because innovation is replacing old things with better new things.
And this is why Apple will never be a serious gaming platform for non-exploitative/GaaS games. Personally I think it's good that I can run games that were last updated in the early 2010s on my computer.
I’m confused. Linus has repeatedly stated that the ABI should be stable, “we don't break user space”. There are exceptions, but any proposal that makes a breaking change to the kernel’s external symbols is very hard to push through.
I don’t remember anything breaking because of a new kernel version except device drivers, which are part of the kernel anyway and should be compiled for a specific kernel version. They are not applications, so they shouldn’t rely on assumptions about the ABI.
Most Linux distros offer mechanisms to compile a version-dependent interface to isolate a version-independent driver or program that messes too closely with the kernel.
> Some extinct “grown-up” OS like VMS?
I’d say the age of binary compatibility ended with most of those “grown-up” OSs becoming legacy. I usually test (compile and test) my C code on multiple platforms, ranging from Windows to Solaris on SPARC (emulated these days, sadly). I haven’t yet figured out a cost-effective way to test it under IBM z/OS’s USS (which makes z/OS a certified UNIX).
The kernel userspace APIs are pretty stable, the APIs provided by the rest of what constitutes a complete Linux "operating system" are not. I've ended up using a lot of hacks and tricks to get some early Linux games running on modern systems. Some applications designed for X still have broken features in Wayland, and likely won't be fixed without new versions of said apps because making Wayland compatible would break the entire security model.
It's generally not a huge issue in Linux, because most of the software you use day to day is open source and probably maintained. The real problem children, across all operating systems, is proprietary video games. They're closed source, unmaintained, and their cultural value makes them highly desired targets for ongoing compatibility and preservation.
> The kernel userspace APIs are pretty stable, the APIs provided by the rest of what constitutes a complete Linux "operating system" are not.
There are plenty of userspace ABIs that are extremely stable, including whaever you need to run a game (like the C runtime). There are also APIs without stability guarantees (like the C++ standard runtime). A lot of games that no longer work depend on some of the latter libraries. There are also ABI bugs, no compatibility is perfect, but those usually do get fixed when found unless doing so would break more programs.
> Some applications designed for X still have broken features in Wayland, and likely won't be fixed without new versions of said apps because making Wayland compatible would break the entire security model.
That's not a long term compatibility problem but using a zero trust mobile phone security model on a desktop problem. That security model should be broken and moved to /dev/null where it belongs.
But really at some point you are going to need compatibility layers anyway. We already have Wine with great support for old Windows apps, there is nothing preventing something similar for legacy Linux on modern Linux emulation - except a lack of interest because there really aren't that many Linux-only legacy applications.
Because the Linux kernel has stringent guidelines how a driver should be written and work. Companies don't want to put in the work (i.e. pay someone with experience) to upstream their drivers. Whether this makes sense monetarily isn't really relevant to many decision makers. At least that's how I explain why Nvidia and Broadcom don't upstream their drivers.
The obvious problem seems to be propriety device drivers, no? If they didn't shoot themselves in the foot with their licensing, the drivers would work with any kernel version.
Your evidence is an article from 24 years ago about behavior that happened 32 year ago? And it's not even about them breaking competitors applications, it's about them refusing to run on a competing OS (in a bit of a sleezy way).
Do you have more evidence of your claimed behavior?
I dislike MSFT, a lot, but that's a _very_ big claim and needs to be backed up with evidence.
My claim is that Microsoft operating system was silently detecting competitors software and changing behavior to break compatibility. That is proven. The war on WordPerfect was equally shady.
Did Microsoft clean its act at some point and stopped doing so? They force Edge at every opportunity, so even the behavior that almost got them forcefully partitioned is back.
I don’t think we have caught them outright sabotaging e.g. Chrome aside from the default browser shenanigans, but who would bother to check unless it’s a repeatable crash? Aside from Chrome what app do they even have a need to sabotage? Steam?
This is an awful way to implement backwards compatibility. Opaque and ad-hoc. They have been using similar toolset to break competitors applications.
The choice of what old version of windows to run the program on is typically to try them one by one.
Linux is no better with no stable ABI. Mac is a mixed bag of excellent Rosetta and breaking apps for no reason. Who did it better? FreeBSD? Some extinct “grown-up” OS like VMS?