We’ve been seeing several comments on email and blogs lately about changes in the APIs between CTP (Community Tech Preview) releases. I understand the frustration that these changes could cause, so I wanted to jump in and comment on the topic.

As part of being increasingly more open in our development process, product groups at Microsoft such as Visual Studio and SQL Server are using this CTP-centric model as an extension to the traditional Beta programs. Personally I love the CTP model because it allows us to get bits out much more often for our developer community to take a look, start experimenting with the new bits and provide feedback on things they like (or not like :).

Now, this is great but it comes with a cost: releasing CTPs more often means that more of our internal development process is more exposed. During development of large products such as SQL Server or the .NET Framework we experiment, try things out and do some early, tentative implementations. Most of these “experiments” end up being features and we clean them up, add tons of new tests for them, etc. There usually are a few of these experimental features that we decide not to ship, either because we think it won’t be ready for a particular release, because we get strong feedback from our customers saying that the feature is not what was expected, or because the result is not what we expected.

If we decide to remove a feature that we introduced in-cycle, we mark these APIs as [obsolete] for a while, and then we remove them. This gives folks that have applications that were built with these experimental features a chance to see the obsolete warnings and fix their applications before the APIs are removed. At this point is where you see something that you like and just when you got exited about it you realize it’s marked [obsolete] :(

Note that this flexibility during development is key to us. We need to be able to add and remove features so we can see if they’ll live up to the our and your expectations.

So basically the trade-off is: get only a couple of relatively clean Beta version during the development cycle and see a few changes, or get several CTPs during the development cycle (including some betas) and see more of these intermediate features coming in and going away.

Pablo Castro
Program Manager - ADO.NET Team

Disclaimer: This posting is provided "AS IS" with no warranties, and confers