For a brief period, Windows 95 could run Windows 3.1 in a virtual machine

Raymond Chen

As the Windows 95 project started to come together, I was approached to undertake a special project: Run Windows 3.1 in an MS-DOS virtual machine inside Windows 95.

This was the ultimate in backward compatibility, along multiple axes.

First of all, it was a demonstration of Windows 95’s backward compatibility by showing that it could even use an emulated MS-DOS virtual machine to run the operating system it was designed to replace.

Second, it was the ultimate backward compatibility ripcord. If you had a program that simply wouldn’t work with Windows 95 for whatever reason, you could fire up a copy of Windows 3.1 in a virtual machine and run the program there.

To use it, you installed Windows 3.1 and Windows 95 into separate directories, and then made a few edits to the Windows 3.1 SYSTEM.INI file to replace the mouse and serial drivers with special versions. There were some other preparatory steps that had to be done, but eventually you got to the point where you could double-click the Windows 3.1 icon, and up came Windows 3.1 in an MS-DOS virtual machine.

Although you could in theory run Windows 3.1 in a window, the experience was pretty bad in practice for a variety of reasons. Computer systems of that era simply didn’t have the computing horsepower to render the video fast enough. And you wanted keyboard hotkeys like Alt+Tab to switch among your Windows 3.1 windows, rather than treating Windows 3.1 as one giant program to be switched into or out of.

Running Windows 3.1 as a program inside Windows 95 served as a convincing technology demonstration, but the feature was cut shortly after it came together.

One reason is that running old programs in a virtual machine doesn’t necessarily create a good user experience. There was no integration between Windows 3.1 and Windows 95. If you copied something to the Windows 3.1 clipboard and then switched back to Windows 95, then tried to paste from the clipboard, you didn’t get what you copied from Windows 3.1, because Windows 3.1 and Windows 95 had separate clipboards. Similarly, if you had a Word document with a live link to an Excel spreadsheet, and you opened the Word document in Windows 3.1 but the Excel spreadsheet in Windows 95, not only did the live link not work, but the copy of Word running in Windows 3.1 would get a file sharing violation when it tried to access the Excel spreadsheet, resulting in confusing error messages. Because even though they ran in separate virtual machines, they shared a file system.

But perhaps the biggest reason for the feature to be cut was that its presence would undermine the compatibility story of Windows 95. Windows 95 was intended to be maximally backward compatible with all your Windows 3.1 programs. The compatibility would be so great you would never turn back. If there were this “Run Windows 3.1 in an MS-DOS virtual machine” feature, it would be an admission that we failed: We gave you a way to turn back.

Somebody managed to dig up this unfinished feature from a leaked build, so you can see what failure looks like. (The feature didn’t make it very far past the science project phase, so don’t expect to be impressed by the user experience.)