A long running rumor has been made public a couple of days ago. WinFX name is dead and is superseded by Microsoft .NET Framework 3.0.
A part of me is grateful for being able to have a common name for the shipping technologies. Who wants to be acknowledged as a WinFX developer, when in reality she/he is a .NET developer? The decision to bundle WinFX technologies with Windows Vista and making it available down-level is awesome. Having it included with the .NET Framework is even better.
But there's another poor decision being made by the marketing folks at Microsoft. If this decision wouldn't be rushed, it would have made a wonderful release.
Microsoft .NET Framework 3.0 is ambiguous as a platform name. Since the press release states this explicitly, one can not complain as loudly as the reality demands. .NET Framework 3.0 is the first Microsoft .NET platform release that isn't really a platform - it's a marketing release. There's no CLR 3.0, no LINQ stuff, which was supposed to be in 3.0 release, no ASP .NET 3.0, no ADO .NET 3.0. In reality, there is current CLR 2.0 shipping, together with all the known friends: ADO .NET 2.0, ASP .NET 2.0.
It even gets installed in the c:\windows\microsoft.net\framework\v2.0.50727 folder. At least, it's got its own folder inside the c:\windows\microsoft.net\framework directory. It is the 2.0 of the framework including WCF, WF and WPF. Goodness?
There exists a patronizing line of thought that nobody cares about the naming/install coherence and version matching. This is mostly heard from Microsoft, but the development community does not swallow it. The issue does not surface as this, actually.
Putting it mildly, this isn't serious. Suddenly separating CLR and framework version is a hack. A hack done to limit the damage that has already been done by establishing the WinFX bundle name. I'm happy that the LINQ team has not made a 'product name' breakthrough because suddenly we would run out of framework version numbers just to bundle the thing.
How is it possible, even in marketing terms, that .NET Framework 3.0 includes .NET Framework 2.0? What happens when LINQ gets shipped? Do we get CLR 3.0 and .NET Framework 3.5? .NET Framework 4.0? Do they get synchronized again and CLR skips versions? How do you distinguish the framework version? We will not be able to believe the compiler version, CLR version or BCL assembly version. They will all be 2.0.50727, but the framework is versioned as 3.0.
Even corflags.exe will still report a 2.5 CLR Header version, which is a mess even in current, shipping technology stack. It all follows the 'when the shit hits the fan' direction. Let's make it splatter, let's make even more mess.
Where is the compiler version change, runtime version change and metadata format version change? Where's the synchronization?
This is not serious.
Update: 2006-11-08, .NET Fx 3.0 is installed in a separate directory inside c:\windows\microsoft.net\framework.