Why isn’t TFS more like <insert alternative here>? Blame Visual Studio

Brian Harry, the Product Unit Manager for Team Foundation, has a post about some of the coming improvements to TFS 11.  It’s an interesting informational read for many reasons, but includes this:

“A little background before I talk about the improvements we are making. When we designed TFS 2005, one of our design goals was to build a system that we could use for developing Visual Studio. VS is a VERY large code base. Last I checked, each branch was around 5 million files and I suspect it’s a good bit larger than that now. Your average developer needs 100,000 to 200,000 of those files to do their work. Further, developers are scattered around the globe, sometimes over relatively poor connections (when we started in NC, our effective bandwidth was about 300 Kbps :)). In order to manage this efficiently we chose a design where the vast majority of information (including information about your local workspace) was stored on the server. This meant that operations like Get or Merge, etc. could run entirely within the context of the server and only send to the client the few bits of information that the client needed. It scales incredibly well and allows us to support incredibly large teams and code bases.

Not everyone needs that, of course.”


“To address this, in TFS 11, we are adding a new type of workspace we call “Local workspaces”. You can still use server workspaces if you want to (in fact, we probably will still for most of our developers because of the code base size) but local workspaces will be the default. In local workspaces TFS assumes that your client is “the master” and TFS needs to understand the changes that you make there and “do the right thing”. In configuration management parlance, it’s called Modify-Merge-Commit style version control – or some might think of it as “the Subversion style”.”


“I’m certain that about this time, I bunch of people are asking “but, did you implement DVCS”. The answer is no, not yet. You still can’t checkin while you are offline. And you can’t do history or branch merges, etc. Certain operations do still require you to be online. You won’t get big long hangs – but rather nice error messages that tell you you need to be online. DVCS is definitely in our future and this is a step in that direction but there’s another step yet to take.”

The quotes pretty much speak for themselves and explains a lot.  I think it is pretty safe to say that most projects are not like Visual Studio.

I’m glad to see the movement is towards a Subversion model, with a future step to make it like Git or Mercurial.

I’ll let people think the obvious thoughts now.

posted on Wednesday, August 03, 2011 7:58 PM Print
No comments posted yet.

Post Comment

Title *
Name *
Comment *  
Please add 4 and 6 and type the answer here: