Windows 95 merged MS-DOS and Windows apps and upgraded the API set from 16- to 32-bit, and Microsoft wanted people to have zero reasons not to upgrade. One reason nearly survived: SimCity for Windows 3.x, whose author Jon Ross had accidentally left in a bug that read memory he had just freed. On Windows 3.x it worked fine because the memory never went anywhere; on Windows 95 betas the game broke. With more than 5 million copies sold, SimCity had to work without a hitch.

Microsoft tracked down the bug and added code to Windows 95 that looks for SimCity; if it finds the game running, it runs the memory allocator in a special mode that does not free memory right away. SimCity was not alone: the Compatibility Administrator in the Windows ADK shows the per-app fix database. Windows NT, detecting files typically installed with Final Fantasy VII, applies a fix literally named “Win95VersionLie” — simply telling the game it is on Windows 95 — while Dungeon Keeper gets file-path corrections keyed to files like “Horny.tif”.

The obsession was institutional. Raymond Chen documented in 2005 that Windows 95’s development manager drove a pickup truck to the local Egghead Software store and bought one copy of every single PC program in the store; every developer owned up to two programs to install, run and document for bugs, and testers could keep what they finished. Mike Perry, former creative director at Maxis, later noted that Ross went to work for Microsoft after leaving Maxis.

An operating-system upgrade lives or dies on its app catalog; users will not buy an OS that breaks the games and tools they already own.

Fixing every third-party vendor was impossible, so shims let Microsoft repair compatibility without touching anyone else's code.

Detecting apps by name or by installed files kept each fix surgical instead of changing behavior for everything.

Mass-testing real retail software turned unknown incompatibilities into a documented, assignable checklist before launch.

Backward compatibility can be bought app by app: emulating an old platform's bugs — even its memory mistakes — removes every excuse not to upgrade and breaks the software chicken-and-egg.

Joel Spolsky, who retold the SimCity story in 2000, called this the way to break the OS chicken-and-egg problem: 'provide a backwards compatibility mode which either delivers a truckload of chickens, or a truckload of eggs, depending on how you look at it, and sit back and rake in the bucks.' The per-app shim database outlived Windows 95 and remains inspectable in the Windows Assessment and Deployment Kit.

FOLLOW THE EVIDENCE

The sources

  1. Windows 95 went the extra mile to ensure compatibility of SimCity, other games arstechnica.com