Friday, July 18, 2008

Version Control and Microsoft

I think this may be the first blog entry I have created directly related to my profession, developing computer software. That is somewhat odd, at least to me, but out of all the things that really piss me off, software is always right at the top of the list.

My pet peeve of the day is version control software. Not all version control software, Microsoft version control software. For all that they do right, they just cannot create a decent system for managing multiple versions of source code. First they had Visual SourceSafe, which they bought many years ago from One Tree Software. It sucked when they bought it, and many years later they have hardly enhanced it at all, and it still sucks.

Now they invented Team Foundation Server, to replace SourceSafe. Problem is, it sucks almost as bad as SourceSafe! It loves to give totally meaningless SQL error messages, and has completely lost data on me more than once. My biggest complaint about TFS though is that it is integrated into Visual Studio. I mean, that is the ONLY way to use it, there is no standalone TFS client you can use, you have to use Visual Studio.

SourceSafe has a basic client application you could use, as well as integration with Visual Studio. TFS dropped the client all together. The problem I have with this is that I really, really hate having version control integrated into my development environment. In my opinion, integration with Visual Studio gets in my way. Some developers that have never used a good version control system may think I am crazy, but I know exactly what I am talking about.

In modern version control software, you should not have to "check out" a file to edit it. There should be no locks on files. You should just be able to edit away, working on whatever files you want to, whenever you want to, in the development environment and outside of it, and depend on the version control software to figure out later what you did, and merge your changes, as well as changes made by other developers. That way it does not get in your way. TFS does not work like this.

Now before "real" programmers start screaming at me about CVS and Subversion, save your breath. I am an avid user of Subversion at home, and love the TortoiseSVN shell extension for checking in changes, and managing Subversion and versions of files in general. It does not get in my way, I just check in my changes whenever I feel like it from Windows Explorer, and it always figures out exactly what I did throughout the day and merges my changes perfectly.

It also scales very well. I have many years of source code in my Subversion repository, somewhere around 15GB's of data, and have worked on large teams that used it as well, and never once had a problem. No corrupted data, no missing files, just pure version controlled bliss. It does what it is designed to do perfectly, and does not hinder a programmer trying to get work done quickly.

And best of all, it is all free. Yes, Subversion and TortoiseSVN are open source software and completely free to use. They are mature, but also actively developed and supported by a large community. The documentation is also quite good, I have installed and configured Subversion many times in my career and never had a problem getting it up and running quickly.

Way back in 92-96 I worked for Microsoft. Even though we had SourceSafe, nobody used it. We used a totally custom built in-house version control system called Source Library Manager, or SLiMe. I was talking to a friend of mine a few days ago that is still a developer at Microsoft and mentioned how bad TFS is, and to my surprise he said "Yeah, it blows chunks. We still use SLM.". I about dropped a load. After all these years, multiple versions of SourceSafe, and now TFS, Microsoft STILL does not use their own version control software. That alone should tell you more than you need to know.

That is why I am writing this blog entry at 3:47AM. I just spent 5 hours trying to tell TFS to give me a copy of an old file so I could look at it. I finally gave up, TFS lost it. I would have been screwed, but I also check my "real job code" into my home Subversion repository, which brought back the file in about 3 milliseconds. That's the way source control is supposed to work.

No comments: