|Here's my reply to Jason. Hopefully he won't just shoot back with random rhetoric this time.
Thank you for your detailed reply. Unfortunately, my main concerns have been completely evaded – you have not addressed or even mentioned them. I feel bad for having sent you such a lengthy email of complaint on a Friday, but please – read it through properly when you have the time.
It’s very important. There are things being said by your customers that you and your team, being so busy, might not have noticed at all.
> The CLR binding mechanism treats major.minor as distinct values for version binding. That means if we created a 2.x release with one installer, it would have to be installed side by side with 2.0 to work.
If major.minor denotes a distinct value, then as far as the runtime is concerned, the name 3.0 is just as different from 2.0 as is 2.1 or 2.5. So, .NET 2.0 and 3.0 would have to be installed regardless – this is how it was explained both in your C9 video and on your blog, and this is how it has been with .NET 1.0, 1.1 and 2.0. So why then would this be a reason to choose 3.0 over 2.x? This makes no sense. Am I missing something?
> We implemented side by side technology to help with versioning and application compatibility. Because of this, even if we were to name the version of the .NET FX with LINQ support 2.7, there would still be a new C# compiler with this build. You will have the same set of installer issues and multi-targeting of compilers.
Not quite. At the point that LINQ is released, it would make sense for the platform to also be called .NET 3.0 (no one ever said anything about 2.7). A C# 3.0 developer would be able to say quite simply when distributing or introducing a product, that the minimum requirement for his program is .NET 2.x. If he wanted to work with or share his code with another developer, he could then say that the LINQ compiler is required.
Yes I know C#’s version numbers technically are not synchronized with .NET’s nor is C# the only language for the platform, but please listen: it’s way too late to be saying that. 50% of the whole damn industry relies on this notion. One poor fellow is getting certification for C# 2.0 while 3.0 is being released with no C# 3.0 to go with it, putting a dent in his otherwise state-of-the-art resume. There is real damage happening as a result of this. Would you still say that the name WinFX is more confusing or even misleading than .NET 3.0?
> The use of V3 instead of V2 seems to indicate V2 is already obsolete. I understand your concern on this one and the type of confusion it could cause. I do worry about the counter issue: if major versions of the software come out now and in the future but we only change the minor version number, it belies the major investment and advancements we have made in the system and could lead those not as familiar with .NET as yourself to underestimate our commitment to the platform.
Again, the obsoleteness is a relatively minor point. More concerning is the issue of maturity: a minor version increment indicates a program’s maturation – this is something both developers and Joe Users understand. It makes the adoption of both 2.0 and 3.0 seem risky, whereas with a name like 2.1 or 2.5, there is much more confidence. In fact, minor version changes indicate necessary updates – a good thing for adoption, in this case.
No one ever said Microsoft should increment only the minor version; that is a straw man argument. The major version number should not be incremented this time. Next time, with C# 3.0, yes – it should be called .NET 3.0. I think we both know this.
Two releases later the major version number is still going to be 3 anyway, so why are you in such a rush to make that number bigger? I’m sure Anders Hejlsberg and the others in the team of people working on “.NET 3.5” are somewhat insulted that their achievements are worth only a .5, while this is worth a whole 1.0.
Though from a technical standpoint I do not like the idea of mangling two totally separate products, I can live with it. From a marketing perspective, however, the name .NET 3.0 is still much less effective than 2.1 or 2.5, and the name WinFX seems the most strategic for Windows’ interests. Deployment wise, combining WinFX and .NET is nice, but there is no reason for it to be 3.0 – it might as well be 2.x. And finally, business wise, in explaining what .NET is to customers and employers, the name 3.0 is an absolute bane. Shouldn’t this be of utmost concern to you as our vendors for software that we are using for serious business?
Please, please reconsider your priorities with a fresh mindset. Show us that Microsoft is still capable of listening and answering to our needs.