Microsoft is in trouble. They've taken way to long to deliver the next generation their primary product (Windows), and the development cycle with it was horrendous - so bad they cannot do development that way again and survive. On top of that, they have placed the Computer Industry (and users) at a cross-roads - Office 2007 requires so much retraining that upgrading to OpenOffice 2.x is cheaper than upgrading to Office 2007 based on upgrade costs alone. (OpenOffice 2.x's user interface is familiar enough to most users that they will barely know they switched unless they are really big power users and use all the VBA functionality.) Moreover, the industry is moving towards standardized document formats, which Microsoft refuses to natively support. So, the Computer Industry is currently primed to chose a different OS and a different Office Productivity Suite.
So what is Microsoft's real plan? A few years back, after Microsoft was told they could not embrace and extend Java, they created .Net, and made it a central focus to move everything Microsoft related to be based on .Net. Today, they have achieved quite a lot in that arena. Add to it the recent Microsoft/Novell deal concerning Linux (which the Linux community generally does not like) and perhaps some of the pieces of where Microsoft is heading will start to fall together.
More than anything else, .Net is an enabling technology for Microsoft. Since they created it and wrote it, they could tie it to their current offerings (e.g. Windows on x86). But they also seem to have planned into it the ability to remove Windows from the stack. That is, like Java, .Net is a framework that allows programs to be written independently of the OS, theoretically, and hardware. .Net is tied to the way Microsoft does things, but as the dotGNU and Mono projects have shown the .Net framework simply needs to be ported to a different OS and architecture platform to move the applications (at the source level) to that new OS and architecture. So now Microsoft's own code is "highly portable" to something other than Windows (again, theoretically). True, Microsoft is not supporting .Net on other platforms than their own (Win32, Win64), but they could if they wanted to. (Frankly, it would be surprising if they did not already have a port of .Net to other platforms.)
Add to all of this the recent report of Microsoft selling Novell's SuSE Linux faster than expected.
So what is going on here?
It has been my speculation that .Net was the start of Microsoft's plan for how they will survive in a post Windows world. Yes, their Windows platform is currently the most widely distributed - but (a) people have a lot of issues with it, and (b) Microsoft can't continue to develop it any longer the way they have. Perhaps they will surprise us with a new development model for it, or perhaps the surprise is something even bigger...
Imagine (for a moment) Microsoft releasing a new version of Windows - Windows NG (for Next Generation) - that does not provide any backwards compatibility whatsoever. If Microsoft did this, they would need to be able to quickly push a lot of people to support their new system; or they could ride on the shoulders of giants - existing OS's that are already out there that have a lot of software and they would only need to push their major third party vendors over and the rest would be a piece of cake. Of course, to do this, they would only need to release .Net NG with support for both the latest version of Windows (e.g. Windows Vista) and Windows NG, release a new version of Visual Studio to support both but only allow it to compile to .Net's CLR, forcing the .Net framework to do it upon install or on first run. Most Windows developers use Visual Studio - and the majority of those being trained are only being trained on .Net - so this would quite easily move everyone to the new Windows NG platform.
So, then if it is so simple for Microsoft to move people to a new platform in a few short years (yes, it would take one to three years for this all to happen), then how could Microsoft use an existing OS? What would there be for them to use? Well, there is always the BSD's, but then Microsoft would have to fork and support their own - kind of like Apple did; which could be costly. Or, Microsoft could chose a Linux Distribution (Novell's SuSE?) and make it its primary back end; add on the extra tools to move their infrastructure over (Vista's User Mode Sound and Video drivers, and .Net) and a user interface to make it look like Windows (so user's can't tell), and Microsoft could quickly find themselves with (a) a very large set of applications that are already developed and running their system, (b) an easy way to support old applications (official Microsoft support of WINE?), (c) little trouble with moving their existing customer and developer base over (ala .Net), and (d) user's that are much happier. On top of it all, they could get out of the Monopoly they are currently in with Windows, as there would be a lot of vendors out there competing (Oracle, Red Hat, Novell, Slackware, Debian, etc.), and they can finally claim better security.
Now, if this actually happened, I would not expect Microsoft to open source .Net or any part of the infrastructure or interface support they would have to provide to the Linux distribution. (Shared Source? May be, but it wouldn't be very GPL friendly wherever they could get away with it.)
So, what is Microsoft's Real Plan?
Honestly, I am not an insider with Microsoft in any way, but looking at how they have set themselves up over the last few years, how they have separated out their Windows platform internally, and their deal with Novell and its sales results; it may very well be that their real plan is to make the next version of Windows have no backwards compatibility and be based on Linux or a BSD.