So i thought i would talk a little about what it is we want to get out of our Beta2 release.  Currently, every team inside the developer division is at a different point in their release cycle.  Some teams are trying to finish up all work, whereas some teams have a lot of work still to do by the time we ship.  This is completely ordinary and is generally determined by how much work the different teams wanted to do and how risky they thought it was to be doing work late in the game.  Now certain teams are what we consider "platform" teams.  They work on the components that we consider pretty critical and we want to nail down earlier because the risks of changing are pretty high.  One example of this is the C# compiler.  Many teams depend on this feature and it's imperative that it not undergo massive changes that would then cause pain.  Other components, like the C# Language Service have very few people who depend on us.  So it's safer for us to shut down later because we don't risk other teams if we change our plans.  Basically, when determining the set of all dependencies, the components that have lots of dependencies on them would be safe to call "platform" components, and the rest are called “VS” components.

Now, that said, even though we’re a “VS” component our team is trying to do very little feature week post Beta2.  And, in actuality, we'd prefer to do none at all.  Beyond the Implement-Interface work i mentioned in an earlier blog, we haven't really done anything else that you won't be seeing in Beta2.  By not changing our feature set in this way, it lets focus on stability and performance of the features we already have.   We feel that this gives us the best chance to deliver the best C# experience to you.

Now, here’s why the above is important: If you have tried out Beta1 or you try out Beta2 and you want something to be changed YOU NEED TO TELL US.  I cannot stress how important this is.  We are pretty darn happy with the product we’ve created and how our current features work.  So if you use something and go “damn, that’s stupid, but of course they’re going to fix it” you need to back up and realize that that isn’t the case.

So, back to the original question.  What’s the purpose of Beta2?  Feedback!  Feedback, Feedback, Feedback, Feedback, FEEDBACK!!!  We’re showing you what we want the final release to be like and this is pretty much the last chance for you to tell us if it’s good or bad.  If it meets your needs or not.  If our defaults suck or not.  If there’s something that’s going to make our break your decision to go with VS2005.  etc. After Beta2 it’s pretty much all over.  We ship the final version in a box and that’s it until the next release or service pack.  

At the end of the day, what you need to realize is that we are very dumb people.  Here’s a few ways that we’re dumb:
  1. We’re really bad at knowing how every single user is going to use our product.  Despite all the research we do; all the design reviews we do with customers; all the councils we communicate with, etc. etc. etc.  we still don’t know exactly how you will use our product.  And, it’s quite likely that there are ways that you could help us make it better for you and all other users.
  2. We’re very good at becoming complacent with the job we’ve done.  We’ve been using these features for months or years now and we’ve gotten so used to them that it’s hard to think objectively about them.  Bringing in a fresh set of eyes is invaluable to clearing up the cobwebs that are blinding ours.
You need to help us not be dumb!  Together we can make the C# experience even better.  Feel free to contact me about anything, or go to http://msdn.microsoft.com/ProductFeedback to enter an issue.  No topic is too minor, and through your contributions and the community’s feedback on those contributions we’ll know what to do for you.

Thanks very much in advance!