A little while ago I mentioned that Team System doesn't use VSS 2005 and it has its own source control system. I was reading a Devsource article titled SOS: Save our Source and it mentions some of the not-so-good history of VSS 6.0 and then runs through the new features of VSS 2005. Like most, I'm expecting VSS 2005 to be a small upgrade to the old VSS and nothing more. For the most part, I'm right. There are some new features that have been added:
The UI has been modernized, to be sure, and the maximum database size increased to 4GB, but there's also Unicode and XML support, the time zone problem is fixed (along with a bunch of other bugs), and you can use Visual Studio to connect to your VSS data store from anywhere you have http or https Web access. There are new automation features, and a new plug-in editor/viewer.
Hrm..a lot of cool things there huh? I didn't get excited about it either. The article even tells you that maybe VSS 2005 isn't for you (or me) since its designed for small teams that are local to each other. As long as you stay within its limits you should be Ok.
That last sentence is my biggest issue with VSS. If you stay within its limits it seems that you don't get much more than a history of your files. To me, source control is so much more than that. Source control is just that...it controls your source code. Not just the history of the files and folders but also controls them. By controlling them I'm mean managing who has them, who had them, who modified them, what file versions you have and what versions you need to get. It should be able to handle branching/merging/labeling gracefully.
I know that source control is just a tool like your IDE or any other tool you use to be an efficient developer. Your tool should help, not hinder, your coding. How many projects have you been on where guys are afraid of the words branch and merge? In the long run it probably was the best decision to make but was avoided like the plague. A good source control tool should help you with that process and not keep you from it. What about working in multiple versions of the same code where you have to keep updating each version just to stay in sync? Your tool should help you with these types of merges and keep the process simple...not complex.
What tools help us with this and what are the best ones out there? That's debatable. I think as developers we need to embrace our source control tool as a "tool" in our toolbox and not just a place to "keep our code". Start out by reading Eric Sink's great series Source Control HOWTO and then try and find little nuggets like keeping your branches in sync. You probably need to read through Branching Patterns for Parallel Software Development as well. That last one is a harder read since it is a white paper and reads like one but still has lots of good information. Finally, I suggest that you go and get a copy of Vault or Subversion and install them at home. Get them up and running and use this environment as a test bed for trying out new stuff.