Although much of it is genuis and has good reason, I personally am completely fed up with Microsoft's branding/versioning of products, technologies, et. al. About the only things that makes me happy - and is consistent - are the codenames. Mainly, because they don't change; most importantly they don't give any real useful context of version, use, or marketing hype. Microsoft product brandings (and versioning) are understandably driven by marketing. Microsoft is, before everything else, a for-profit company. A for-profit company simply tries to maximize profit. Unfortunately, in the tech world (and admittedly true in other industries), confusing the general public with marketing hype could maximize your profit. Microsoft's biggest branding/versioning problem is that it can't make up its mind on which works the best - sometimes shifting paradigms multiple times for the same product.
The easiest target is Microsoft's bread and butter - the very product which lead them to becoming the biggest company in the land today: the Windows "operating system." (The earliest versions of Windows were not operating systems at all; they required MS-DOS and were basically graphical shells that relied on MS-DOS to do traditional operating system functions. The desktop/window metaphors were supposedly "stolen" by Bill Gates during his tours of Xerox PARC demos). To view an example of the incredible inconsistency of Microsoft's branding schemes, check out the full history of Windows operating system releases here. Keep in mind you are looking at releases (brandings/versionings) for essentially the same "product" - what's known as "Microsoft Windows."
Microsoft product branding/versioning waivers back and forth between several schemes:
- Version numbering: "If there's a higher number available than the one I got, I'm obsolete by that many versions."
- Date-based branding: "It's currently 1999 and I am still running Windows 95. That's like driving a four-year-old car! I bet the Windows 98 version is so much better, and it's completely new and at just a marginal upgrade price (like a trade-in)!" Also, this mindset takes over: "It's now August 2000. There's something called Windows 2000 out there but it's way out of my price range and I have no idea why [can't connect that it's really the new version of 'NT']; our company hasn't even upgraded to it yet, we're still using a version called NT4 Workstation (which looks just like my old Win95 at home). But now there's this affordable ME ("millenium edition") that I can afford. It has all these internet and multimedia features added and running this five-year-old Win95 just can't keep up with this new internet thingy."
- Feel-Good "mystique" acronyms: "NT stands for 'New Technology.' It claims that it is much better in every way than the Win3.1x and Win9x, and that certainly seems to be the case with my work computer." When the multimedia and internet craze starts taking off, you reach out and offer an abstract "experience": an "XP" version, to be exact.
- Technology-based branding: "Windows DNA... Windows .NET - that's all I ever hear about. Our company says it's 'going .NET,' so what could be a better fit than a product that has '.NET' in its name?"
All of these have been used - back and forth - in branding the Windows operating systems. Makes sense: appeal to, and therefore sell to, as many folks as you can.
But the confusion/marketing machine didn't stop at the "every-man" consumer. Branding experimentation/variance has even been applied to those that supposedly know what they are doing - they are not the common sheep.
Take Microsoft's own software development tools, for instance.
First came strict-version numbering, then date-based, then technology based, then both a technology and date based hybrid, then back to date based, then...
The first VS IDE that could build .NET applications was officially branded "Microsoft Visual Studio .NET" - and that's it (no version qualifier, merely the technology-based branding). Here's a list of the official brandings of MS development tool major releases, starting circa 1995:
- VC++2 and VB4
- Visual Studio 97
- Visual Studio 6
- Visual Studio .NET
- Visual Studio .NET 2003
- Visual Studio 2005
After conquering the desktops, Microsoft tried to crank up its enterprise offerings with technologies such as "Windows DNA." While MS was focused on the corporate client/server model, the internet took off and Sun created Java to handle the new wave. Microsoft was asleep at the wheel for a few years (Netscape browsers were king and were surfing the web built with Java). Microsoft woke up, realized the browser was the new client (desktop), and fought fiercely and eventually took over the "desktop client of the internet." Now it was time to go for the serving side, and their Java alternative was dubbed ".NET." The marketing machine cranks up to crazy levels - MS splattered ".NET" everywhere it could be printed. Do you know what the official branding of what would become "Windows Server 2003" was, just months before release? "Windows Server System .NET." Guess why that name was thrown out at the last minute? It surely seemed to feed the .NET marketing machine perfectly - as if to say, "If you want to surf the 400 pound .NET gorilla's wave, this OS is tailor-made for it." That branding was dropped at the last minute, just a month before RTM. First of all, there was not a single component of the OS - none - that depended on the .NET Framework. Not a single line of .NET code in Windows Server 2003. To make it "so .NET" they were simply going to package/install the .NET Framework 1.1 runtime along with the OS so they could brand (and hype) the OS as being "the .NET OS." Then a real funny thing happened that crushed all of the branding bastards hopes for good: The .NET Framework team couldn't get 1.1 released early enough for the OS' RTM! It was, as it still is now, an extra download. I don't even think Windows Server 2003 R2 (which was released a couple of months ago) comes packaged with any version of .NET Framework, either... Therefore Vista will be the first OS release that will actually be packaged with any version of the .NET Framework - a mere 6+ years after the first version of the Framework was released and all the while the .NET marketing engine churned away. That's why you started seeing all the ".NET" brandings getting dropped on product releases since 2003 (even removed from the VS brandings). The .NET "platform" (which is what I consider it) is obviously a success. The techies, developers, and sysadmins that have bought into and accepted .NET started reaching critical mass; no longer did MS need to hype everything with ".NET" brandings to sell stuff. The smarties have known what .NET is for years, regardless of Microsoft's brandings: it's almost an exact replica of Sun's model for Java - even including the marketing hype/confusion (e.g., is "Java" a language or a platform? A runtime?)
Here's my .NET for Java People Quick Cross Reference:
- ".NET" = "Java" (marketing/branding generalities)
- .NET Framework = JRE (Java Runtime Environment)
- .NET CLR (Common Language Runtime) = JVM (Java Virtual Machine)
- .NET BCL (Base Class Library) = core Java class library
- .NET MSIL (MS Intermediate Language) = Java BYTECODDE
- .NET Assembly = JARs (Java Archives, which I believe includes embedded resources and locale resolution...Thrashy, correct me if I'm wrong)
- .NET CLI (Common Language Infrastructure) = (Know of no Java equivalent - is there anything except the Java language that the Java JIT compiler can handle?)
- C#, VB.NET, COBOL.NET, Python.NET, etc. (languages that adhere to CLI) = "Java" programming language
A decent, if not at times inaccurate and wordy article: "What does .NET really mean?" can be found at http://tinyurl.com/k95ne
But, not surprisingly, it's just about that time for MS to fuck it all up again (snow your average IT folk). They're marketing their next baby, a technology/buzzword at an even higher-level of abstraction: the Vista/Longhorn service-oriented-architecture API. Ahem, I mean "Windows Communication Foundation," "Windows Presentation Foundation," etc. Ahem, I mean collectively called WinFX. Ahem, I mean the .NET Framework 3.0. That's right, we've come full circle...
So all that "next shit" you're going to hear about for the next few years really boils down to this for the smarties: it's an expanded BCL that includes all those neat-o services/technologies (e.g. the communication/protocol glue, GUI/presentation abstractions) with a couple of new CLI-compliant languages to ease the programming (e.g. XAML, LINQ, etc.)
The bottom line is that it's still .NET regardless of how little you hear that word anymore:
You're still going to write source code in a CLI compliant language (hopefully the best for the task at hand, e.g. C#,XAML,LINQ), and from your source code you're going to call all kinds of new features/services of the expanded BCL, all the shit (including resources, locale alternatives, optionally) still gets compiled into assemblies, which then get JIT'd (just-in-time compiled) into MSIL (bytecode) which then finally runs under the CLR.
Same shit, but easier ways to do certain things which will only be muddied by the hype. Calling it ".NET Framework 3.0" really pissed me off, because it's blurring ".NET" again. Then I thought about it and it's going to be GREAT for software developers in corporate IS (like me). I remember how hard it was to finally sell our sysadmins and get them comfortable and up to speed with the .NET Framework. The beauty of this blurry rebranding is they'll never know the difference - they'll just consider it an upgrade to what they already have been doing instead of a whole new scary platform/buzzword/technology. And that's all they really should care - the innovations are all going to be mostly on the developers' side of the wall. The change management/sysadmins that deploy our shit won't have to change much in their processes at all.
That's enough for me. I have to go install the new Vista SDK so I can play with their media metadata API (part of WPF, which, as you now know, is a part of the ".NET Framework 3.0!") I just installed Vista RC1 [build 5600], and it's been great so far (solid and snappy, all devices except my Lexmark All-In-One are working great). As a matter of fact, I'm typing this using ßeta Windows Live Writer to post to my blog, then I will email the original targets of this rant using Outlook 2007 ßeta 2, and all running on Vista RC1 [5600].
And that last paragraph serves as a perfect segue, summary, and cliffhanger (all at once) for this email:
Know what the next version of Office is currently going to branded?
I bet you said, "Office 2007," right? Wrong. 2007 Office. That's right, the fucking year is going to be first for the next branding of the Office suite... yet the individual apps that make up the suite are going to put the year after the title (a la Outlook 2007, Word 2007, Excel 2007, etc.)
Damn that company is a pain in the ass. As techies, their tech innovations and strategies are hard enough to deal with; but we have to also sort through versioning/branding/context/hype manure that our parents are oblivious. However they probably owe much of their success to great marketing; their success is directly related to my carreer as a developer. Being a techie is one thing we smart people have to deal with, but filtering the shit from the shinola is a whole other pain I could do without. In the words of Chris Rock, "But I understand."