Log in

No account? Create an account

Subversion - Journal of Omnifarious

Oct. 4th, 2005

06:39 am - Subversion

Previous Entry Share Next Entry

I've been thinking about Subversion recently because of my work on Mercurial. A lot of people hate Subversion. The most common reason given is that it is a centralized SCM and that model is old-hat.

I don't hate it for that reason. I still think that model is probably the most appropriate for many projects. It makes checking out stuff to your laptop then resyncing once you get back home a pain, but there are other ways to handle that problem.

But, Subversion made a number of extremely conservative design choices early on. For example, they chose to use Berkeley DB for their backend data store because they didn't want to have to worry about supporting transactions. And they chose WEBDAV as their networking protocol because they didn't want to have to design one of those. And they used Apache APR for platform independence.

This resulted, strangely enough, in a system that was big, slow and had a lot of dependencies. This made it annoying to get off the ground, which greatly reduce its hackability by random outsiders. It also made the design inflexible. Subversion is a big-ole WWII era tank, when people were under the illusion that if you put enough armor on something, it would get to wherever it was going regardless.

At the time Subversion was developed, most version control systems that were worth anything were arcane proprietary secret technologies that were extremely expensive. It wasn't clear that the Open Source community could effectively replicate the features. I understand why they made the conservative design choices they did.

So, I give a lot of credit to the Subversion folks for getting the whole idea of a high-quality, reliable, Open Source version control system off the ground. I think their efforts are the reason we have Monotone, darcs, arch, my current favorite Mercurial, and an incredible plethora of other version control software.

Current Mood: [mood icon] thoughtful
Current Music: Paul Simon - You Can Call Me Al


[User Picture]
Date:October 4th, 2005 04:47 pm (UTC)
A centralized SCM is definitely a useful model in some circumstances, although it's detractors will usually point out that it's a subset of what the decentralized SCMs can do.

I'd also point out that Subversion is much nicer than CVS to use on a disconnected laptop, not requiring network connection for things like "svn diff" and "svn status", which I find quite useful.

CVS was just a "good enough" SCM that had some horrible problems. At least, Subversion makes it unnecessary to consider using CVS.
(Reply) (Thread)
[User Picture]
Date:October 4th, 2005 07:10 pm (UTC)

*nod* I agree.

(Reply) (Parent) (Thread)