Common Version Control Myths

You can write a decent version control system in a matter of days

You can write a decent version control system in a matter of days. But it probably won't be feature-by-feature compatible with CVS, much less up to par with BitKeeper. A good software configuration management needs to have a lot of useful features that every user out there wants, and should work through common Internet protocols like HTTP or FTP. It should support file renames and copies, be fast enough and be easy to install and use.

The SCM you will write on your free time, might fit your needs like a matching shoe to a foot, and may eventually be converted into something very powerful and usable. But writing a great SCM tool takes a lot of time and a lot of effort. In "The Cathedral and the Bazaar" Eric Raymond tells how he found several tools that could fetch mail from a pop server. But it took him a lot of work to turn one of these tools into the ultimate such tool - fetchmail.

Many version control systems out there originated from such that were internally used: Arch, Vesta, CVS itself and others. BitKeeper and Subversion, on the other hand, were written from the grounds up to be marketplace, shrinkwrap software. Many software houses have their own internal SCM, that works fine for them but isn't worth much to the general public. There is no such thing as a free lunch.

I do not need to use a Version Control System

Yes you do. Source control is required for projects of all sizes, and for teams of any size. There are still many software houses that do not realize that, and use various snapshots of the code and windiff to keep track of changes. These are all poor man's source control systems that do not scale well.

I take a more radical approach that thinks that even Aunt Tillie needs version control to keep track of her MS-Word Documents, Excel Spreadsheets, and saved games. Hans Reiser wishes to implement source control capabilities in ReiserFS, and I believe VMS versioned files too. Even if you are not a full-fledged hacker, you can benefit from source control.

My software house would rather use our internal SCM

You have an internal or incomplete SCM - it works, and it does so nicely. OK. But there are publicly available ones that are better in most ways. If a certain key feature is missing from them, you may wish to allocate some time to feeling it and releasing the results to the world. That way, the publicly available SCM will gain a feature, and you can use it instead of the ad-hoc solution you have used until now.

People prefer the developers of Perl, Python, Ruby, Tcl, etc. to maintain interpreters for languages instead of everyone inventing their own toy language that will probably never do much and will be quite useless. Likewise, it is a better idea to maintain a shrinkwrap Linux kernel (and corresponding FreeBSD and OpenBSD kernels - choice is good) instead of each system vendor having his own pet version of UNIX.

I do not believe in concentration of efforts - that investing all the effort into one project (like all KDE hackers moving to GNOME or vice versa) will give us a better product than with each hacking on what he wants. But I do believe sharing results and releasing code as shrinkwrap (with all the discipline involved) will eventually benefit everybody. You can do with Perl in a matter of hours, things, that once took a team of C programmers several months. That's because the Perl people shared their efforts. Similarly, by having several good publicly available SCMs, we can eventually fill the needs of every version control user out there.