Mary Jo Foley is writing about one Microsoft code name per day on her blog.  I think it's pretty cool and there's a few code names I've never even heard of before.  She has written about a couple of Developer Division code names so I thought I'd add my own colorful commentary.

She gives a little history on the VS code name pattern.  For the past several years we've been using north west locations as code names.  The pattern is that with each release the location gets further from Seattle (not sure why we decided to do that but that's the pattern).  She doesn't mention this one but the first was Everett - the code name for VS2003.  Everett is a city just North of Seattle - there's a big Naval base there: aircraft carriers, the works, pretty cool.  We really didn't have much of a code name for VS2002 - I can't actually remember why, we just referred to it as VS.NET.  After Everett, came Whidbey (VS2005 and an island just off the coast north of seattle) and now we are working on Orcas (another island a bit further north west).

She also talks about Hawaii as a code name.  I believe it first came into existence in 2003 and was used to describe a set of long lead technologies that we thought would go in the next major release of VS.  As reality sunk in, we peeled off a set of those technologies and created the Whidbey release.  A similar pattern happened for Orcas and by that time no one really thought of Hawaii as an actual release any more but rather a dream destination that has become a symbol of where we want to go and we keep peeling off pieces and doing shorter term releases.  Maybe someday we'll actually use it as a code name for a release - who knows.

So we get to Rosario.  Rosario is a resort on Orcas island.  It is a code name that the VSTS team has been using to describe our next version (after Orcas).  Actually when you see me talk in many forums about "the release after Orcas" what I really mean is Rosario but I don't use that term publicly - a bit more on that in a minute.  We created the Rosario code name to describe some work that we (VSTS) really want to get done and doesn't fit in the Orcas release.  In a sense Rosario is a place holder code name.  As Orcas unfolds and the rest of the division turns their attention to what is next for them too, we may see changes in what we currently believe our Rosario plan is.  For now we'll plow ahead with what we think we are doing :)

So that's a great segue for why we use code names and why we tend to be careful about how we talk about them.  We use code names because plans change.  If a few years ago I told you that Whidbey was VS2005, that would have set an expectation in your mind.  If we had taken a few months longer (not hard to imagine in a 2-3 year product) it would have been VS2006 and we'd have had to change the name and suffer the backlash, etc.  So part of it is about being careful about what expectations get set - "Whidbey" doesn't really set any expectations.  Rosario is another good example of the use of ambiguity.  Right now it means the next version of VSTS.  Maybe in the future, as Orcas finished up, other teams in VS will want to deliver functionality on that timeline and it will morph into something else.  The code name "Rosario" doesn't set any expectations about scope (like VSTS V.Next would).  Code names are a "bucket" we can fill with meaning over time.  At some point, when the release becomes concrete enough, we give the product a name and announce it.

One more justification for code names...  You'd be astonished how many times what we think will be the product name for a new technology will be changes.  The most unbelievable case of this was the CLR/.NET.  I swear we had at least 10 different product names over the cycle and I can't even remember them all.  The first was COM3, then the COM Runtime (abbreviated COR), then the COM+ Runtime, then just COM+, then a few I don't remember and a sequence of things including NGWS (which either meant Next Generation Web Services or Next Generation Windows Services depending on who you asked) and ultimately resulted in .NET and the Common Langage Runtime (CLR).  At least 2 or 3 of these machinations caused us to spend weeks scouring the code base to change every single reference to the "old" product name to the "new" one.  All through the machinations, the code name for the CLR was "Lightning" and it never changed.  So code names also provide us a mechanism to buffer us from change until the final product naming is decided on (which often doesn't happen until 6-12 months before the release.

Lastly and specifically, one of the reasons you don't hear us (and I think still won't) using the Rosario code name much is we don't want to take the focus off of Orcas.  Orcas isn't even in Beta yet.  It's a great release with tons of cool stuff.  Yes, we're doing even more cool stuff after Orcas and once Orcas gets a little closer we'll probably start to talk more openly about it.  But until then, we'd like to keep your focus and feedback on Orcas so we can make that the best release possible.

Sorry, I just don't seem able to write many short posts but hopefully it's at least a bit entertaining.  And now I'll go back to calling it "the release after Orcas" :)

Brian