Jul 08

The victory of version control

It’s always fascinating to see how applying good practice in one area can lead to unforeseen benefits. The article on version control with subversion in the latest issue of A List Apart is a fine example of just that. Not only is the use of version control a good way to manage your own projects, it’s a vital enabler for significant shifts in working practices and management styles.

Those of us who’ve been building software for a while and keep tabs on best practice in that arena are unlikely to see version control as anything new—CVS has been around since the 80s, after all—but it’s arguably only now really coming into its own as we see social practices, work practices and coding practices coming together. And of course we’re finally starting to see promising mac subversion clients, which has to help.

On a related note, John Gruber noted a couple of days ago:

It strikes me as an odd coincidence that two serious Subversion clients would debut at a time when many developers are starting to switch away from Subversion to distributed revision control systems such as Git and Mercurial.

You could argue that it isn’t really a coincidence at all. Perhaps the fact that technologists have found a superior model for managing versions, and matured it to a point where many of us are starting to use Git is a consequence of really getting to grips with what tools like subversion allow. We’ve become good enough at communicating the features and flaws of one generation of tools that we can both provide friendly tools, and simultaneously witness a more widespread migration to their progeny?

Nov 06

Content management with subversion

A recent comment reminded me of an old entry proposing yet another project I never had time to follow through with: Using Trac and Subversion with Social Documents. The idea there was to make use of subversion’s utility for version control and trac’s existing frontend for browsing that to present versioned documents.

In hindsight, I don’t think trac would actually be a good frontend for this unless the intended audience was entirely techies. Trac works for those of us who use it every day to follow a variety of projects, and its ability to combine a wiki with version control of the ‘official’ versions of documents provides some interesting ideas, but the interface just wouldn’t work.

But even if I’m unlikely to get time to play with it, I’m still interested in the idea of using subversion as the core for content management. It seems a sensible application of “small pieces loosely joined” to use a proven version control system as one layer in a system. So I’ll be interested to follow Bob DuCharme’s work to use subversion for Digital Asset Management in a CMS.

Bob’s looking into svn’s ability to store arbitrary metadata to store RDF relating to each revision and exploring how its hook mechanism an be employed to make it all work. As ever the proof will be in the interface, but the underlying principles definitely deserve exploration.

Jun 05

Using Trac and Subversion with Social Documents

As I’ve touched on before, one of the areas I’ve been exploring as part of the Social Documents projects is ways of managing document revisions. With a major United Nations summit coming up in September (and the 60th anniversary of the charter on Sunday) I’d like my UN Charter site to be better equipped to handle any amendments to the charter that might be made, but as more and more public documents come online it will be important to be able to look back through their histories and see how they’ve evolved.

The version management tool of choice for many coders is currently subversion, often coupled with trac for project management. So one avenue of exploration that seemed to make sense was to use that pairing to manage a multi-part document.

In order to get cross-referencing and formatting working, I decided to patch trac so that it would treat source code in the subversion repository as wiki text (a relatively straightforward patch as the system is nice and modular). It’s looking pretty good right now, though as yet I only have the Preamble and Chapter I of the charter in the repository.

What I’ve quickly come to realise is that hacking trac to form a core for a social document system would be a lot of work. The repository browsing is nice, but adding and navigating commenting features would be a fairly substantial amount of work, probably more than writing something from scratch. Using subversion at the core, however, may well be a solid way forward — it just needs the right front-end.