Version Control for Everybody

I once listened to a professional SF writer lecture about his craft. A wonderful fellow — highly competent, writes great stuff, and a super nice guy to boot. His lecture included all sorts of useful and insightful tips. But the part that stuck in my mind to this day was what he said around how he handled backing up his work in progress:

“I have a folders for each story. Every day, when I’m done writing, I click Save As and save my story as ‘name-of-story date.doc’. Then every few weeks, I burn my story folders to a new CD…”

When confronted with a complex software-related problem, “regular” people develop all sorts of rational responses and workarounds that give those of us in the software industry the vapors. Nothing captures the disconnect between software people and regular people better than Yishan Wong’s breakdown of what’s wrong with OpenID:

To answer the most immediate question of “isn’t having to register and log into many sites a big problem that everyone has?,” I will say this: No, it’s not. Regular normal people have a number of solutions to this problem. Here are some of them:

  • use the same username/password for multiple sites
  • use their browser’s ability to remember their password (enabled by default)
  • don’t register for the new site
  • don’t ever log in to the site
  • log in once, click “remember me”
  • click the back button on their browser and never come back to the site
  • maintain a list of user IDs and passwords in an offline document

These are all perfectly valid solutions that a regular user finds acceptable…

One of the tragic things about this disconnect is that Actual Good Ideas that software people take for granted end up taking decades to migrate out to regular people in a form that they can actually use. As an example, take backup — an absolutely critical feature that until fairly recently, regular people would implement (if at all) by occasionally remembering to burn some files to a CD. Pathetic. And by “pathetic,” I mean we the software industry, not the poor end-users.

Which brings us to version control. Version control is one of the few innovations in the field of software engineering that is an unalloyed good. Even a creaky, antiquated version control system is much better than having no version control at all.

Of course, version control systems are designed for software construction, which means they have tons of complicated features for nerds. Version control for regular people would look something like this:

  • It would work automatically on all of your documents.
  • It would save new versions for you in the background.
  • It would have a friendly interface for going back in time and retrieving old versions.

This is what Apple appears to be shipping in OS X Lion. A simple, friendly, OS-level versioning service for apps to hook into. In one master stroke, Apple has just granted millions of people the same power software engineers have enjoyed for years: the ability to author without fear. This is huge.

Granted, it took about three decades to get to this point, but still — this is a great moment for anyone who does creative work. And if you don’t use OS X, cheer up. Any operating system worth using will be implementing something similar very soon.