C4 Day Two: Brian Fitzpatrick on the future of Subversion
The last full-fledged talk of the day was from Brian Fitzpatrick (aka Fitz), one of the lead developers of the Subversion revision control system and, more recently, a force behind Google Code, Google’s open source project offering. He’s apparently been giving various iterations of this talk for some time, and we were regaled with a decidedly future-facing selection of his thoughts.
Fitz is a jovial and confident speaker as well as being a master of his niche technical domain. He spent little time on the hoary past of version control (read: CVS), and credited Subversion’s current dominance to robust bindings and focused project management. He reiterated throughout the talk his strong belief in open source and the importance of community building therein.
The Subversion team apparently has a policy of “no wanking”: that is, that Subversion isn’t an academic exercise in the latest version control fads. Fitz showed a thorough understanding of those fads but has little patience for them; he described monotone as “alien technology […] string theory that happens to do version control” to a chorus of laughter.
The feature foremost in Subversion’s near future is decidedly un-wanky: merge tracking. The distant future of Subversion is a bit more interesting. Distributed version control is in the cards, despite Fitz’s sentiment that it detracts from the metaphor of versioning server as a project’s community hub. Offline commits, improved working copies and svn:externals, and the addition of an “obliterate” command are all high on the list of potential improvements, though.
More exotic is Fitz’s designs on a new filesystem backend, incorporating indexing and searching. Ideally it would be “timesafe” by versioning even metadata like properties, and allow for concurrent writes to take advantage of HTTP pipelining and speed up checkins. A unified, consistent, “elegant” object-oriented API is also on Fitz’s mind, and maybe even a rewrite in C++ with a better build system and testing framework.
The Q&A opened with a question about the svk distributed wrapper around Subversion, which Fitz described as being “good” and “stable” but “requiring, I think, all of CPAN” to chuckles. A long-standing bug that makes it difficult to work with Mac OS X packages in Subversion was credited to communication problems at Apple. Backporting WebDAV from Apache 2 to Apache 1.x was dismissed out of hand (and rightly so). A question about offline commit support to multiple machines for code review purposes was answered with a recommendation to use branches and the svnmerge.py tool.
Version control is a niche topic and, as Fitz admitted, a potentially dry one. He did a great job keeping things funny and future-forward.
[Update Nov 11 2006: corrected speaker’s name and position on distributed versioning.]