refreshing dogfood

One of the big things we’re working on in Team System land right now is getting ready to update to the latest version of Team System for our internal use…we’re currently doing business on top of VSTS Beta2. As others (such as RickLa and JohnLawr) have noted, we use a lot of VSTS in the development of VSTS.  This is one of my most favorite aspects of my job…using our own tools, for better or for worse, to build our tools. It really helps us stay close to our customers, experience the pain and joy of using our tools and as things go well, increase our confidence that we’re building the right product with the right level of quality for a team of our size and complexity. 

Much to my chagrin, we don’t use all of VSTS broadly within the VSTS team.  But for each dogfood refresh (which we undertake every 3 months or so) we try to expand both the feature coverage as well as the scale of usage.  For this upcoming refresh, for instance, we expect to use a few more aspects of the system regularly:

   -   Source control from the IDE (today we use the command line interface)
   -   Hardcore reporting from the data warehouse
   -   Publishing test results
   -   Building all of Team Foundation with Team Build (today we only build Team Build with Team Build)
   -   Source control proxy server

As you can imagine, bringing a team of hundreds onto new toolset that’s still under development is no small challenge.  We’ve been actively planning the migration for the past 4w and still have 2+ weeks before we go live. The migration of data is clearly one big challenge since the schemas and organization of the data has changed since Beta2.  We develop scripts to migrate this data and as you can imagine, testing these is a big job unto itself.  We conduct a series of dry runs (the first of three planned dry runs is currently underway) which basically involve migrating the data and then conducting a series of bug bashes to ensure that the data moved correctly and that we can use the new toolset as productively as before.  We’ll have folks specifically focused on ‘bashing’ the new areas above to ensure that they’re ready to go live. 

To help us stabilize and service this toolset, we branch our source tree, creating a new “dogfood refresh” build.  This helps us isolate ourselves from the continued churn as we fix bugs and provides us a way to patch our tools when we find a dogfood blocking issue.  This of course means that if we find a blocking bug after the branch, we have to fix it in two places so it’s a bit more expensive.  But it’s worth having a separate branch so that we always know that we can build a fix right away.  We’re on the verge right now of making that branch and so we’re pushing hard to get the last known dogfood bugs and work items closed down (we use Team Foundation work items classified with a sub-iteration path to track these) before we branch and stabilize. 

It’s an exciting time.  I’m really eager to taste this new dogfood.  Yum yum!


Comments (5)
  1. Todd Kromann says:

    Great post. The honesty is refreshing. The reputation of process and products reminds me of jokes about the fat fitness coach. Another one goes like this –

    ‘There are 2 doctors in a town. You recieve a life threatening wound. One of the doctors is healthy. The other is sick. Which doctor do you choose to help you?’

    I’ll leave the rest of the puzzle for the reader. This is the type of logic one should use when choosing a tool partner. The realism of Jeff’s post helps give a feeling of trust and sets expectations about my own ‘the customer’ teams dining habits.



  2. We just recently released the June 2005 Community Tech Preview (CTP) for VSTS.  It’s been an interesting…

  3. As I mentioned before, we’re in the process of updating our internal version of VSTS with updated bits. …

  4. Abhinaba Basu on marking required fields in work items ⊕ and build types ⊕

    Adam Singer on the latest…

  5. Carl Franklin has posted the .NET Rocks Show #117 with members of the Team System team ⊕


Comments are closed.

Skip to main content