A few weeks ago Microsoft dropped a minor bombshell by announcing that the .NET Framework 3.0 would ship with Windows Vista (and be available down-level for Windows XP and Windows Server 2003). Vista, as you know, is supposed to be out some time around the end of this year, so at first glance that seems like a rather incredible schedule acceleration. After all, at that point it will be barely a year since the release of the .NET Framework 2.0.
It turns out, though, that the story is rather stranger than that. Microsoft hasn't really figured out how to revise the entire CLR and Framework in that time. Instead, in the purported name of "reducing confusion," they've simply renamed the technology-formerly-known-as-WinFX to be the .NET Framework 3.0.
Just in case that simple statement doesn't reduce your confusion, here's a longer version of what it includes:
- Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), Windows Workflow Foundation (WF) and Windows CardSpace (WCS - itself formerly known as "InfoCard") are now all part of .NET Framework 3.0.
- The .NET Framework 2.0 is included as a subset of the .NET Framework 3.0.
- In fact, .NET Framework 3.0 continues to consume the existing .NET Framework 2.0 components, including ASP.NET, WinForms, ADO.NET, and even the 2.0 version of the Common Language Runtime (CLR).
- CLR 3.0, on the other hand, won't ship until some future version of the .NET Framework in the "Orcas" timeframe. We don't know what that version number will be. The same goes for other technologies, such as LINQ and Visual Basic 9.0, that were formerly seen as coordinated with .NET 3.0; they now move out to the next version of .NET while staying in the same timeframe where they've always been.
There, do you feel less confused now?
Personally, I blame Windows 95. Up until then, as far as I can recall at this decade-long remove, software version numbers generally followed a nice predictable pattern: 1.0 was followed by 2.0, and then came 3.0, and so on. Oh sure, there was the occasional 3.1 or 3.11, but still, you could count on a monotonically increasing sequence of version numbers that was actually dictated by the technical people involved.
Then the marketers got involved. I always picture a latte-filled backroom meeting somewhere, with some Earnest Young Man saying "you know, product names are valuable branding! We can't afford to just waste them on engineers!" And a bunch of slightly older young men, not wanting to admit that they haven't the slightest idea what this person is talking about, nod along. Suddenly there is talk about how "Windows 4.0" doesn't have the right emotional tone, how it doesn't convey the truly revolutionary leap forward of this release, how it doesn't sound futuristic enough. And so, "Windows 95" is born -- complete with little fluffy clouds, rock music marketing campaigns, and Jay Leno tooling around the Microsoft campus on a scooter at the product launch.
It's not like anyone believed there were 94 earlier versions of Windows, but somehow this opened the floodgates. Next thing you know we got "Office 2000" (because, you know, "Office 00" would just have sounded too silly) and more and more every product had to be placed under some umbrella like "Windows DNA" or "ActiveFoo" or ".NET Technologies" in the interest of the almighty brand.
Meanwhile, of course, Microsoft can't resist playing the FUD card by pre-announcing technologies long before they're ready to ship (Cairo's Object File System, which has now gone through half a dozen non-shipping incarnations, being only the most notorious example). It's not unusual to see something under two or three preliminary names before it finally settles down to a shipping moniker. It's Indigo -- no, wait, it's part of WinFX -- no, never mind, it's .NET 3.0. No wonder we're confused.
Is there a cure for this mess? Well, sure -- though I doubt Microsoft has the discipline. Microsoft could simply stop playing naming games and go back to shipping products with sequential numbering. Instead of trying to convince us that adding another batch of namespaces transforms the .NET 2.0 Framework into the .NET 3.0 Framework (especially given that many developers will wait a year or more to even bother with the new stuff), why not ship them as the "Windows 6.0 Extensions for the .NET 2.0 Framework"?
Yeah, I know. It'll never happen. But just think of how much easier life would be if it did.
Mike Gunderloy is the Senior Technology Partner for Adaptive Strategy, a Washington State consulting firm. You can read more of Mike's work at his Larkware Web site, or contact him at MikeG1@larkfarm.com.