by Leon Rosenshein

Compatibility Mode

api

Have you ever wondered what Windows Compatibility Mode is for? It's because APIs are forever. As new versions of the Windows OS came out they needed to handle the old APIs, bugs and all. So when Microsoft fixed a bug in a later version of Windows and broke a lot of 3rd party software they added a compatibility mode that lets you rely on that bug. Kind of a neat hack, but not a situation you want to get yourself in to. Just ask Raymond Chen.

On the plus side, from a customer standpoint, that kind of dedication to keeping things working is great. Back in my Flight Simulator days we did the same thing. Almost every 3rd party addon that worked with FS98 worked with FSX untouched. Great customer experience. Our customers and our ecosystem loved us for it.

The FlightSim team, no sot much. About 25% of our testing was to make sure changes didn't break existing addons. Lots of version checks in the code to either add reasonable defaults or disable features for those addons. Was it worth it? The jury is still out on that one, but here's a couple of datapoints to help inform your decision. Combat Flight Simulator used the same physics and networking code as FlightSim but a different graphics engine. More detail on the ground, more ability to interact with things moving on the ground, and more booms. But it didn't sell nearly as well and was cancelled. A few years later, as FS costs mounted (and sales remained large, but flat) the Flight Simulator franchise was shut down. I can't tell you how much of the increased cost was back-compat, but it's a non-trivial amount.

On the negative side, maintaining all that backward compatibility was tech debt. Every release a portion of our effort that could have gone in to new user facing features and experiences, or unlocking new capabilities for 3rd party devs was dedicated up front to keeping the old things working. Our forward velocity went down. Features sat on the backlog from version to version. And sometimes we ran into things we just didn't understand, like that section of assembly code in our keyboard handler. We didn't touch it because every time we did something bad happened. Eventually someone took the time to really understand what it was doing, what side effects it had, and to recode it in C so we could change it instead of developing around it.

Flight Simulator is coming back this year. It's not going to have backward compatibility with FSX, but they're fully embracing the 3rd party community. It's going to be interesting to see how they approach compatibility mode