Version Control

By Jonah Kagan

July, 2012

When programmers write code, they use version control software to track their changes as they work. It’s similar to how writers work in drafts, except instead of adding a number to the end of the file name each time they save, they have tools that handle all the details for them.

When I decided to start writing essays, it seemed natural to use version control to manage my drafts. So I set up Git, my weapon of choice, to start tracking my edits. Every time I make a change to an essay, I “commit” it, which tells Git to remember what changed since I last committed.

Git is different from, say, the autosave feature in Microsoft Word, in that I have to tell Git when I’ve made changes. Why not use a system that notices changes automatically? Well, when it comes to programming there are plenty of reasons. For instance, your code might not be in a working state when the autosave kicks in, and when working collaboratively, that could mean breaking things for somebody else.

But you can’t break anything when you’re writing, and plus, I’m working alone. So why use Git? Well, in the beginning, I chose Git out of habit. Now I’m starting to realize that Git is having an interesting effect on my writing process.

Every time I commit changes, Git asks me to write a short message summarizing the effect of the changes. As a programmer, the messages are useful if I need to undo a commit or see what my teammates are working on. As a writer, the messages themselves aren’t very useful, but having to write them forces me to think about the effect of the edits I’ve made. Thinking about my edits makes me take a step back and reflect on the essay as a whole. The question “What did I change?” leads quickly to questions like “Why did I change it?” and “How did that change affect the essay?”

Looking at one’s work from a macro perspective is a valuable skill to develop as a writer. And it’s a difficult one–that’s why we have editors, after all. Git’s commit message prompt is like a little reminder to be my own editor.

I have a feeling there’s also a second, more subtle benefit that comes from writing commit messages. Besides being more conscious of the essay I’m working on, I also think more about my writing process. This hasn’t led to any great insights yet, but I like to think of it as an investment in the future. If I put in a little extra effort now, maybe I’ll benefit from it in the future.

This idea of trading small amounts of work for larger benefits down the line is the principle that underlies version control in general. Programmers are hoping that if they ever have to undo changes in the future, keeping track of all the changes along the way will be helpful. I’m hoping that all the little bits of self-observation that come from writing commit messages will congeal into a more significant insight.

I’m not the first to think this way. Buddhists assign great importance to a practice they call mindfulness, which consists of trying to be aware of one’s mind and body in the present moment. Mindfulness is one of elements of the Noble Eightfold Path–the path to enlightenment. Some practitioners try to achieve mindfulness through longform meditation. Others, though, try to live with mindfulness as they go about their everyday activities.

The hardest part of trying to live with mindfulness, though, is remembering to do it. There are millions of stimuli constantly provoking our attention and shifting our thoughts. Being aware of your mind and body is easy while taking a hot bath, but much harder when navigating traffic or having a conversation.

But this is the nature of the practice of mindfulness. Practicing mindfulness requires being mindful enough to remember to practice it. Paradoxically, using version control when I write has prompted me to be more mindful without having to think about it. Assuming mindfulness is something to be desired, perhaps version control could be used to stealthily promote mindfulness in other areas.

For instance, what if version control was used in schools to track students’ homework and tests? If asked to write summaries of their work, students might become more conscious of their own learning. More conscious learners would not only learn better, but also might be more invested in their own learning. Many recent attempts to inject technology into the classroom focus on aggregating data for teachers or administrators. While version control would aggregate data as well, the real benefit would come from the hidden side effect of promoting mindful learning.

And what about version control on the larger scale? What would it mean to apply version control to governments? Sure, we probably couldn’t undo the results of an election that didn’t work out so well, but could we create a culture of mindfulness, where politicians actively log and reflect on their work?

If these ideas don’t seem feasible, just think about how much data we log in our everyday lives on email or social networks. We’ve become quite adept at archiving our thoughts in the process of sharing them with others. The idea with version control is to turn the focus back onto ourselves. We’re used to telling our computers what we’re thinking. The question is, are we willing to think about what we’re telling our computers?

Thoughts? Am I crazy?
Let me know: jonahkagan@gmail.com