It was a logn time ago, so, I guess, it’s ok to tell this story at last… 

Well, everybody knows what “checkin” is, right? That’s when you send your updated, fixed or new code to the depository for safekeeping. There is a lot of systems for that. OpenSource guys usually use CVS for that, there are other commercial ones like PVC, Microsoft has the one of its own called “source depot”, as well as SourceSafe.

All they do is just one thing: enable you to restore a previous version if somebody broke the current one. Also, to keep a special version for this very-special-big-corporate-customer, which is not easy, but at least possible with the version control. AFAIK, we don’t do that at Microsoft, but one of the companies, I worked before for, had about three major branches for critical customers like Chevron.

Of course, that’s not panacea, and when 10+ developers start to checkin their changes left and right,… well… the result is normally not that encouraging. Everybody has his features working standalone, but making it work together becomes a challenge. Actually, we had such a period in our life at the early stage in Windows Home Server. We had a lot to do, and VERY little time to accomplish it. Guess what? Nightly tests become broken and did not want to run no matter what. As a little token of pride, I’d like to mention that tests for my features worked fine — I was responsible for communications between server and the clients. Which means that when my areas are broken, half of the product tests would fail instantly, so I had to keep my parts in shape. But most of other areas weren’t that lucky and overall tests package did not want to run no matter how angry the management was and how actively we as a team were fixing the problems.

Then we found a solution… I had a toy Garfield in my office. After speaking with one of the leads and the manager, we introduced the following rule: to make a checkin, you should have Garfield in your hand. So, you get Garfield, run the tests, if all pass, you do checkin, and give Garfield away to the next one in the line. A sort of a physical mutex preventing concurrent changes.

People hated Garfield. Enough to say that in a couple of weeks my boss put it on the eBay! Don’t believe it? See for yourself!

Checkin Garfield 

Well, nobody bought it, nevertheless the problem was solved. In three days all the tests were running fine again and never broke again in several weeks. And after the Thansgiving 2006 Garfield was sent to the honorable retirement, while we continued in a more easy way but still without breaking the tests…

By the way, Garfield is still around. It’s hanging in my office on the corkboard, reminding the team’s veterans of the old times 🙂

Checkin Garfield