Hacker News new | past | comments | ask | show | jobs | submit login

Because, when they did it right, in Windows NT 3.51, the users with legacy 16 bit applications screamed. There was a 16-bit DOS compatibility box, but it wasn't bug-compatible with DOS.

Microsoft underestimated the inertia of the applications market. NT 3.51 was fine if you used it as a pure 32-bit operating system. You could even configure it without DOS compatibility. Few did.




Contemporaneously on Linux, there was a "DOS box" (DOSEMU) running that could play Doom at full speed, with sound. Something the NT DOS box couldn't manage.

Microsoft had the resources and expertise to make excellent DOS compat on NT. They just didn't. The reasons are many: they just didn't want the expense, "binning" (Windows 9x for consumers, Windows NT for professionals and enterprises), plus Windows NT was a memory hog at the time and just wouldn't run on grandma's PC.


> when they did it right, in Windows NT 3.51, the users with legacy 16 bit applications screamed

I mean, i don't think there is anything "right" involved from the users' perspective when all they get is the programs they want to use their computer with becoming broken :-P.

In general people do not use computers for the sake of their noise nor OSes for the sake of clicking around (subjectively) pretty bitmaps, they use computers and OSes to run the programs they want, anything beneath the programs are a means not an end.

(and often the programs themselves aren't an end either - though exceptions, like entertainment software/games, do exist - but a means too, after all people don't use -say- Word to click on the (subjectively again) pretty icons, they use it to write documents)


That may have been Dave Cutler's doing. Cutler came from DEC and did the OS for the VAX. (Not UNIX, DEC's own OS). When DEC went from 16 to 32 bits, the VAX was made hardware-capable of booting up in PDP-11 mode. Nobody used that feature, because the result was an overpriced PDP-11. So it seemed reasonable to think that, once the 386 was out, everybody would run 32-bit software on new hardware.

That did not happen. 16-bit applications hung on for a decade.


>anything beneath the programs are a means not an end.

This.

Absolute backwards compatibility is why Windows (particularly Win32) and x86 continue to dominate the desktop market. Users want to run their software and get stuff done, and they aren't taking "your software is too old" for an answer.


Unfortunately no OS so far cares about backwards compatibility for users. Everyone thinks it is ok to force whatever new UI and workflows their monkeys dreamed up on the userbase.


My desktop (Linux running Window Maker) looks and feels more or less the same today as it did in 1997 - years before i even learned about it :-P. If anything, bugs aside, all changes since then have been for the best IMO.

Of course that's mainly possible because of how modular the Linux desktop stack is.


Yep.

I finally abandoned CorelPHOTO-PAINT 3.0 only when I moved to x64 Vista in 2008.


What did you use instead?


Settled on Paint.NET.

I honestly tried to use GIMP multiple times but it's always felt.. unnatural.

https://www.getpaint.net/

NB: but IrfanView is still my goto picture viewer.


Something the Unix world can certainly learn from.


Sun used to take binary compatibility very seriously. Solaris 8 (and perhaps later releases) still had a compatibility layer for SunOS 4.x binaries. Solaris 11 can still run Solaris 2.6 binaries.

Linux is another matter entirely, if your binaries run at all from one distribution release to the next you're doing well.


Linux doesn't need binary compatibility as much as Windows, lot of source packages will compile right away with a vast array of different operating systems, typically excluding Windows but including Linux, and Linux is a few clicks away from running a fair number of MS-DOS and Windows applications, probably more than any single Windows version. Linux is king in compatibility.


Linux needs binary compatibility every bit as much as Windows. Even among people who are nerdy enough to run Linux on the desktop, very few are interested in compiling software to make it work.


> Even among people who are nerdy enough to run Linux on the desktop, very few are interested in compiling software to make it work.

I would imagine most desktop linux users rely on maintainers to compile and distribute binaries for their particular flavor.


I maintain a package for which the upstream source hasn't changed in about 23 years. I still need to intervene once or twice a year because something else changes in the distro to cause that package to no longer build or run.


As someone who still uses older software, thank you for your service! I still use Dia and xfig (because I’ve built up tons of “blocks” for them) and appreciate people donating their time to keep some ancient software going :)


>I would imagine most desktop linux users rely on maintainers to compile and distribute binaries for their particular flavor.

Which is less ideal than just having general binaries that work.


That doesn't help you at all when you don't have the source and even then, compiler changes break source compatibility all the time.


Not just Linux, Mac too (people forget that they run a certified BSD kernel).


Macs uses FreeBSD as the foundation for their base system, but the kernel itself is a Mach derivative.

Even if you get the source youbend up with incompatibilities. From compiler to libraries. (Especially when reaching GUI/Gnome etc.)

Systems like Solaris are a lot more restricted what sets of libraries they provide (not "package up everything in the world" as some linux distros) but what they provide they keep working. (I haven't touched an Solaris system in a long time, but assume they didn't start massive "innovation" since then)


That's great when you're distributing your software for free and giving away the source code too, but it's a complete non-starter for commercial software.


This discussion feels a bit ancient to me.

Considering that desktop apps nowadays rely on web counterparts to be functional, most commerecial apps will stop running after some time, regardless of whether operating systems keep compatibility or not.


Surely you've just outlined the very best reason to keep alive old applications that don't require a web counterpart!

Personally I want to keep GuitarPro 6 alive (There's no newer version for Linux because binary software distribution on Linux wasn't worth the trouble) and Quartus 13.1 (because I still write cores for a CycloneIII-based device and 13.1 is the last version to support that chip.)


Not every desktop app these days is an electron monstrosity. Especially not if it's a commercial app.


IME Electron is more popular among commercial apps.


To be clear it is not binary formats themselves that change and cause incompatibility. ELF is ELF and hasn't appreciably changed. And it isn't even really kernel syscalls (though that isn't etched in stone, I don't get the impress it's changed that much). The problem is the libc or other shared libraries.

Seems like the way that this is "fixed" is by using containers. But it feels so...bloated.


The solution that Windows provides for the problem -- WinSxS -- is, ultimately, no less bloated.


These days, Windows actually provides a single standard C runtime library in the OS with strong backwards compatibility guarantees, no WinSxS needed.

Same on Solaris. Maintaining userland compatibility was a large part of what Sun did.


> Linux is another matter entirely, if your binaries run at all from one distribution release to the next you're doing well.

Linux binary compatibility is actually pretty good. As is glibc's an that of many other low level system libraries. The problem is only programs that depend on other random installed libraries that don't make any compatibility guarantees instead of shipping their own versions. That approach is also not going to lead to great future compatibility in Windows either. The only difference is that on Windows the base system labrary set is bigger while on Linux it is more limited to what you can't provide yourself.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: