It’s a little simplistic to simply compare and contrast VSS with TFS Source Control as TFS provides and integrates with so much beyond source control, but it is a question that arises, so here are some thoughts on the comparison. I’m not focusing on source control features, such as branching, merging or shelving but rather on reliability and scalability.


As TFS uses SQL Server as the underlying source control repository, source control activities are transactions. Therefore activities either complete entirely or not at all. This means that should, say, a network connection be lost during a check-in, that you can be confident that the source control repository has a complete history, either entirely including or excluding the check-in that was in progress at the time of the problem.

Repository Size

If your source code repository is large and/or growing then the scalability that SQL Server provides in simply being able to cope with large repositories is extremely powerful. How large? Here are some statistics from our own internal usage. First, the total number of source files stored in TFS at Microsoft:


This is across a number of instances of TFS, but to highlight one single instance:

The VSTS DevDiv instance (running 2008 SP1) has 3,845 users, 67 projects, 549,833 work items, 21,524,073 source code files and 2,084 builds per month with the total number of builds at 38,410. Figures taken in February 2009.

Brian Harry’s blog has some excellent stats on user populations supported by TFS.


Another distinction, again largely courtesy of using SQL Server, is the ability to host the application and data tiers separately. This allows the data tier to benefit from SQL Server configurations such as clustering to remove the data tier as a single point of failure and increase throughput (although the application tier cannot be clustered in 2008, the 2010 release will support application tier clustering as well).

In addition the remote proxy server provides an optional means of allowing remote users to access source code from a local cache, helping support distributed teams.