Geeks With Blogs

Neat Stuff Read all my hurricane entries While you are here, visit the Geeks With Blogs main feed
Links Status of the Navy
Channel 9

.NET Hobbyist Programmer Staying Confused in a Busy World

Almost five months ago, I wrote that "Microsoft screwed up big for customer confusion" with the whole .NET 3.0 naming thing.  I got a few defensive comments about how the whole effort was great.  Well, let's see.  Today I read a post from a member of the Microsoft Architecture Editorial Board (whatever that exactly is).  You know it is not going well when the post starts out with, "There has been considerable confusion about the differences between various versions of the .NET framework."

My point exactly.  It was an implied contract that (.NET Version) == (CLR Version).  Now that they broke that implied contract and completely screwed up the explanations, they have mea culpa posts continuing to flow, even after five months have passed.  It is difficult to explain yourself out of a marketing ploy that is counter intuitive.

Want more pretzel logic?  Check this out.

.NET Framework 1.0 through 3.5

Yes, the current plan is to keep CLR 2.0 for a long time and just keep gluing on additional bits.  Will we be ending up with .NET 3.5 based on CLR 2.0 and be using C# 3.0?  Kinda looks like it.  Great ready for the Java versioning disaster to arrive in a .NET Framework near you soon!

Addendum: My take is that "Fx 3.0" should have been Version 2.1.  "Fx 3.5" should be Version 2.2 (or 2.5 at best).  Microsoft has dumped the minor versions of most everything and is stuck with must-major-version-everything-itis.

Posted on Sunday, December 3, 2006 7:23 PM Programming , The Stump | Back to top

Comments on this post: .NET Naming Debacle - 2

# re: .NET Naming Debacle - 2
Requesting Gravatar...
So they went to 3.0 and you would have prefered 2.1. So what?

The current plan is to keep the 2.0 CLR because there are no features in 3.0 or 3.5 which required replacing it. What exactly is the benefit of replacing the CLR? New, untested code and a much bigger download? No thanks.

"Get ready for the Java versioning disaster to come to .NET!" No, that's what would happen if people like you were in charge.

Microsoft is doing exactly the right thing. Every version of .NET is a superset of the versions which came before.

If your application targets .NET 1.1, it will work with 1.1, 2.0, 3.0, and 3.5.

If you make use of the .NET 3.0 features, your customer needs 3.0 or 3.5 installed to run it.

That's as clear as filtered water. Java with its wacky JVM and library versions is the obtuse one. .NET versioning is only confusing if you lack the ability to compare two numbers and decide which one is bigger.
Left by Daryl on Dec 03, 2006 8:57 PM

# re: .NET Naming Debacle - 2
Requesting Gravatar...
Daryl: Sorry, but you missed the point of my post entirely.

I said nothing about application compatibility. My post was about version numbers and the perception of what they mean. The fact that people are confused is indicative of the problem. You wishing it away with an app compatiblity argument does not change the fact that the naming Microsoft chose to go with was fundamentally flawed and has resulted in confusion.
Left by Mark on Dec 06, 2006 7:56 PM

# re: .NET Naming Debacle - 2
Requesting Gravatar...
I understood your post, and you're completely wrong. Microsoft is doing exactly the right thing.

You thought .NET version == CLR version, and now you're upset to learn that you were wrong. Good thing, too.

Look at how things work under Microsoft's method:

.NET 2.0
.NET 3.0
.NET 3.5
.NET 4.0

That's pretty easy to keep track of, and more importantly it's easier to explain to my customers what they need to download if they want to run my program.

Now let's take a look at the Mark method, where we keep the version number constant until the CLR version changes:

.NET 2.0
.NET 2.0 + WPF + WWF + WCF
.NET 2.0 + WPF + WWF + WCF + LINQ + C# 3.0 + ASP.NET AJAX
.NET 3.0 + WPF 1.1 + WWF 1.0 + WCF 1.0 + LINQ 1.0 + C# 3.0 + ASP.NET AJAX 2.0

Great, now I can be on the phone with some guy in operations telling him "Yes, John, you do have .NET 2.0, but you also need WCF and C# 3.0. The 2.0 you're talking about just refers to the version of the *CLR*."

Guess what: John doesn't know or care what a CLR is. What John wants to know is, what version of .NET do I need to install to get this working?

Using the "Mark method" of assigning version numbers is what got Java into its huge mess, where people need to worry about what version their language, JVM, and various libraries are.
Left by Daryl Cantrell on Dec 14, 2006 9:16 PM

Your comment:
 (will show your gravatar)

Copyright © Mark Treadwell | Powered by: