Switching tools

Every few years it's worth revisiting your working practices to see if there's been a change that you could benefit from. This is a story about our last change, which makes liberal use of mixed metaphors.

Writing software is a bit like writing and editing a book at the same time: once you have a basic story, you add a bit here, and a bit there, making sure that they are consistent; you revise a section making sure that it doesn't contradict anything else; you check that a paragraph or two leads smoothly into the next chapter. There are lots of these changes. Typically, making software is an incremental process of adding little bits together while holding a broader plan in mind. As you make all these little changes, from time to time you take the wrong path. Perhaps you realise that deleting a section was a very bad idea. At that point, you either have to rewrite it or hope that you have a copy of your earlier work to re-use.

But, remember that along the way there were lots of changes! If you make a copy each time you make a change, there is an explosion of copies. And trying to find any particular change becomes a nightmare!

That's why one of the important tools in a professional software developer's toolbox is source control, although as a customer this isn't something you are normally aware of. A source control tool keeps checkpoints of your work. You can see the list of changes you made, and follow the story of the changes: each time you make one, you also make a note what the purpose of that change was.

There are numerous tools for tracking source. Until a few years ago, we used Subversion, but advancements in the world of software engineering lead to distributed source control tools. Because Subversion isn't able to offer this feature, after some investigation of the alternatives, we settled upon Bazaar because we could use it just as well on Windows, Macintosh and Linux computers.

In the last year the Drupal project, the tool we work with most, decided to move to the Git source control tool. (Yes, there is a story why it's called Git.) As a consequence we dropped Bazaar for Git a few months ago. So far it's working well.

Our only issue has been been that Git doesn't deal well with large files: one of our customers has large (circa 2GB) binary files which could usefully be versioned, and at the moment Git does not deal well with these, so we are having to deal with them outside of Git. Nevertheless, on the whole the change has been smooth.

Of course, as a customer you'd not normally know that we've made any change to our processes but it's these changes that help software developers to consistently deliver bigger, better software at the same price.