Confusion among developers: .NET Framework vs. CLR versions

As you have already heard it was annonced some two weeks ago that WinFX will now be called .NET Framework 3.0.

While it might make sense from a markering perspective to do this it will probably create confusion among developers. The reason is that .NET Fx 3.0 will contain Common Language Runtime (CLR) 2.0 along with C# 2.0 and other components of the .NET Framework 2.0. In essence, .NET Fx 3.0 is .NET Fx 2.0 extended with a set of new libraries for WCF, WF, WPF and InforCard.

The problem with decoupling the .NET Fx version from the CLR version is that it becomes ambiguous what we mean when we say .NET. 

Up to now it has been quite easy to understand which component of .NET belongs to which version. A statement like "I'm running .NET 1.1" clearly identify CLR version and Framework version. In the future when you hear "I'm running .NET 3.0" you will have to ask if it's .NET Fx 3.0 or CLR 3.0 (which may be part of .NET Fx 4.0).

And it's not like we haven't had this problem before. In the mid-90s Microsoft skipped versions in Visual C++ to syncronize Visual C++, MFC and Visual Studio version numbers. And who doesn't remember the more recent talk about Windows .NET Server, Office .NET and .NET Enterprise Servers a couple of years ago when everything should be .NET.

Those of us who continue working with .NET Framework and CLR will see if the versions will diverge or converge. But for now (and a couple of years ahead) we will have to practice causion and not draw immediate conclusions about which version of .NET Fx and CLR people are talking about.