Don’t make me think … about backups and version control
November 25, 2008
I admittedly have little sympathy for those who lose weeks or months worth of work because their hard drive fails or their laptop is stolen. The way I look at it is if you can’t manage to make backups of such valuable work, you deserve the data loss. It’s not like backups are complicated to do these days. Simply copy your precious files to a USB stick or SD card periodically. Flash storage is insanely cheap these days, hardly ever breaks and can be placed in a safe location because it’s so small. It’s also available in adequate sizes nowadays, even though that’s probably not necessary. After all, your typical PhD thesis won’t occupy gigabytes.
All this is jolly good, it just has one fault: you. Sure, if you’re anything like my dad (i.e. disciplined), it will work for you perfectly. But let’s face it, you’re not. And you’ll always remember to make a backup just as you’re getting ready to head out the door, trying to catch a train or plane (where you may lose your laptop, hence the necessity of a backup). A humane computer system would take care of backups for you. Indeed, that’s what solutions like Apple’s Time Machine are about. Coupled with a network-based storage (Time Capsule), backup is an absolute no-brainer. My mom has periodic backups and she doesn’t even know it. I think solutions like this should be part of every computer system. In fact, I wish there was some way to create incentives for software developers to not make their lives easier but the lives of their users.
For instance, here’s another idea that I think should be built-in: version control. Whenever I start a new project, be it a software project, a book, a business in software training or currently my Diploma thesis, the first thing I do is set up a subversion repository (I could use something else, but subversion is what I’m most familiar with). I even keep all the presentations I ever gave at software conferences in version control. That way I not only have instant off-shore backup of my work (because the repository is on a separate server), I also have all the benefits of version control. Not that I need concurrency or merging because I work by myself. What I’m talking about is, for instance, the ability to revert your working copy to a working state when you’ve tinkered with something and broken it. And even if you hadn’t broken it and I decided to keep the modifications, you can still see what those were later in the process. That’s particularly useful when you’re modifying stuff created by somebody else.
You might argue that the casual user won’t need such a feature, but I disagree. One of the biggest improvements text editors have over the typewriter is the fact that you can work with the text before it’s set in stone (in other words, printed on paper). This gives you flexibility and makes you worry less about gettin git right the first time. Why doesn’t that notion extend to a larger time scale? Many applications nowadays have an undo feature. Why doesn’t that feature work two months after the fact? And please don’t quote me some implementation detail… disk space is cheap! I’d rather trade in some UI glitz for a feature like this.
Just don’t make me think about this stuff, please.