My first introduction to the CVS community was just after I had introduced
it into my workplace. I had used several other Versioning tools and wanted
to add a feature I really liked from them, using a GUI to browse the
repository before doing a checkout. What was missing was a "LIST" command
in the protocol, and perhaps a reliable way to indicate the top level
directory ("." apparently didn't always work). So I started looking at the
source code and was instantly terrified! That code is a mess.
I decided to set my sights on a simpler task, to add a URI naming scheme
for CVS. I thought it would be great to modify programs to work with CVS as
a versioning file system. So, you might tell your Java compiler to compile
cvs:email@example.com/my/repos//this/file?tagname. Changing the compiler
would be a big job, but adding the scheme itself to CVS was simple. I
submitted the patch but it was never accepted.
About that time, Cyclic software was sold and Karl Fogel started the CVS
Continuity Project to decide what should be done. Eventually Eric Sink, the
new owner, opted to continue maintaining it. The CCP was dropped, but not
before (partly due to my obnoxiousness) people agreed that the ability to
check in should be opened up.
Encouraged, I rewrote the hashing code to be much more efficient and object
oriented in the same way as is happening here, using namespace prefixes and
virtual functions through function pointers. That patch too was never
accepted, though I could understand why it filled people with trepidation,
since the hash touched most parts of CVS.
I also started a discussion on the CVS list about what people would like to
see in a new version of CVS. It generated a lot of discussion and I am glad
to see many of the ideas reflected here.
I decided to give code changes one last try. I wrote a patch that did
nothing more than add comments to the hideously convoluted main.c file.
That patch was not accepted either. At 0 for 3, I decided to give up.
Then I improperly configured my mailing software for a few days, and it
bounced email. This got me kicked off the CVS list as well as the DeltaV
list. Because I was preparing to undergo Chemotherapy for my Leukemia, it
seemed like a good time to bow out of the CVS community anyway.
Since then, I've had a Bone Marrow Transplant. If you know anyone who is
looking at going through one, BTW, you may want to point them to
http://read.regi.ubc.ca:8080/cll, which is a weblog of my experience going
through it. Anyway, as my brain has slowly come back into service, I've
looked around to see what activities were going on in the source code
management world that I could add to.
First, I tried to join Renegade CVS, but got no response to emails. Next, I
stumbled upon the Apache Avalon project. This seemed tailor-made to the
problem of developing a new server that is compatible with CVS. The concept
is that a server fulfills a particular function, sometimes through many
different protocols which in Avalon are called "blocks". So I envisioned
writing a Versioning server with a CVS block and a WebDAV/DeltaV block.
So I signed up once again to the DeltaV mailing list and what should I find
but a reference to Subversion. Thus here I am, trailing this history behind me.
How can I contribute? That is a good question, and one I'd like to leave
for another email because I'd like to start a discussion on it, hopefully
one that hasn't already occurred ad infinitum.
My thanks to everyone for starting this project, and the good work you've
all done so far.
Received on Sat Oct 21 14:36:22 2006