Single User Source Control

Many people have asked us for a single-user SourceGear Vault license at a very-low-cost.  We've always thought this was a good idea, but we never got around to implementing it until today.  The Single User Edition of Vault is now available at a cost of $49.

It's amazing the speed at which things move in 2003.  This afternoon we made the necessary entries in our online store, so the product was available for purchase at that time, even though our company website had not been appropriately updated yet.  Within about an hour, somebody noticed the new item in our store's catalog and posted a note to the Vault mailing list.  Marc LaFleur caught that note and proceeded to write a blog entry.  Long story short, about 8 hours after its availability, I'm finally blogging about the Single User Edition now, and it's already old news. 

Julia Lerman suggested that I might write a brief explanation of why anyone would want to use source control alone anyway.  She raises a good point -- source control is usually explained as a way of keeping developers from stepping on each others' toes.  Why would anyone want to use source control on a team of one?

The first answer is simply to admit that for a solo developer, source control actually isn't all that compelling.  If it were, we could charge a heckuva lot more than 49 bucks for it.   

For any team of two or more people, I can credibly argue the benefits of a good source control tool.  And as the team gets even larger, source control evolves from "beneficial" to "compelling" to "necessary" and finally to "you are a complete bozo if you don't use it".

But with just one lonely coder (we almost called this product the "Lonely Coder Edition"), the benefits of source control are a bit less important.  Nonetheless, lots of people do use a source control tool when working alone.  I'm sure this is partially because it's tough to get out of the habit once you've made source control a part of your normal workflow.  But when I use a source control tool all by myself, here are the benefits that I find still apply:

It's an undo mechanism.  Whenever I get to a good stopping point in my code, I checkin my changes to the repository.  From that point on, I can be less careful.  I can try coding some crazy new idea and when it doesn't work, I just revert my working folder to my last checkin point.

It's a historical archive.  Sometimes I want to Undo much further back.  My repository history contains a full copy of every version I have ever checked in.  If I ever need to go back and find something I once had, it's there.

It's a reference point for diff.  A source control tool can easily show a diff of all the changes I've made since my last checkin.

It's a backup.  When I regularly checkin my work, I always know that there are two copies of it.  If my *&^%#@! laptop hard drive dies again, my code is still safe in the repository.

It's a journal of my progress.  When I do my regular checkins, I write a comment explaining what I was doing.  These comments serve as a log or a journal, explaining the motivation behind every change I have ever made.

It's a server.  Sometimes I'm coding on different computers.  The repository becomes my central server.  I can go anywhere I want and I can still get to my code.

Some will observe that all of these benefits are available through other means.  That's true.  Like I said, source control for a single user isn't truly compelling for most people.  Speaking just for myself, I use source control because I like it, and I thought folks might be interested in hearing why.