source control at Microsoft

Dogfooding Source Control – Joel talks about source control at Microsoft. The main question he brings up is “why doesn't Microsoft use Visual Sourcesafe for all source-control needs?” He rightly points out that most of us feel that “Dogfood is the best food!”. There are sometimes products that don't get dogfooded as well as others, and I would bet that there is a very strong correlation between support costs and the amount of dogfooding. But VSS is an interesting topic. There are certainly many teams in the company that do use Sourcesafe, and I've used it on a few projects. In fact, for things like non-confidential collaboration with distributed teams, a number of people I know here have developed good opinions of Source Offsite. But the fact remains, projects like Windows XP and SQL Server are not developed against Sourcesafe. I haven't seen SLM used here, but the main system in use for the large, complex projects is command-line oriented and a more “industrial” system, sort of like a PVCS or SLM. Hardcore devs disdain GUI anyway, so one could theorize that the system is there to please the devs for whom Sourcesafe is not complicated enough. But really I think it is just an issue of scale. Brian Valentine has said that Windows XP is the largest, most complicated piece of software ever developed in the history of the world — and whether that is entirely accurate or not, it has got to be pretty close. The point is that most customers who develop code are not going to have the same requirements as Microsoft. For example, just looking at the “build” process — for many customers this means hitting “build” in Visual Studio. Significantly fewer places have complex enough requirements to require that someone maintain complex series of makefiles for a build. And fewer yet do development projects large enough to require that someone be assigned (usually devs, on a rotating basis) to do “builds”. At Microsoft, on the other hand, “build” is an official job function and there are teams dedicated exclusively to making sure that the software gets built regularly. And this is no slouch job. I have seen two build systems in the company now that dynamically distribute all of the build pieces across banks of machines based upon load, dependencies, and other factors; all of this just to run the builds more efficiently and make sure the testers have a working build to get rolling on the next morning. I would hate to be the one tasked with trying to do builds of that size out of a Sourcesafe.
[Better Living Through Software]

Leave a comment