Microsoft’s Virtual PC is a virtualization software that allows you to create shell operating systems which run inside your main operating system. There are several similar products ranging from free/open source to high-end expensive software. I’d like to discuss a few of the pro’s and con’s of using Microsoft Virtual PC from the point of you as a single-use developer. This differs quite drastically to enterprise or commercial environments considering virtualization, and seperate considering of these pro’s/con’s should be taken. Consider this as a personal use, surface level evaluation only. Whew, now that the disclaimer is out of the way…
On the Bright Side
Running Multiple Operating Systems
From a developer’s point of view, having access to several different operating systems from a single PC is extremely useful. Software development requires constant testing on various platforms and browsers, as well as under specific conditions. Once you have a library of operating system images (images are emulations of a PC and inherently the operating system it is running on), you can readily launch any virtual PC in minutes (seconds?). Images are not relegated only to operating systems; they also include hardware setup’s as well, and can allow you to emulate specific hardware requirements to test development against.
In addition to building your collection of operating systems or PC configurations through Virtual PC, you can also use Virtual PC as a complete system backup and pass PC’s back and forth between hosting computers. If something were to happen to one of your images, it is extremely easy to simply load the original Virtual PC image and begin again. Though Virtual PC images are large, you can conceptually share images back and forth between multiple users. This is particularly useful if you use multiple laptop/desktop combinations (say work and home?) and would like a common PC image on an external harddrive.
Another huge advantage of Virtual PC is the use of Images as sandboxes. There are two very common examples of sandbox usage. First, when developing code where you really don’t know what the end-result will be and worry that what you are working on could destroy your data/operating system/etc. during development or testing. Secondly, you’re installing software that you are not confident in it’s integrity; perhaps it’s open source, contains viruses/trojans, etc. Using Virtual PC as a sandbox is a pretty quick and easy way to limit exposure to possible damage.
You Can’t Always Win
Unfortunately, in most cases you will see a slight to moderate degradation in system performance depending on your particular system. I run a fairly capable machine, so performance was not a major issue; but it is noticeable that you are running inside a shell. At times, applications seem a bit choppy, and I’ve noticed that keystrokes and mouse movement are not always picked up as well as expected, which can become annoying and a bit of a disconnected experience.
Perhaps this is something that can be remedied easily, but I frequently run into screen display/resolution inconsistencies while running Virtual PC. Resolution will periodically resize to very small, and even when set manually do not fill the entire available monitor resolution like your main PC would. This is more of an irritation than anything else.
Images are HUGE! If you don’t have excess amounts of file storage (harddrive capacity) then forget about it. My current development image (which I use for basic development as well as other common tasks), is 33Gigs… software-wise, the image is pretty lean. An image with additional data, several installed programs, etc. can really become heavy. So be conscientious as to how much harddrive space images take up.
These are just a few pro’s and con’s regarding Microsoft Virtual PC and virtualization in general. I will begin testing VMWare shortly, and look forward to releasing a post comparing the two. In the meantime, have a go at Virtual PC yourself by downloading it here for free!