However, as a sibling comment notes, Linux has also preserved binary compatibility (at the kernel level) for a similar amount of time (of course as long as neither of them break compatibility then Windows will have the numerical edge as it's slightly older).
So the question becomes, why is compatibility so apparently good on Windows and so apparently bad on Linux? I feel it's to do with a culture of dynamic linking and compiling your own software. A statically linked X11 application from 15 years ago will, as far as I can tell, run fine on Linux - it's just that such things are rare. You're far more likely to come across either a dynamically linked binary, or a source tree. This seems to be reflected in source code compatibility, which is better in Linux.
There really isn't a comparison, but it does have value to a lot of people. I don't mind so much, but there's enough people that do. I've helped many people over the years switch away from windows, and half of those switched back to windows within a year.
Don't get me wrong, I really like Linux... but stability for the standard atypical end user isn't very good at all.
> Windows can run an executable with a GUI interface compiled for 32-bit Windows over 20 years ago...
Linux can also run really old code that is 16-17+ years old: Loki Software games ports from 1998-1999. Though there just no need for average user to run anything that old so it's usually not available out of box.
Though it's far from perfect, Windows has a better binary compatibility record than ANY other OS for far longer periods of time. There is something to be said for that. It's only recently (for 64-bit windows) that DOS support (ntvdm) has been unavailable.