Every investment in new software requires consideration of older software and data formats which will remain in use. For this reason software users typically prefer new versions are completely backwards compatible with older versions. By definition, backwards compatibility means new platforms will run software written for older versions of the platform and that applications will be able to read data formats from prior versions. Microsoft® has made a habit of breaking compatibility with their software. Many of their Windows™ products will not run software which worked on earlier versions of the operating system, often forcing users to upgrade additional software if they upgrade Windows.
Examples:
- Microsoft® Windows™ XP contains changes to the Win32 API which break many applications written for Windows 2000, NT, and other versions
- Microsoft Exchange Server 2000 will not run on Microsoft Windows Server 2003
- Internet Information Services 5.0 will not run on Windows Server 2003
- SQL Server 2000 will only run on Windows Server 2003 with Service Pack 3 installed
- .NET version 1.1 is not backwards compatible with version 1.0, forcing developers of software for v1.0 to review all of their code and potentially make changes if they wish to see the benefits of fixes in v1.1
When Rob Short, the vice-president of Windows Core Technology, was asked, "How many applications will transfer over from [Windows] NT4 or 2000 [to Windows Server 2003]?" he answered: "I'm not sure what the exact number is for taking an NT4 application and running it -- it's in the high 60 percent. It's not 90... Most of the time, if the application is following the [security] rules then it will run. But I must admit the rules haven't been well publicised."
So when considering continued use of Microsoft products, it's important to think of the implications of future versions potentially being incompatible and the additional expenses that will ensue.