Is it compatible? Does X run on Y? What level are you running? Sound familiar?
In the computer industry, it is difficult to find acceptance of a new platform unless it is somehow compatible with another platform. There are a number of example of companies ignoring compatibility and being punished for it. IBM essentially ignored the ISA bus and focused on Microchannel. Intel ignored the 32-bit compatibility part of the new 64-bit Itanium processor. In both cases a competitor came in and cleaned up. Compaq came out with a 32-bit ISA based computer. AMD came out with the Opteron processor that ran 32-bit code natively on a 64-bit processor. The market leaders at the time (IBM and Intel) believed that they could control the market solely based on their lead. They underestimated the power of the need for compatibility.
This happens in the software industry as well. Microsoft hates having to support everything that has ever run on Windows. At certain points, it decides what gets through and what doesn’t. The transition from 16-bit to 32-bit Windows is an example. For the most part, Windows 95 supported what Windows 3.1 could do. Of course there were quirks and some things didn’t work, but Microsoft tried to be generous with what would work. This even went so far as to fake certain qualities that some people would consider bugs. In other words, they had special flags for certain apps that would trigger the expected behaviors. As a platform ages, it becomes that much hard to keep things compatible. In Windows case, it is nearly impossible to guarantee that an application that worked on one version of Windows will work on another. This is due to the application being written and tested for only the existing Windows platforms and not the unexpected ones to come.
I had my own experience with this during my work on OS/2 and WinView. At that time, it was incredibly important to preserve the compatibility of the applications with the pseudo versions of DOS and Windows. This was accomplished using 32-bit Virtual Device Driver code along with a special DOS kernel. Windows itself was mostly unchanged due to the dependency of DPMI.
During this time I became very sympathetic to customer concerns related to compatibility. This concern led to improving our compatibility as high as possible. In the end, we were surpassing what OS/2 could run based on closer ties to the customers.
The compatibility issues still live with us today. I’m sure people could tell you how Vista wouldn’t run this or that. The normal reply is that the vendor needs to rewrite the application. I don’t think that is always fair.
I just wanted to start this topic up and hopefully I’ll return to it in the near future.