Windows Backwards Compatibility

by Mwwhited 20. April 2009 23:04
I hear people whine and complain every time a new version of Windows comes out. The number one complaint is always, “Microsoft sucks!!! My applications no longer work.” Being a software developer I have a little insight on how the world of computing works. And I have to admit… a long time ago I used to be one of those people that would complain. A few years ago I started to realize how difficult code maintenance can be on my relatively small applications. And it got me thinking about what it would be like to maintain a beast like Windows (beast in lines of code).

With the latest version of windows, and hearing the same complaints, I started doing some research. I have found Microsoft puts more effort into backwards compatibility then anyone could reasonably ask for. Poking around on channel9 (http://channel9.msdn.com) and looking for “Application Compatibility” I was amazed by the teams of people that test and shim almost every application ever written. They admit there are some applications they cannot get to work. And most of these are due to developers trying to “be creative”. Examples are things such as people trying to write their own implementations of the stack and heap as well as hard coding file paths.

In a few of the interviews I kept hearing about the “Application Compatibility Toolkit” or “ACT” so I figured I would take a look (http://technet.microsoft.com/en-us/windowsvista/aa905078.aspx). In kit there is an application called “Compatibility Administrator”. This tool allows you to look at the existing application shims. (Simply put a shim can be thought of as an operator that helps to direct calls to where they need to go, and at times even forward the call to a different number.) In this tool I was surprised to see thousands of applications that have been patched. As well as, the ability to add to the shim database for your own applications.

Some of the standard shims are for things such as faking a version number of the operation system and redirecting file paths. I am still a little lost why people would do a version number check (especially an equal to instead of greater than or equal to) on the operation system. Personally I would test for a the required feature or just let the system throw an exception that I can handle myself. Other things that people have been known to do are using undocumented “features” that were never meant for production, such as parsing the registry for a version number or path enumeration.

Here is a hint folks… When you want to write an application that works with other peoples stuff you need to do it using the development kits and documented APIs that has been released, or understand that when the next version is released YOUR application might get broke.
While I do not work for Microsoft, I believe they have gone well out of their way to help every make applications work. I could rant about other vendors, but I will leave that for another time.

-Thanks,
Matt

Tags: ,

Programming | Windows

Comments are closed

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen

RecentPosts

Badges