https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost...
one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: it used memory right after freeing it, a major no-no that happened to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away. The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
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?
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.
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).
Source(s) ?
it's because the nvidia drivers are opaque blobs, rather than a source distribution.
If nvidia distributed their drivers as open source, i would imagine developers would likely "fix" their games properly because they'd be able to see what is going on underneath the hood, and write more optimal code.
of course, this removes some "competitive advantage" nvidia has over their AMD counterpart.
That's an innocent example but do recall that circa 1995-2005 or so, Microsoft looked like a dangerous monopolist and could have been in legal jeopardy if a product that competes with office (say WordPerfect) quit working when they went from Win 95 to Win 98 or Win 2k to Win XP.
I'd also add that more than once I've had web pages and applications I've made been used as test cases by Microsoft and been contacted by people from Microsoft about compatibility issues. (... and I've never been an advocate of Microsoft browsers, often I've been quite the opposite.) I haven't heard once from Netscape, Mozilla, Apple, Opera or Google about something like this.
In todays world it looks like a ludicrous solution to the problem. The game vendor needs to HTFU and distribute a patch via steam or whatever and that’s a totally reasonable stance for microsoft or apple to take, because the infrastructure for patch distribution is pervasive and robust now.
That’s why that someone is getting paid -it’s their job.
If you want software to power important things in society, like transport and energy, you need to have a certain level of responsibility for reliability.
As this post demonstrates, Right now we have immature children who are used to breaking things for the sake of a new fad, in charge of critical systems.
You’re thinking like an engineer. Microsoft is a business. Backwards compatible is its major core competency.
Microsoft's point of view is that the underlying software doesn't matter. The user's software _has_ to run. The Application Compatibility Database (https://learn.microsoft.com/en-us/windows/win32/devnotes/app...) is, overall, a relatively small component, and all it does is apply some shims if your executable is in that list. Performance issues in Windows do not stem from anywhere near the kernel. The kernel team is absolutely top tier. The kernel itself is of much higher quality than what you'd find on Linux, or MacOS.
Now, the upper layers however...
It had to be a step forward, not a step back. I mean I don't know what you're using at the moment, but if your favorite application didn't work on the next version, would you upgrade?
This is why Apple spent so much on Rosetta, first when going from PowerPC or whatever to x86/64, then from that to ARM / M1, while in the meantime building a developer and application ecosystem that allows for easier transition between CPU architectures and environments.
It's precisely because of that backwards compatibility, insane in both the workings and the result, that keeps most people using Windows.
People use computers to get stuff done, and Windows lets people use the absolutely massive library of Windows programs whether it was written today or over 30 years ago.
Yep, the most popular desktop OS in the world and the 2nd biggest company in the world.
There are business reasons to maintain backwards compatibility, and they were very strong before the easily updated software.
You have been playing your game fine. You installed a new Windows OS and now the game no longer runs. As an average customer, who do you blame? Hint: not the game studio.
Because why are you still running Xorg, asshole? You should have switched to Wayland by now.
From what I can tell, SimCity had already been released. Many users likely didn't have an Internet connection, and even if they did, there was no auto-update via Steam.
Regarding that hobbyist OS OpenBSD, where the developers care about nothing besides security, there were no proprietary application packages available. Most retailed applications in those days ran on SunOS/Solaris or HP/UX.
There's been quite a few cases for me, like Star Citizen for example, where games perform significantly better under Proton with DXVK than it does on Windows!
https://sporks.space/2022/02/27/win32-is-the-stable-linux-us...
It's impossible to build on shifting foundations that are constantly breaking backward compatibility. You eventually spend all your time maintaining instead of creating.
Then you have to go reinvent your wheel, and in my experience as a user your shiny new one isn't necessarily better.
Most of the software I use is more than 10 years old. Some is still updated, some is not (or went cloud and left me happily behind).
Any Steam game that used the "Games for Windows – Live" service, and wasn't updated since the service shut down in 2014, would fail to launch on Windows 10 & later, because the DLLs for the service were removed. For a time, folks were able to download the DLL from third-party sites, but that doesn't work now.
z/OS (aka OS360 aka MVS) supports programs going back to the 60s and I just talked with a DE at IBM who is still using a program compiled circa Apollo 11 mission.
Other systems that will run or automatically translate > 30 yr old binaries:
- I believe IBM i on POWER {i5/AS400} will run stuff from System 38 (1980).
- HPE Nonstop (aka Tandem Guardian ) on X86-64 will run or translate binaries from the original proprietary TNS systems (late 1970s) and MIPS systems (1991).
What is kind of neat is every windows application/dll is a valid DOS application. The first part of all of them is a valid MZ DOS 16 EXEcutable. Windows just treats it as a skippable header and reads the real header that is about 100 bytes in and then decides which subsystem to fire up (win3x, win32, OS/2, etc). But if you take a exe compiled today with current tools and put it on a DOS 3.3 box it would run the exe and print out it can not run (the exe has that in there).
Also from that era not all DOS applications were exclusively 16 bit. Many were hybrid. Just to have better control over the memory space instead of using segmentation was usually worth the speed boost (as well as the bigger registers). Windows from that era usually had extra 'pid' file where you could basically tag the executable as 'hey you are about to run a 32 bit app get out of the way windows oh and support dpmi while you are at it'.
I'm aware of win32s, I used to run it but still it seems unlikely this is a win32 console app unless there's an incredibly unlikely set of circumstances behind this.
Or perhaps it was simply recompiled after all despite what the Twitter post states?
To be clear, I am not saying that it's not impressive in the shitshow that is 2023. I am saying what norms we should work towards.
The kernel abi is stable, everything else is pure chaos, and this is mostly due to how applications are usually packaged in linux: your app could load (as long as it’s not in a.out format) but then would fail at loading most libraries. So effectively you need a whole chroot with the reference linux distro (or other runtime in general) and I’m not so sure you could find archives of 30 years old distros.
And I’m assuming that the kernel abi hasn’t actually changed a single bit and that no other interfaces changed either (stuff like /proc or /sys - /sys wasn’t even there 30 years ago i think).
And if you’re running an Xorg app, I wouldn’t bet my lunch on that level of protocol-level compatibility.
Why this is a mark against Linux and not Windows is beyond me.
Microsoft's devotion to its customers shouldn't be so amazing-- it's the way that every company should behave.
however try running a game from the Windows 95/98 days and you've got a maybe 50/50 chance of it working
e.g. they changed the return code from BitBlt from 95/98 -> XP, they used to return the number of scanlines but switched it to a boolean
same with the heap management functions, directory traversal functions, etc
They might not break userland but Qt and GTK do the breaking for you. Python joined the party recently. Random DBus daemons might be missing, etc.
Current Windows versions trace back to Windows NT 3.51/2000 linage.
Naturally 9X => XP don't work flawlessly, they are two different OS stacks.
however it sort of undermines the "insane compatibility" / "stable API" point if mass-market Windows software produced before the 2001 release of XP mostly doesn't work on modern Windows
NT effectively forked Win32 (introduced with Windows 3.1) into something incompatible
(meanwhile it all runs on Wine perfectly fine)
I was playing an old MMORPG called The Realm. It's been live since 1995 and ran until just a couple months ago. It only knew how to run in 640x480.
I tried to write a program that would create a scaled up version, but it didn't work well, especially since the game would create child windows for certain UI elements. I was writing it in C, which isn't my strongest language, simply so I could call Win32 APIs more easily.
https://www.myabandonware.com/game/mtv-s-beavis-and-butt-hea...
Apple has never had a problem throwing away their customers’ investment in their ecosystem. I was at a company with several hundred Macs when the transition away from PowerPC happened. It was just brutal. And costly. Not just hardware, software too.
And, what for? From a business perspective, you can do the same fundamental work woth both systems. The difference are: My investment is protected in one case and not the other. We have a bunch of Macs here. Only where absolutely necessary and for multi-platform testing.
As much as MS is maligned by purists, the truth of the matter is they have always protected their customers by having a remarkable degree if backwards compatibility, which isn’t easy to achieve and maintain.
https://learn.microsoft.com/en-us/microsoftteams/limits-spec...
[1] https://github.com/riverar/IndirectInput
[2] https://support.gog.com/hc/en-us/articles/360019256854-Myst-...
I know instruction sets changed from PowerPC to Intel to ARM, so probably not macOS at least. But this is a CLI and I doubt old system calls changed
Linux isn’t hostile and if you ONLY use the kernel ABI or statically compile everything, it will work quite a long time.
But if you use dynamic libraries, you gonna have a hard time unless you have source.
These changes are not like they announce something and the next day the libraries/APIs are gone. There is always a transition period that is long enough for the apps to be updated.
Is this issue specific to Windows 10, and would it work on Windows 11?
You would receive such response on the every 64-bit Windows starting from Win2003, there is no 16-bit NTVDM in 64-bit systems.
If you need to run it:
a) use 32-bit Windows 10 (Win11 do not have 32-bit variant)
b) use DOSBox
c) ... VirtualBox/PCem/whatever with 'real' DOS.
d) there are some NTVDM ports for 64-bit systems, use at own risk. Ctrl+F in this post.
there's a troubleshooter there, too
Telometry and other questionable things aside, I've loathed and detested every UI change that Microsoft has done since Windows 7.
I unequivocally believe that windows 7 was peak windows UX. Every subsequent version, I've limped by using classicshell and then openshell.
Windows 11 is the first windows release where I didn't feel the need to install something to bring me back to the late 2000s.
My only pet peeve is not allowing me to create accounts that don't tie into outlook. Yes I know there are tricks to bypass this but I shouldnt have to do that.
If anything, software has it easier: you can layer emulation layer on emulation layer and then only have to adapt the outer layer for whatever pointless changes you are making to the current system.
These programs don't use DLLs, and frankly there's little reason they for them to stop working.
Google isn't as aggressive and most? apps are bytecode only, but I kind of don't expect an apk for Android 1.0 to function properly if run on an Android today. At least if it does anything advanced with networking or needs permissions that changed a lot.
Linux should work if it was static compiled, and probably helps if it doesn't use audio; because Linux audio has changed a lot in 30 years. A dynamically linked Linux binary from 30 years ago is nearly hopeless, because it would have been linked against a different libc that's in common use today, and I doubt that will be on your system today. If you had the full filesystem, it should run in a chroot.
MacOS was System 7 in 1993, on 68k, not power pc. Those applications aren't running on your M2 without emulation. Dropping 32-bit support doesn't help either, of course.
FreeBSD 1.0 was released in November 1993, so it's not quite 30 years old, but I suspect a static compiled app may work, but libraries will be hard. FreeBSD makes compat packages to get libraries to run older software, but I don't see one for 1.x or 2.x, the package for 3.x was marked expired in 2010, but compat4x seems alive and well; that gets you 20 years of probable compatability.
So that's a pretty hard limit. Linux can run binaries that were compiled to the latest binary standard in 98.
For the most part the old DLL interface (kernel32 et al) just sticks around indefinitely even as parts are officially deprecated. Microsoft is careful not to break their public interfaces.
Actually yes, C&C Red Alert 2 was running slow, but the community came up with patches that make it play nice, including the multiplayer which now works better than it did back in 2000.
I don't often sing Microsoft's praises but backwards compatibility is something they get absolutely right: something they've always got right. Everything doesn't have to be changing and breaking all the time and, to me, it's a mark of maturity when an organisation can maintain compatibility so as not to inconvenience - and introduce unbudgeted (and sometimes very high) costs to - users, integrators, and consumers. Top marks, Microsoft.
As an example: The Xbox Series X, their newest flagship model, is fully backwards compatible with all of the Xbox physical CD games from all Xbox systems. Just pop the CD in and you are good to go.
https://www.xbox.com/en-US/games/backward-compatibility
However, that is an impressive amount of backwards compatibility that other game consoles don't have.
(I only have the JP version, which I assume will never work with my UK Xbox Series X, even if the UK version would actually be compatible. Maybe I need to dig it out of my garage and try it anyway.)
No point when this problem has been solved with containers (docker, flatpak etc).
It's just the UI with Bing/Ads/telemetrics/etc integration is so crap, like they've ruined a solid OS with crappy surface level stuff.
Using Windows 11 the answer is ReFS.
The bar is so vastly different for windows and Linux users and by and large I try to keep my mouth shut because I dual boot and I know DAMN WELL which OS needs more handholding and has required fuck-it-start-over handling. God forbid you ever try to login to Win11 with low disk space, you're totally FUBAR and there are countless reports online of this EXACT FKING SCENARIO. Imagine for one second if Linux became COMPLETELY BROKEN if you ran out of disk space, it would be A JOKE.
If manufacturer would consistently publish to LVFS, I would NEVER TOUCH WINDOWS AGAIN. And I play Halo every single day of my life. Sorry gaming on Linux is less of a complete pain in the ass than using windows. You paying attn MSFT? Your stock price is 80% of my life, so I sure hope so.
"Everything is constantly changing"?! Are you FUCKING kidding me? What has changed in Linux is the past 15 years other than Wayland, which, I've been running for 4+ years and know what is BS and what isn't (DM me and I'll screen share stream my desktop at arbitrary scale factors at 240hz). I can run Gnome2, I can run kde3 for gods sake. Meanwhile there's crapware discussed here weekly just trying to get a basic Start Menu back in Win11, or constant complaints about ads, or regressions or ON and ON; do y'all have ANY self respect?
Stockholm syndrome, laziness, take your pick, it's exhausting.
https://www.windowscentral.com/how-set-windows-11-without-mi...
They may not care about backwards compatibility as an abstract concept, but they would like their computer continue functioning the same way today as it did yesterday.
Although MS is getting somewhat bad at that from a general OS perspective with their updates.
Shit, at my current job, we're developing software that runs solely on x86-64 Linux (And our output is an entire VM image, not just an executable), yet we're running on M1 Macs. TBH, it's quite painful and I wish I understood what the hell the engineering department is thinking, since you can't run x86-64 VMs on M1 hardware.
But for gamers, Windows's backwards compatibility makes it king. I can usually easily run 15+ year old games without a hitch.
Across the rest of the world macOS numbers aren't that high, still better than "Desktop Linux" though.
Pretty sure Linux could run a 30 year old gzip binary too. I've never needed to do that with gzip but I have definitely run binaries of a similar vintage without issue.
Windows backwards-compatibility fails miserably on non-trivial programs, you're generally pretty lucky if you can get something from the XP-era or older to work out of the box.
That's actually pretty good. XP was released over 20 years ago.
So yeah, I'll take my chances with that luck.
Not since Linux dropped a.out binary support completely in 5.18. Any newer kernel can't run it.
Right click on windows desktop had what now 3 different menus that might show depending on what you want to do. Oh. And let’s not talk about how much of what you see just covers the stuff up from 1998. Still rendering the old stuff only to have a slightly larger menu render right on top of it.
Honestly, I think a barebones, absolute minimist windows OS would be something that interest a lot of technical users. You can only stack shit so high.
https://support.microsoft.com/en-us/windows/windows-10-and-w...
Hahah no way? Is this documented somewhere? And the new UIs are slooow!