News for hackers. Stuff that matters.
Re:Windows 95 went the extra mile to ensure compatibility of... by msla on Monday December 26, 2022 @03:24PM (#34141446)
And these days, Windows is more about chasing the shiny than ensuring old applications run.

I've had more luck with old Linux binaries running, myself.

Re:Windows 95 went the extra mile to ensure compatibility of... by MomoXenosaga on Monday December 26, 2022 @03:47PM (#34141688)
I disagree. Couldn't get Deadly premonition working. Windows recommended XP compatibility mode and it worked!

All the 25 years of code is still in Windows 11 they just hide it with a lick of paint. If you want to play old games Microsoft is still your best bet.

Re:Windows 95 went the extra mile to ensure compatibility of... by jorvi on Monday December 26, 2022 @04:26PM (#34142062)
As the joke goes, Win32 is the Linux ABI.

There are a lot of baffling decisions by Microsoft’s Windows division, but their extreme dedication towards backward compatibility is nothing short of Herculean.

Sometimes I wish they’d split up Windows in an ultra-slow ‘Enterprise’ ring and a move-fast (think about the speed of macOS changes) ‘consumer’ ring, where they could drop much of the legacy cruft in trade for speedy/forced improvements. Think macOS going fully 64 bit, making the system image immutable, etc.

Hell, imagine if they’d allowed the Xbox One, X and S to run Windows 11 in S mode. Instant cheap performant computer for the layperson! And with it running S mode, they’d make their money through the Microsoft Store.

Re:Windows 95 went the extra mile to ensure compatibility of... by TazeTSchnitzel on Monday December 26, 2022 @06:01PM (#34142898)
Unfortunately for Microsoft, condumers are as wedded to legacy apps as enterprise customers are. A lot of Steam's library immediately vanishes if you lose 32-bit support for example.
Re:Windows 95 went the extra mile to ensure compatibility of... by anankaie on Monday December 26, 2022 @08:05PM (#34143745)
> ultra-slow ‘Enterprise’ ring and a move-fast (think about the speed of macOS changes) ‘consumer’ ring

They do: Long-term Servicing Channel releases: https://techcommunity.microsoft.com/t5/windows-it-pro-blog/l...

Re:Windows 95 went the extra mile to ensure compatibility of... by msla on Monday December 26, 2022 @04:21PM (#34142019)
> Couldn't get Deadly premonition working. Windows recommended XP compatibility mode and it worked!

This just tells me Windows is on a level with Linux + Wine, with the compatibility mode.

> All the 25 years of code is still in Windows 11 they just hide it with a lick of paint.

That's not true. Windows had a big, discontinuous shift when they abandoned the DOS-centric Windows codebase in the move to XP.

Re:Windows 95 went the extra mile to ensure compatibility of... by ThunderSizzle on Monday December 26, 2022 @04:26PM (#34142057)
Which is why you need a Dos Box to play DOS games.
Re:Windows 95 went the extra mile to ensure compatibility of... by tadfisher on Monday December 26, 2022 @05:50PM (#34142801)
That wasn't true for Windows XP, which shipped with the NT Virtual DOS Machine (ntvdm.dll). Unfortunately, this was dropped in 64-bit Windows and finally axed in Windows 10.
Re:Windows 95 went the extra mile to ensure compatibility of... by MomoXenosaga on Monday December 26, 2022 @04:36PM (#34142159)
You're welcome to try getting Deadly premonition working in Linux!
Re:Windows 95 went the extra mile to ensure compatibility of... by mrintegrity on Monday December 26, 2022 @05:26PM (#34142598)
I was about to gloat, as it's so cheap to buy, I thought it was a good opportunity to test Steam proton by selecting "enforce compatibility" which so far has worked for everything I threw at it (CIV V, hitman absolution, bunch of other obscure windows only titles).

Initially happy as the install and intro ran fine, but pressing enter to skip the video exits the game immediately.

Maybe that's further than you would expect, wine / proton is incredibly good nowadays, but still your point stands.

Re:Windows 95 went the extra mile to ensure compatibility of... by RajT88 on Monday December 26, 2022 @05:38PM (#34142696)
> Windows had a big, discontinuous shift when they abandoned the DOS-centric Windows codebase in the move to XP.

You mean the move to the NT platform, which made the consumer windows desktop OS finally stable.

Compatibility features, while not perfect, were implemented to help try and get Win9x and DOS workloads to function normally. Some DOS apps ran fine on XP in compatibility mode, although I couldn't say what %.

Re:Windows 95 went the extra mile to ensure compatibility of... by Dalewyn on Monday December 26, 2022 @06:57PM (#34143284)
>Windows had a big, discontinuous shift when they abandoned the DOS-centric Windows codebase in the move to XP.

Windows 11 is the latest member of the Windows NT family, which originates from Windows NT 3.1 which coincides with Windows 3.1.

Windows NT 4.0, which coincides with Windows 95, is where things start to look more familiar to us today.

Windows 2000 followed to coincide with Windows 98 and ME and is where the NT family really got consumer-aimed software working right with the integration of DirectX all the way up to DirectX 9.

Windows XP which followed 2000 is really just 2000 with some more cleanup and QoL improvements. All the foundations were laid by the time of Windows 2000.

So yes, "all the 25 years of code" are definitely still in Windows 11 under a lick of paint.

Re:Windows 95 went the extra mile to ensure compatibility of... by moffkalast on Monday December 26, 2022 @03:58PM (#34141805)
I wouldn't say so, for windows you can run the same built package on anything from 7 to 10 without too many issues, on linux trying to install a package that hasn't been released on the current OS version package manager repo feels like blasting your brains out. At least for Debian/Ubuntu. And the only fallback is to compile the entire thing yourself, because fuck me right?

Like sure I understand that having specific packages for each version should make it reliably work, but the trade off and demand for devs to keep up is pretty huge.

Re:Windows 95 went the extra mile to ensure compatibility of... by Beltalowda on Monday December 26, 2022 @04:27PM (#34142068)
Usually tracking down old versions of libraries works, except when it doesn't of course. If the source is available, I think "just compile it" is kind of okay to be honest; it's usually not that hard, and if it is, then that's kind of a problem with that software's build system IMHO.

I compiled xv from 1994 the other day on my Linux box; just has to make a tiny patch to fix an include (lots of warning, but it compiles and runs).

That said, there's some room for improvement. For example pkg-config/pkgconf could automatically suggest which packages to install if "pkg-config --libs x11" fails, or some other distro-agnostic way for people to track down dependencies.

If you're shipping a binary program without source (i.e. a game, for example, which tend to be closed source) you should ship the libraries or compile things statically. Some of the older Linux games on gog.com can be a bit tricky to run on modern systems due to this.

Re:Windows 95 went the extra mile to ensure compatibility of... by moffkalast on Monday December 26, 2022 @04:45PM (#34142238)
> tracking down old versions of libraries works

See that's the thing, everything on linux is designed to work by sideloading as much as possible, depending on thirty thousand packages that must be all installed to the perfect version by apt or else nothing works. A good system if you need to get a fully featured OS running on 100 MB of disk space, which tbf is linux's niche, but it's absolute horseshit to maintain.

Windows on the other hand tends to have flatpak-style monolithic executables, with the odd .NET framework or cpp resdistrubutable here and there, but it's the rare exception. Things tend to actually work when they bundle their dependencies. Hell, the average Java app ships the JRE along with it because nothing works if the wrong version is installed globally. Linux just takes that problem as a fact of life and tells you to fuck off.

Re:Windows 95 went the extra mile to ensure compatibility of... by Beltalowda on Monday December 26, 2022 @05:43PM (#34142730)
In general, I'm a fan of statically linked binaries or shipping the libraries with the application, so I mostly agree with you. But I also can't deny there's advantages to the shared-link approach as well. In short, there's upsides and downsides to both approaches and no perfect solution.

In practice however, I rarely encounter issues, except for closed-source programs that don't ship their libraries. That, I think, is mostly the fault of the vendor and not the Linux system. Of course, as a user it doesn't really matter whose fault it is if your application doesn't work because you just want the damn thing to work. It does mean the problem (and solution) is mostly an educational one, rather than a technical one. You certainly can ship binary programs that should work for decades to come: the two core components (Linux kernel and GNU libc) take backwards compatibility pretty serious, more or less on equal level with Windows.

You don't even need flatpack. A wrapper script with "LD_LIBRARY_PATH=. ./binary" gets you a long way (and still provides people the ability to use a system library if they want, so sort-of the best of both worlds).

Re:Windows 95 went the extra mile to ensure compatibility of... by tadfisher on Monday December 26, 2022 @05:45PM (#34142749)
That's everything on Unix-likes with shared libraries, yes. You can statically-link or use a system like Nix or Guix that don't enforce a single library version (by ditching the "default library search path" concept), and you get the best of both worlds: space saved for most of your shared library dependencies, and separate versions for those binaries that need them. It's basically Unix with a garbage collector.
Re:Windows 95 went the extra mile to ensure compatibility of... by int_19h on Monday December 26, 2022 @11:07PM (#34145007)
These days, Windows doesn't tend to have monolithic executables - look inside the installation folder of a random app, and chances are good that you'll see a bunch of DLLs aside from the CRT. Also, .NET apps are normally redistributed as a bunch of assemblies, even aside from the CLR.

The key difference is that each app bundles its DLLs for its own private use. From the user's perspective, it's essentially the same as static linking, if you treat the entire folder as "the app".

Re:Windows 95 went the extra mile to ensure compatibility of... by pjmlp on Tuesday December 27, 2022 @05:25AM (#34147375)
That is exactly what the op meant with " flatpak-style monolithic executables".

In MS speak, it is xcopy install, based on how MS-DOS applicatons used to be distributed, even when static linking was the only option (with overlays).

Re:Windows 95 went the extra mile to ensure compatibility of... by jacoblambda on Monday December 26, 2022 @05:16PM (#34142509)
This was one of the things I found very painless with gentoo surprisingly enough. I could easily slap together an ebuild on my local overlay that matched the dependencies of the deb/rpm even if that meant some old as dirt dep that wouldn't be on my machine normally. Then just `emerge sync -r localoverlay && emerge category/package-name` like normal. Maybe 5-10 minutes at most to do and I'd have a fully managed install that'd continue to work even if I tried to install it 5 years from now.

I've tried similar on debian, ubuntu, and centos but fighting with apt or yum and their (seemingly) comparatively brittle packaging systems got very old very quickly. Not that it can't be done easily on those systems but so far I haven't managed it yet.

Nix I find can also be really nice for this, especially since flake based packages are pretty much self contained. Still a lot less pleasant compared to the portage/ebuild route though.