« More Lost Personal Data | Main | My New Audio Toy: MOTU Traveler »

Virutal Machines and Software Development

Joel Spolsky talks about how his company uses virtual machines as part of their software development process. He gives several examples of how they use it at Fog Creek:

Here’s an example. The first thing that FogBugz Setup does when you run it is to test that all kinds of prerequisites are installed, like IIS and MDAC and VBScript. In order to develop and test that code, I need virtual machines that are missing the prerequisites, so I can test all the code paths.

With VMware 5, I can build a stripped down virtual machine containing, say, a minimum Windows 2000 installation without any of the prerequisites. Then I can take a snapshot of that, and install prerequisite 1. Then I can take another snapshot of that, and install the prerequisite 2. Eventually I end up with a bunch of snapshots with different configurations and I can go back or forwards to a particular configuration in one step.

Here’s another example of why VMware is critical. Let’s say I’m testing the upgrade code in FogBugz for upgrading, say, from FogBugz 2.0 to FogBugz 4.0. In about one minute I can be running a pristine copy of Windows 2000 that looks just like the day it was installed. Two minutes later, it’s running FogBugz 2.0, and I take another snapshot. Now I run my upgrade code on that, and, of course, it fails, thanks to Murphy’s law, but it leaves FogBugz in a “half-upgraded” state. The brilliant part of VMware is that I can click to go back to the 2.0 snapshot and in about 30 seconds I’m back to a pristine FogBugz 2.0 installation.

Our other major use for VMware at Fog Creek is for supporting Linux. FogBugz runs on all kinds of different distros and we use VMs to develop and test with them all.
From Joel on Software - Monday, May 02, 2005
Referenced Tue May 03 2005 14:28:26 GMT-0600 (MDT)

Posted by windley on May 3, 2005 2:26 PM

See related posts:

1 Comments

I think most software professionals (and especially CM people) miss this basic ability of VMWare. When I was at Harris/Teltronics in SLC, we had software on different versions of compilers, MDAC, Delphi components, etc. Whenever we made a change to the build environment, we took another image. This coupled with our VCS, allowed us to recreate the code exactly as it was months and even years earlier. When you have different customers on different levels, this ability is invaluable. Unfortunately, I still find today that even the simple concept of a build machine (i.e., not building code on a developer's workstation) is too frequently a foreign concept. VMWare rules!