Robert McLaws: Windows Edition

Blogging about Windows since before Vista became a bad word

Virtually Left Behind

You know, there has been a lot of controversy lately (from developers I respect who should know better) about the news that Visual Studio .NET 2002/2005 will "mostly work but be unsupported" on Windows Vista. They claim that the answer "Just move your environment to Virtual PC and develop on VS.NET 2003 there" is unacceptable, claiming that virtualization is "slow, even on great hardware". Are the people complaining really going to be moving to Vista anyways? Or do they just like having stuff to complain about? Hmmm, I wonder...

First off, who is still developing on Windows XP in the first place? Most developers I know work on Windows Server 2003. It's faster, more responsive, and is more locked-down... plus you can develop and test on the same machine with IIS 6 built-in. You can say "well, my shop can't afford that many license of Windows Server", but every Microsoft shop should have at least one MSDN subscription. It's the single most cost-effective way to build testing environments.

But I digress. The bottom line is, if you're a develpment shop, and you're NOT using virtualization yet, you are wasting valuable time and money. How can I make such a bold and audacious claim? Well, consider the following scenario:

"Scott" is a .NET developer working for a Web 2.0 company. They are working on the next generation of their web platform, and they want to be able to leverage ASP.NET AJAX Extensions for the browser, and WCF & WPF for richer applications on the desktop. He's constantly evaluating new bits as they are released, and managing his system is a pain. The .NET 3.0 installer has hosed his system more times than he can count, and he's had to delay his project several times to rebuild his machine. He only has one machine at his desk, and between waiting for the Windows XP installer and the VS 2005 installer, he has burned through plenty of company money waiting around. He knows it is a pain, but he and his manager have accepted it as the price you pay for staying on the bleeding edge.

Sounds like a lot of fun, right? <rolls eyes>

Now consider my setup. I test several new Vista builds every month, and yet I spend less than an hour of downtime for every system wipe I undergo. Why? Because I'm using Virtual Server 2005 R2 SP1 Beta 2 (say that 5x fast), and I make extensive use of virtual machines for my development environment. On my hard drive, I currently have the following virtual machines:

  • Base Machine: Clean install of Windows XP SP2 that has no programs on it and is fully patched.
  • Base Machine: Clean install of Windows Server 2003 R2 that has no programs installed and is fully patched.
  • Base Machine: Clean install of WS2003 R2 and SQL Server 2005 that is fully patched.
  • Base Machine: Clean install of WS2003 R2, SQL Server 2005, and Visual Studio 2005 that is fully patched.
  • Dev Machine: Windows Server 2003 R2 with Visual Studio Team Suite and SQL Server 2005 installed.
  • Dev 2: Windows Server 2003 R2 machine with a single-server installation of Team Foundation Server installed.
  • The recent Visual Studio "Orcas" September CTP VM that Microsoft just put out.

This gives me a wide array of VMs to choose from for experimentation. If I need to try something new, like say the latest .NET 3.0 CTP, I just make a copy of one of my existing VMs to a new folder, fire it up, and go to town... all without affecting my main installation. Plus, I keep my source code on a separate virtual hard drive that all my VMs share, so I don't have to worry about VS2005 throwing access violations or any crap like that. If I need to access it on my Host PC, I can use the new VHDMount tool to mount the VHD as if it were a physical hard drive. It has made my life orders of mangitude simpler.

Still think that virtualization is slow? Most new Intel and AMD processors have some kind of hardware-based virtualization acceleration baked right into the chip. Virtual Server 2005 R2 SP1 Beta 2 has support for both, and is extremely fast. You may need to spend a couple hundred bucks to max out your RAM, but it is totally worth it. Using it on Vista is even better because you can use a USB key and utilize ReadyBoost to increase your performance. And if you use Remote Desktop instead of Microsoft's terrible VM clients, you shoud hardly experience any lagging. Oh yeah, and don't run your Virtual Machines off your primary hard drive. Invest $150 into an external USB 2.0 drive that is at least 200GB. That way, you won't have IO writes on your VM interfering with your primary HD. That's what's probably slowing most people down.

Virtualization in a development shop allows for all developers to have a uniform environment without having to deploy RIS or WDS. In a couple years, I can easily see development shops deploying servers running Windows Server 2007 with the Windows Virtualization add-on, and will leverage 64-bit processing and hardware virtualization to run the machines for the entire development group on one box. Forget having to buy immensely powerful desktops for the development staff... just get a decent Vista machine with Gigabit ethernet and Remote Desktop into your Virtual Development Machine from across the network.

As much as Virtual PC 2007 is probably going to suck, Microsoft's other virtualization efforts are impressive (and so are VMWare's for that matter). If you haven't invested in a virtualized environment, soon you may find yourself... virtually left behind.



  • PaulWilson said:

    I find it very disingenuous that you chose to link to my post with a quote about virtual pc that is not in my post and using the word copout which I have not used either.  If you want to say I'm wrong to have posted about Vista not supporting developers than that would have at least been factually correct, but that is not what you have done.  Instead you have chosen to throw me in with others that have made statements about virtualization even though I have never made any such statements or criticisms.  I've also given my reasons for my post in the comments, and those reasons are to try to apply pressure to MS to change course and to balance out all the MS is great posts.

    Am I really going to move to Vista anyway, you ask.  I am certainly going to be using WinFX (now the incorrectly named .NET v3.0), so Vista would have been a natural move for me.  And of course I am an early adopter, and I was looking forward to some of the improved security supposedly in Vista, so yes, I would have moved to Vista.  But I will probably not be now anytime soon, since there just are more downsides to such a move than upsides.

    Why don't I just use virtualization you ask (since I haven't commented on it so far)?  Quite simply this, I can develop for any version of .NET on XP without virtualization, so why would I want to add another layer of complexity if there is no significant advantage in moving to Vista.

    Next, you say that most everyone develops on Server 2003 anyhow, instead of XP.  Get real -- that is far from the truth and hardly deserves a rebuke, and you know it.  But of course you're going to ask, so I'll tell you my personal reason, which is that Server 2003 does not support the high-resolution wide-screen resolutions found on the notebook computers that I have been able to find and use.  And I know quite a few developers that use similar hardware because we are always on the move and want the best screens and resolutions we can get -- which is far more important than Server 2003 and even IIS 6.  That's right, I would love to develop on IIS 6, but there really just aren't enough reasons to justify using lower screen resolutions, and I am smart enough to develop my sites to work regardless of whether I have a web-root or sub-web-app anyhow.

    Finally, you assume quite a bit when you imply that those of us not wanting to develop everyday using virtualization do not actually use virtualization.  On the contrary, I do have Virtual Server 2005 installed and I do at times get and tinker with the latest and greatest.  But there is a big difference between my expectations for everyday development compared to my tinkering with the latest and greatest, and I'm pretty sure I'm not alone in that.  So please take all of your faulty assumptions about the way we work and start considering that there are a lot of developers with equally valid but different environments then yours -- then you will see why it is important to raise these legitimate concerns about Vista so that MS also doesn't think we are all just like you incorrectly.

    October 4, 2006 6:37 AM
  • Paul,

    You're right, your post didn't talk about virtualization, and I can see how you would think that the text in your link incorrectly contextualizes yoru post, so I changed it.

    But I don't agree with your opinion, and that's why I put you in this category. I don't want Microsoft pulling people from their forward development to have to upgrade VS.NET 2003 to be supported on Vista. That's one of the reasons Vista got so delayed in the first place, because they had to pull many parts of the team to back-port the security features in Longhorn to Windows XP SP2. There is no point in pulling the team off moving forward when there is a completely free and relatively painless alternative... move to Vista and do your other work inside a VM. You may not like it, you may not agree with it, but every project has a cost-benefit analysis, and VS.NET 2003 support on Vista didn't meet Microsoft's criteria.

    It's not a decision Microsoft made lightly, and the DevDiv is more responsive to customers than any other group inside Microsoft (trust me, do you have any idea how many of my Vista bugs have been closed as "Won't Fix"?). Microsoft has a lot of work to do to have the IDE fully support .NET 3.0 in a decent way, and I want them working on that, not rewriting a debugger that wasn't designed for Vista's security model.

    Besides, Scott Hanselman has been using VS2003 on Vista and he says it works fine, for the most part.

    And I said most of the developers that I know use WS2003. If you don't know any that do, that's cool. We obviously know different developers.

    PS: I get widescreen resolutions just fine Remote Desktoping into my WS2003 VM. Seems to handle all resolutions just fine.

    October 4, 2006 10:20 AM
  • dwillis said:

    For me personally, Windows XP Pro is a perfectly capable OS for doing VS.NET development. I don't know of any developers using Windows 2003 for development. For Microsoft to think that we are going to put our full time development environment in a virtual machine is absurd. I have considered this before when I first got my new laptop. I figured anytime I got a new computer it would be easy to move my development environment over via virtual machine instead of reinstalling everything. That notion went out the door based on performance and usablility. The development environment needs to be very fast to be as productive as possible.

    I currently have several production apps using VS.NET 2003 and have yet moved to VS.NET 2005 because of time. Now this hiccup with Vista is going to slow down adoption for Vista. If the developers aren't upgrading you can bet the users aren't going to. Developers are the ones that drive the requirements for their software.

    October 4, 2006 10:28 AM
  • divil said:

    The windows licenses you get with MSDN are not production licenses. To use them for development would be a violation of your license terms. They are meant so that you can test your applications on those platforms. You should not be using one on a machine you're using for development work.

    The only production license you get with MSDN is the Office suite.

    October 4, 2006 11:55 AM
  • Shawn Oster said:

    It's funny how people take the smallest and usually most biased sample they have and then quote it as if it's some kind of indicator of the way things are.

    I'm a developer, and have been for quite awhile, and *none* of the developers I know develop in Windows Server 2003.  XP is almost always the OS I see on developers machines.  Also, your friend "Scott" can't be working on a Web 2.0 app because no one I know does anything 2.0ish in .NET, it's all done in Ruby on Rails, and that's from a pool of 100+ developers.  See how worthless the whole "no one I know" or "everyone I know" argument is?

    I can also point to one huge reason I *don't* use a VPC to develop my applications, that's multi-monitor support.  Until they can get multi-monitor support working it's just a pain to go back down to a single monitor.  You know, because every developer *I know* uses at least three monitors.

    All that being said, I do agree that Microsoft has made the correct decision to not support VS.NET 2003 support in Vista.  I'm also not angry that Microsoft doesn't have full debugger support in VS.NET 2005 yet considering all the changes under the hood that are going on with memory.  It's just not that big of a deal.  Most everyone should upgrade to VS 2005 anyway plus anyone that has ever worked on an application, vs. a web site, knows how hard it is to maintain compatibility in such an old product.

    I also agree that every developer needs to use a VPC setup, either VirtualPC or VMWare.  It's needed for testing and I still use it for supporting older versions of software that were developed in VS.NET 2003 or Borland Delphi 7.  I just can't do my daily development on a single monitor.

    October 4, 2006 1:03 PM
  • Your statement about developing on Windows Server 2003 doesn't take into account the thousands of developers working in a corporate environment where there is *no* possibility of using anything but a desktop OS.

    Divil's comment on MSDN licensing for development and production use is actually incorrect.  I might not be interpreting this correctly, but I believe MSDN's licensing allows for use of an OS for development.  Your Vista license has to be "real" and you must do all your day to day work on that (including email, surfing, etc).

    Here's the FAQ:

    Can I use the operating systems in my MSDN subscription to install or upgrade my development PCs?

    MSDN-licensed operating systems (OS) can be used as the primary OS as long as the computer is used only for development and testing purposes, and as long as every individual using that computer for development or testing purposes has a separate MSDN license: MSDN is licensed on a per user model, unlike normal OS licensing which is based on a per device model.

    If a computer using an MSDN-licensed OS is used for any purpose other than development and testing (for example, a developer's primary computer which is also used for corporate email), then a production-use OS license for the computer is required.

    October 4, 2006 1:49 PM
  • divil said:

    Chris: Correct. Sorry, I should have elaborated on that. Is long as the machine is doing nothing but development work, and is used by only that person in whose name the MSDN license is, you're covered.

    Somehow I suspect that this isn't the case a lot of the time, though. The minute you use that machine to check your emails you're not covered.

    October 4, 2006 5:08 PM