Thoughts on name collision



On September 12, 2011 Microsoft revealed Windows 8 at the BUILD conference.  Among the many new features and experiences introduced was a new style of fully immersive apps dubbed "Metro style apps".  These apps can be written using XAML with C++ or C#/VB or HTML5 using JavaScript.  As a common underpinning to these two very different development environments, Microsoft introduced the Windows Runtime (or WinRT for short).  WinRT is the bridge to core Windows 8 OS functionality from the various supported development options.  I explained WinRT in some detail in a previous post.

Fast forward to today: Microsoft announced the editions of Windows 8 that will be available upon release.  Among these was a new name for what was previously referred to as Windows on ARM (WOA for short).  The new name for WOA is Windows RT.  Now, the observant amongst you probably immediately recognize the potential problem with this new name.  For those that don't, let's review the concept of name collision.

Name collision is a programming concept that occurs when two variables are given the same name within areas of a program in which they would conflict (i.e. they are in the same scope).  What is the result of name collision?  Confusion.  The compiler doesn't know how to distinguish between the two variables and will complain.  Thankfully, most compilers won't even let you do this sort of thing.  So, given that Microsoft has built a lot of software over the years, why have they made what seems to be a mistake directly akin to name collision?  Amusingly enough, there was a post on the Building Windows 8 blog back in August entitled "Designing the Windows 8 file name collision experience".

I'm not going to throw stones about whether or not "Windows RT" is a good name or the right name for the ARM version of Windows 8.  What I do know is that it has the potential to cause some confusion in developer circles.  There is a hashtag on Twitter #winrt.  Can you immediately tell whether it's referring to Windows Runtime or Windows RT?  The longer version #windowsrt is a lot of characters for a system designed in such a way to limit the length of a post.  Then there's WinRT People, the site that collects posts from around the web about WinRT and related topics.  Microsoft clearly established and communicated the "WinRT as Windows Runtime" naming scheme and now they've muddied the waters with this Windows RT naming decision.  In a conversation with a Microsoft technology developer I'll need to ask the question: "I'm sorry, were you referring to Windows Runtime or the ARM version of Windows?"  Not sure I understand this decision at all.