Subversion

Apache™ Subversion®

This popular open-source Version Control System helps you track the entire history of changes to your project’s documents and files, whether you are working alone or with a team spread across the planet.

Joel Spolsky wrote “Distributed Version Control is here to stay, baby”. But Centralized Version Control is here to stay, too, and I have been working on making Subversion the perfect centralized system.

My Work

Contributing to the development of Subversion began as a fun and enlightening hobby for me. It then became a rewarding day job for a few years, as I was employed by CollabNet and then WANdisco and then Assembla to continue improving it.

In 2015 I was researching how to provide move tracking that Just Works, particularly to drastically improve the experience of merging in the presence of multiple renames. This research focused on a model that treated directories as first-class tracked objects just as files are, reflecting how Subversion tracks data internally. Looking back, it is now apparent to me that the model of versioned data that git uses, in which only files are tracked, is better matched to real-life usage.

In 2012-2013 I was working on improving merging. Subversion 1.8 supports merging to and from a branch, repeatedly, without the ‘reintegrate’ option.

Subversion “Code Swarm” Video


This 7-minute video elegantly shows the swarm of people contributing source code and documentation to form the Subversion project.

We see “kfogel” and “jrobbins” starting the development in 2000, new people joining in as they hear about it, some staying active while others fade away, up to the release of version 1.5 in June 2008. I became a committer in August 2003, shortly after version 0.24 was released.

The files or changes being committed are shown as dots around the log-in name of the committer. The bigger the change, the brighter it’s shown. The committers shown are sometimes committing changes contributed by other people. Different colours distinguish between core source code, documentation, and other kinds of files, described right at the end of the video.