Is Backward Compatibility Holding Microsoft Back

Atlas With The Weight Of The Codebase I read this article recently that describes the mind frying complexity of the Windows development process.  With Vista sporting around 50 million lines of code, it’s no wonder Vista suffers from delays.  Quick, what does line #37,920,117 say?

Microsoft has acknowledged the need to release more often (as in sometime this millenia), but that agility is difficult to achieve with the current codebase due to its immense complexity as well as Microsoft’s (stubbornly?) heroic efforts to maintain backward compatibilty.  The author of the article labels this the Curse of Backward Compatibility.

I don’t think anyone doubts that maintaining backwards compatibility can be a Herculean effort because it goes beyond supporting legacy specification (which is challenging enough).  Just look at how Microsoft supports old code that broke the rules.  Additionally, the fact that old code poses a security threat requires even more code to patch those security threats.  Ideally alot of that code would be removed outright, but it is challenging to remove or rewrite any of it in fear of breaking too many applications.

Of course there are very good business reasons for Microsoft to maintain this religious adherence to backwards compatibility (starts with an m ends with a y and has one in the middle).  The primary one being they have a huge user base when compared to Apple, which does not give Microsoft the luxury of a “Do Over” as Apple has done with OSX.

A different article (same magazine) points to virtualization technology as the answer.  This article talks suggests a virtualization layer that is core to the operating system.  I think we are already seeing hints of this in play with Microsoft’s answer to developers angry that Vista is not going to support Visual Studio.NET 2003.

The big technical challenge is with enabling scenarios like advanced debugging. Debuggers are incredibly invasive in a process, and so changes in how an OS handles memory layout can have big impacts on it. Vista did a lot of work in this release to tighten security and lock down process/memory usage - which is what is affecting both the VS debugger, as well as every other debugger out there. Since the VS debugger is particularly rich (multi-language, managed/native interop, COM + Jscript integration, etc) - it will need additional work to fully support all scenarios on Vista. That is also the reason we are releasing a special servicing release after VS 2005 SP1 specific to Vista - to make sure everything (and especially debugging and profiling) work in all scenarios. It is actually several man-months of work (we’ve had a team working on this for quite awhile). Note that the .NET 1.1 (and ASP.NET 1.1) is fully supported at runtime on Vista. VS 2003 will mostly work on Vista. What we are saying, though, is that there will be some scenarios where VS 2003 doesn’t work (or work well) on Vista - hence the reason it isn’t a supported scenario. Instead, we recommend using a VPC/VM image for VS 2003 development to ensure 100% compat.

This answer did not satisfy everyone (which answer does?), many seeing it as a copout as it pretty much states that to maintain backward compatibility, use Virtual PC.

Keep in mind that this particular scenario is not going to affect the average user.  Instead, it affects developers, who are notorious for being early adopters and, one would think, would be more amenable to adopting virtualization as an answer, because hey! It’s cool new technology!

Personally I am satisfied by this answer because I have no plans to upgrade to Vista any time soon (my very own copout).  Sure, it’s not the best answer I would’ve hoped for if I was planning an impending upgrade.  But given a choice between a more secure Vista released sooner, or a several months delay to make sure that developers with advanced debugging needs on VS.NET 2003 are happy, I’m going to have to say go ahead and break with backward compatibility.  But at the same time, push out the .NET 2.0 Framework as a required update to Windows XP.

With Windows XP, Microsoft finally released a consumer operating system that was good enough.  Many users will not need to upgrade to Vista for a looong time.  I think it is probably a good time to start looking at cleaning up and modularizing that 50 million line rambling historical record they call a codebase.

If my DOS app circa 1986 stops working on Vista, so be it.  If I’m still running DOS apps, am I really upgrading to Vista?  Using a virtual operating system may not be the best answer we could hope for, but I think it’s good enough and should hopefully free Microsoft up to really take Windows to the next level.  It may cause some difficulties, but there’s no easy path to paying off the immense design debt that Microsoft has accrued with Windows.

What others have said

Requesting Gravatar... Scott Oct 01, 2006 8:40 PM
# re: Is Backward Compatibility Holding Microsoft Back
The primary complaint I'm hearing about using a VM is from mobile device developers and people doing low-level, driver development. Virtual PC/VMWare do not do a very good job virtualizing USB and other device ports apparently and it means they have to try and migrate all of their projects to VS 2005.

My only option for the single VS 2003 web site I have to support is a re-write. It was badly architected and porting it to ASP.NET 2.0 will require about as much time as a full re-write.
Requesting Gravatar... vikram Oct 01, 2006 8:53 PM
# re: Is Backward Compatibility Holding Microsoft Back
But what about those people who have site runnning on asp.net 1.1 . I have been working on asp.net 2.0 sp its ok for me. But we all know how difficult (or should I say impossible) it is to convert an 1.1 site 2.0 without and extra efort. What about those sites and work.
Requesting Gravatar... Jon Galloway Oct 01, 2006 9:44 PM
# re: Is Backward Compatibility Holding Microsoft Back
I think Virtual Machines are a worst case scenario - it's fine if I decide I want to use one, but I don't like being told that I have to use one due to product deficiencies. It's very true that Microsoft needs some strategies facilitate the immense amount of refactoring they'll need to do, and I'm hoping that the VPC is not their lead strategy.

On the "design debt caused the Vista slip" thing, I posted a comment along those lines on Jeff's infamous Joel Spoelsky Jumped The Shark post. Mike Dimmick had some interesting counterpoints, though:

"@Jon Galloway: I repeatedly hear the argument that Vista was delayed because of backwards compatibility constraints. Far from it. The problem was in the other direction: that various teams in user mode were trying to write their new components (e.g. Explorer, Sidebar) on top of Avalon, which was in itself on top of .NET 2.0. These components were never stable enough to know whether a bug was in your code or in your dependencies. Eventually a halt was called to this morass of shifting sands. This isn't a reflection on the quality of .NET at all - just that trying to develop on top of a developing runtime is practically impossible. Microsoft may use new C++ compilers with new releases of Windows, but they've got literally twenty years of working code in there and can revert to an older version if there's a problem.

In the two years since then, they've tried to get what features they can implemented on top of the old Win32 API so they have something to ship. (continued...)"

http://www.codinghorror.com/blog/archives/000679.html
Requesting Gravatar... Haacked Oct 01, 2006 10:59 PM
# re: Is Backward Compatibility Holding Microsoft Back
> My only option for the single VS 2003 web site I have to support is a re-write.

> but I don't like being told that I have to use one due to product deficiencies.

Agreed, but nobody is forcing you to upgrade to Vista, so you don't have to rewrite that site and you don't have to use a VPC. You could stick with WinXP.

For server developers, consider that your software will be running on Windows 2000 or 2003 for a good while until Longhorn Server is released and adopted.

But I understand that developers in particular feel the need to upgrade in order to feel they are keeping up with the latest thing, so none of this is satisfying.
Requesting Gravatar... Scott Oct 02, 2006 8:54 AM
# re: Is Backward Compatibility Holding Microsoft Back
I can only speak for myself, but I think a lot of developers feel the same way I do. We move to a different platform, at least in our day-to-day work, when our deployment target moves to a different platform. I didn't move to XP Pro until last year, after I was satisfied that all of the projects I'm responsible for would compile and work the same under XP as they did under Win2K. It's in Microsofts best interests to make sure we ALL upgrade, both from a mindshare and a security POV. So for the last...FIVE...years, they've been beating the security drum and trumpeting that as THE reason to upgrade (developers were given other reasons, Avalon, WinFS, etc... which changed along the way).

So what happens when my users move to Vista, as part of a large enterprise upgrade "encouraged" by Microsoft through our vendors and support plans, and I can't upgrade because I have to support .Net 1.1 projects? It sounds like they've changed a lot wrt memory manangement, how can I be sure that my old apps will perform well under Vista? What kind of dependency bugs will creep in by compiling on one platform and deploying to another? Fear! Uncertainty! Doubt!

Trust me, Microsoft is going to start "encouraging" people to move to Vista harder and harder in the coming year. They can't be satisfied with waiting for people to upgrade their computers. Vista has to be a success right out of the gate.
Requesting Gravatar... Haacked Oct 02, 2006 9:02 AM
# re: Is Backward Compatibility Holding Microsoft Back
I agree with you, but from my understanding, only limited scenarios don't work with VS.NET 2003. From a cost/benefit perspective, it might make sense to bite the bullet, install VPC for those few scenarios and feel free to upgrade to Vista. Nobody's forcing you *not* to upgrade either. ;)

I guess my point is I think VPC is a decent enough compromise. But not everyone agrees and I understand that.

What remains to be seen is if this really bites Microsoft in the foot. Maybe the next time we see Ballmer speak, he'll have to reduce the number of times he says "Developers!".
Requesting Gravatar... Kevin Dente Oct 02, 2006 1:09 PM
# re: Is Backward Compatibility Holding Microsoft Back
Let's not forget, less than a year ago VS 2003 was the premier development environment from Microsoft. Not supporting it on their new OS conflicts with their own lifecycle support policy, and in my opinion isn't a reasonable position to take.

It doesn't help that they so far haven't told us *what* won't work - only nebulous comments about "advanced" scenarios. Give us the details, it'll probably make people feel better.

But at the same time, I think they need to step and commit to a service pack in the future to address the major issues. We're not talking about a 10 year piece of software here. MS is proud to trot out Visicalc from time to time to show that it still runs. Who cares? We need the tools that we use on a daily basis to work.

Speaking of Vsicalc, I wonder how much code exists in Windows to make that sucker still run. Maybe they could start their source cleanup by trimming THAT code out ;).

Requesting Gravatar... Ryan Smith Oct 02, 2006 2:58 PM
# re: Is Backward Compatibility Holding Microsoft Back
The issue that I still haven't heard addressed by anyone is licensing.

Is Microsoft going to let me use my OEM license key from an ancient machine so that I can run Windows XP in a virtual machine on Vista to test and debug in VS 2003?

I think not.

I recently wrote microsoft with detailed questions about virtual machine licensing issues and here is the response I got back:

"If you need information about using a Microsoft product, please refer to the product's End User License Agreement (EULA), which describes the permissible uses of that software. To find and review the EULA for your product, visit the following Web site: http://www.microsoft.com/legal/useterms/."

The complete copout response from a cut and paste set of text. Let's face it, the reason they couldn't answer the question is because they still haven't figured it out themselves.

They are telling use to use a virtual machine to solve a problem they should have done natively, but have not yet presented us with any kind of licensing scheme

Want to develop in VS 2003 on Vista? No problem - just give us another $189 for an additional license of XP Pro to run in a virtual machine. That's weak. It just screams "STEAL ME!"
Requesting Gravatar... Thomas Eyde Oct 02, 2006 3:50 PM
# re: Is Backward Compatibility Holding Microsoft Back
These days when I code in VS 2003, I feel I could very well code in VB6. All new improvements are for 2.0 and newer.

And how do you get VPC to run on Vista? My installation refuse to run it. Isn't it funny when the proposed workaround fails to work?
Requesting Gravatar... you've been HAACKED Oct 02, 2006 7:51 PM
# Does Vista Come With An Implicit License To WinXP?
Does Vista Come With An Implicit License To WinXP?
Requesting Gravatar... Ilan Assayag Oct 12, 2006 3:20 AM
# re: Is Backward Compatibility Holding Microsoft Back
Sometimes MS take the Backward Compatibility issue way too far. Take a look at the .NET bug reported by Daniel Cazzulino http://weblogs.asp.net/cazzu/archive/2005/12/01/BackCompatSucks.aspx and the surprising answer by MS: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=93559

What do you have to say?

(will show your gravatar)
Please add 3 and 7 and type the answer here: