The other day I had a conversation with a coworker about Windows 7 and it’s “innovative” XP mode. I put the word “innovative” in quotation marks because the only innovative thing about it, is the idea of bundling a free virtual machine with a Microsoft OS in order to break backward compatibility. As you may know, I’m a big supporter of virtualization and I’m thrilled to see the slow moving (glacial pace) behemoth such as Microsoft adopting it in such a clever way.
Of course this was pretty much the first time my coworker heard about virtualization and I quickly had to dispel his newly found appreciation for Microsoft by pointing on my screen. I was like “Dude, I’ve been running Windows XP in a VirtualBox on my Ubuntu box for years now. This is how I get the best of both worlds – I get to rely on Linux OS for stability, security and wealth of open source tools and applications, and at the same time I have access to Windows only apps such as Visual Studio, Excel, Monarch. My VM allows me to develop in C# using Visual Studio Express and test my app in an environment that is almost identical to the production without actually having to log out of Ubuntu.
When I started messing around with linux I used to dual boot my machines. I no longer do that. My boxes are either straight Windows or straight Lixux. If I need Windows compatibility on a Linux box I just fire up a VM – which is actually faster and more convenient than rebooting the system.
Microsoft’s decision to bundle XP mode in their new OS release shows that virtualization technology is slowly becoming commonplace tool, rather than just a curious oddity. Windows is using it to solve a particular problem – namely braking backwards compatibility. I envision that in the near future we will see it employed to solve even more trivial problems.
For example, I’d love to see virtualization used to simplify application or development environment setup. I’m pretty sure most of us encountered this issue before. It is probably the most commonly experienced by Windows developer, but it can occur in just about any environment. You know what I’m talking about, right?
I’m talking about code which only compiles under a specific version of the compiler. Compiling it in the most recent release results in a spectacular failure. So you essentially have to download and install a 5 year old version which is known to have serious bugs, and security issues.
I’m talking about project files that can be opened only in the 6 year old Visual Studio version that can’t even be downloaded or purchased anywhere. You have to borrow the only remaining installation CD copy from Johnson on the second floor along with the CD key scribbled on the back of an envelope.
I’m talking about a code that requires you to install an ancient version of PHP and then copy over the php.ini from the production system, and then re-create the intricate tree of include and temp folders and their permissions to even start working.
These things happen all the time – usually on poorly maintained projects from hell. In an ideal world we would not need to deal with these situations. Sadly we do not live in an ideal world. Virtualization could alleviate some of the frustration involved in working on a project like that. Instead of taking hours to tweak your workstation to mirror the original development environment, you could just use a VM.
Imagine this scenario – you get assigned to the project from hell, and the project manager would simply takes a snapshot of his environment and gives it to you. You fire it up on any machine, and you are ready to go. You take that environment with you whenever you switch computers. And if you want to work from home one day, it is not a problem. You just put the VM image on a CD or a flash drive, and boot it up on your home machine. You don’t even have to be running the correct OS, and you don’t have to make any changes to your system. It just works. How awesome could that be?
We developers are not the only ones who could benefit from it. Recently I have been working with an application from hell that was released by a certain bank that hall remain nameless. This application is essentially an Excel plug in which is the most flaky and temperamental piece of software that I have seen in years. Basically if you want to use it, you have to be running Windows XP, Microsoft Office 2003 Professional and .NET Framework 1.1.
If you have Vista you won’t even be able to install it. If you happen to have Office 2003 Small Business or Office 2007 Professional or anything in between you are shit out of luck. If your computer downloads one of the hotfix updates for .NET 1.1 the whole thing is going to literally explode in your face. It’s a nightmare – especially since we have been slowly migrating everyone to Office 2007 for the past year or so. Now we are forced to downgrade these folks.
I wish I could just set up a virtual machine with a pre-configured instance of this plugin and hand it out to people. It would really make my life so much easier. Sadly, I don’t think we are at this stage of VM adoption yet. I actually hit a brick wall even trying to explain this idea to some of my coworkers. The truth is that most people don’t understand virtualization until you actually show it to them. And even then, they only half grasp what exactly did they just see.
There were other significant problems I noticed beyond the need to train the staff on VM use:
- Licensing: I’m pretty sure that issuing a copy of Windows XP and Office 2003 Pro inside of a VM would require some special licensing agreement with Microsoft. I have not looked into it, but chances are that no existing licensing scheme covers anything like it, and the whole operation would simply be illegal.
- Deployment: – virtual machine images are still huge – several GB each. I really don’t see an efficient way to distribute these to people electronically – especially to remote employees who never visit the office. Downloading these files would be a major pain in the ass due to their size. And of course if bunch of people tried downloading them at the same time it would probably make our servers to slow down to a crawl. I can see a scenario where we would eventually settle down on mailing these things out on flash drives and I’m not liking it one bit.
- System Resources: VM’s are still quite resource intensive. A virtualized Windows XP has pretty much the same system requirements as a non-virtualized one. In my experience, to comfortably run XP in a VM you need at least 2GB of RAM and a dual core CPU. This way you can give 1GB of RAM over to the VM and know that it won’t monopolize all of your CPU cycles. Some of the machines we use at work do meet these requirements. Most do not – they have barely enough juice to run XP, the bloated AV suite and the usual assortment of spyware and malware that each of our employees insists on installing. Throw a VM into the mix, and their machine will die in flames
As you can see, I did consider doing this, but eventually dropped the idea. It simply wouldn’t work in our environment. Still, the inclusion of XP Mode in Windows 7 gives me hope that one day I will actually be able to roll out a virtualized solution to a problem like the one above.