I went to the Melbourne Dot Net Users Group last night. The topic of the night was source code control, something I have ignored for several years but that is starting to become an topic of discussion at my place of work.
Once again, the hammer paradigm is great for explaining the options available to us.
The Small Hammer
We scream out “I'm checking out module1.cs, don't anyone touch it!” and hope that everyone else hears and takes note. Needless to say, a source code control system that falls apart when programmers put their headphones on to listen to D12 is doomed to failure (I guess email and clever scheduling will overcome this difficulty).
The Medium Hammer
Visual Source Safe... it is a cruel summary of modern software engineering that we need even consider Visual SourceSafe 6 for source control. The current version (6.0) was released so long ago that it could now be a museum item. It has those awful Windows 3.1 dialog boxes that remind me of 1994 (the same ones that I vowed never to see again in 1995). A particularly concerning feature of VSS6 is that like most MS apps that were developed before 2003 it stores its database in a bizarre formats and an even more bizarre folder structure. Unfortunately, it seems that the database has a habit of periodically corrupting, and the wacky way in which the data is stored makes recovering this data impossible (keep good, regular backups!!!).
Nices thing about VSS6:
- cheap ($800AUD)
- fairly simple
- integrates pretty nicely with VS.Net
Awful things about VSS6:
The Nuclear Hammer
CVS... runs as a client/server IP app. Used by the vast majority of the open-source community, particularly for projects where many developers are in different locations. Started out in Unix-land so retains many Unix archaisms in its configuration settings. Practically impossible to configure without the manual because the dialogs are so useless. Stores its everything in plain text files so if someone/something fucks up the repository it is concievably possible to recover the data.
CVS is only the server component - you also need a client component. The most prominent amongst these are WinCVS and Tortoise. My personal theory is that the developers behind these two products are competing to see who can create the most frustrating/obscure UI. The Tortoise team seems to be winning (various icons that resemble cigars, chairs, pencils, and crack pipes), although WinCVS puts up a good fight.
Nice things about CVS:
Awful things about CVS:
- impossible to use without significant time investment in learning UI
Alternatives
I gather that MS uses a custom in-house source code control system. If it's good enough for them, it's good enough for us. Why don't they throw a miniscule portion of their desktop monopoly profits at making this releasable?
The Future
Microsoft obviously doesn't see source code control as a highly competitive market (apparently they have half an employee working on VSS at the moment). There are apparently no new versions planned. The future looks rather grim.
Conclusion
I don't have time to figure CVS and its awful clients out. I don't want to leave Visual Studio to run a third party app to check code out of the repository. We can't afford to have our code stored away in a proprietary (read “completely undocumented“) file format like VSS. We don't want to spend the big $$$ for something like SourceGear.
So I think the small hammer is going to have to do.
Cynical closing note: apparently a Microsoft employee has been quoted as saying, "Visual SourceSafe? It would be safer to print out all your code, run it through a shredder, and set it on fire."