Version Control for Regular People

Here is something I always tell to fledgling programmers, interns and the like: if you have made something, and it would take you more than 5 minutes to recreate it from scratch, it needs to be under version control. Why? Because you will fuck up at some point. You will overwrite that file, blow away that directory or something like that. Or you will simply make a lot of stupid changes and at some point you will want to go back to the “last working version” of your code, and then what do you do?

Me? I just roll back to the last commit and I’m good. Source control saves lives. If your code is on Github, then you will never lose it, never completely fuck it up and never break it beyond repair. If you are not using source control you are doing it absolutely wrong. And no, I don’t care if you are using Git, SVN or Mercurial. As long as we don’t have to collaborate, you can use whatever the fuck you want. As long as you are using something, you are doing it right.

And no, regular backups are not a substitute for version control. Backups are important, but only as means of disaster recovery. They come in handy when you drop your laptop into the toilet or if a UFO crashes into your house and explodes. But they tend not to include archival copies of your files. Think about it – what is better: having backups of the last 7 days in one place, or backups from yesterday in 7 places? Actually, don’t answer that.

Do I need to explain why 7 exact same backups of your latest state are better than a historical archive? Because if something happens to a backup from yesterday you just irreversibly lost a day of work because your backup scheme sucks. If you lose work because you deleted something and did not notice it between backups, then you just lost work due to your own stupidity.

Backups protect you from unforeseen disasters like alien abductions or spontaneous combustion. Version control protects you from your own dumb self, or your dumb coworkers / collaborators who like to ruin your work with their “valuable input”. Does that make sense now?

Here is my problem: teaching regular people to use version control is impossible. It just can’t be done in this universe. There is just no possible way a regular Joe can be convinced to start using Git. You know how I know? Because it is fucking near impossible to teach programmers to use it.

Don’t get me wrong – I love Git. I think it is an amazing tool and I use it every day. One of the things that Git is not, is user friendly. But that’s fine – it does not need to be an idiot poof tool because it was never intended to be used by idiots. It is a power tool for professionals and as such, it works very, very well. I definitely would not want Git to become dumber so that it could be used by regular folks – that would be counter productive.

What I would like to see is an alternative. I would like there to be a Git-like tool targeted at non-programmers. I would like it to be fully automated, hassle free and focused on revision control rather than on collaborative features. Does anything like that exist out there?

Well, yes it does… Kinda. There is no single dedicated tool that I could point everyone too, but you can get this functionality as a side effect. For example, if you are a Dropbox user you get it for free, built into their web interface:

Dropbox Revision Control

Dropbox Revision Control

Yes, Dropbox actually puts everything you drop into it under their own, home baked version control. Every time you modify a file, they keep the old version around in case you decide to change your mind. Their history tab also lets you restore accidentally deleted files. This is not necessarily the same thing as git, but it is better than nothing. The only problem with Dropbox is that they keep your files on their servers, and they decrypt and read them if they wanted to. But if you are not paranoid or bound by restrictive confidentiality agreements, it is actually a great service. I have been using them since 2008 and have to say they are just about the best thing I have seen on the internet.

Dropbox and Google Drive (which has very similar revision control features) are my two go-to tools when I’m trying to maneuver users into responsible computing paths. The idea is that even if they never learn to use the revision feature, as long as their files are in the Dropbox or Google Drive folder I can go in and extract archival versions for them. Since the archival snapshots are completely automated (triggered by write operations within said folders) the users can be completely oblivious, and still covered by a fairly robust revision control system.

I would set everyone up with Dropbox or Google Drive account, but frequently this is not possible. As safe as secure as these services might be, sometimes I am legally prohibited from putting data on the cloud, because it is not my data. At work, our clients frequently make us sign confidentiality agreements that among other things say “if you ever dare to put these files on any kind of cloud type service, we will send a firing squad to your office”. So sometimes I wish there existed a local version of DropBox that I could deploy just for version control and without the Cloud back end.

Mac users are lucky because they get exactly that by default. Their machines have system wide version control for all their documents since Lion:

Apple System Wide Version Control

Apple System Wide Version Control

Unfortunately (or perhaps fortunately – depending on how you look at it) Mac users never really come to me for computer help. Especially not with the “I have fucked up my work, and I need you un-fuck it for me”. I’m not sure if this has something to do with the quality of OSX as a system, or the ability of Mac users to actually not be careless and stupid with their files. Perhaps it is both. Between this feature and Time Machine Mac enthusiasts seem to be pretty much covered on all fronts. Mac users also tend to genuinely enjoy working on their machines. Some people see this as insufferable smugness, but I find this attitude incredibly healthy and positive. As smugly proud Mac user will actually go out of his way to learn useful power user tricks, just to stick it to his PC using friends. Windows user on the other hand frequently abhor all the technology. An average mac user will talk your ear of about the things his computer can do, whereas a typical Windows user will spend three hours bragging about just how computer illiterate they are.

So for better or for worse, I am stuck supporting Windows users both professionally and in my personal life. And they don’t yet have a system wide version control, and probably never will. Why? Because as evidenced by Windows 8, Microsoft has completely lost its way and decided to set their robust and profitable desktop platform on fire, and pour all the money into their rapidly sinking mobile technology. So spending time on a feature that could actually be useful for desktop users is probably prohibited over there right now.

Is there a way to get Apple like, fully automated version control on Windows via third party application? Well, yes and no. Apps that do it exist, but none of them has the robustness and polish that I would like. So far I haven’t seen anything out there that I would want to slap on my default laptop images and send out into the field with the mobile computing disaster magnets that we call the users. Probably the most promising tool I have seen out there is AutoVer. Sadly it is a little buggy, and not updated very aggressively. It’s good enough for personal home use, but not ready for production.

Have you seen good Windows services that do this sort of thing locally (without the cloud)? Does your workplace use any version control software for regular users?

What is your favorite version control? Git? Mercurial? SVN?

Let me know in the comments.

This entry was posted in sysadmin notes. Bookmark the permalink.



12 Responses to Version Control for Regular People

  1. AP² PORTUGAL Mozilla Firefox Ubuntu Linux Terminalist says:

    I know you distinguished backups from version control, but Crashplan does actually keep old versions of files (“forever (unless you tell us not to.)”) and lets you restore a particular one. I can’t say how reliable it is, since I’ve just started using it, but the feature is there ;)

    Reply  |  Quote
  2. Eric Daum UNITED STATES Google Chrome Ubuntu Linux says:

    I was always under the impression that there was something like that built into most Office Software. I have never needed it so I can’t even begin to tell you where to find it.

    Reply  |  Quote
  3. Luke Maciak UNITED STATES Google Chrome Linux Terminalist says:

    @ AP²:

    Nice! I did not know that about Crashplan. This doesn’t help much with stuff that can’t be hosted on 3rd party servers for legal/privacy/nda reasons but useful when recommending personal backup strategies to people.

    @ Gui13:

    Thanks, but fossil looks much like a traditional version control product. Granted, I only scanned through their front page and docs, but the workflow seems fairly similar to what you would do with SVN or Git. Does it have “automagical versioning for lusers” mode?

    @ Eric Daum:

    Yes, Word does have this (I don’t think Excel does) in but it is a very flawed implementation. Essentially what happens is that Word keeps the old revisions in the same file. So each time you hit the save button, Word appends some sort of proprietary binary diff to the file. Now if you combine this with the way regular user work with Word documents this has a way of getting out of proportion. I have seen a 3 page Word document that over the span of several months grew to about 160MB. It was more or less a form letter and people were using “the latest version” as a template for the next thing they needed to send out and it kept ballooning out in size till I disabled the versioning.

    Reply  |  Quote
  4. TopperH ITALY Google Chrome Linux says:

    Personally I use git for my projects and also for the /etc/ directory (commits triggered by a cron script) of my machines.

    Anyway my father’s Windows machine has the home folder synced and versioned by my own owncloud server. He doesn’t even know about the details, but he knows he can call me to retrieve the original version of that excel file that he has modified several times.

    Reply  |  Quote
  5. kaotik4266 AUSTRALIA Google Chrome Windows says:

    I’ll give another vote for Crashplan. My personal stuff doesn’t really need a formal versioning system beyond what Crashplan offers and their restore functionality is really solid, quick and easy to use. It’s a paid service, but for what you get it’s really good value.

    Reply  |  Quote
  6. Mart SINGAPORE Mozilla Firefox Windows Terminalist says:

    Windows has its own thing too, call “Shadow Copy”, since Vista. It’s about as useful as Time Machine, but not as glossy and user-friendly. Thus, not many people are aware of it.

    You can also check out AeroFS, who claims to be some sort of Dropbox clone, but for a local LAN setting. It’s in beta right now, so will need to request for an invite.

    Reply  |  Quote
  7. road UNITED STATES Safari Mac OS says:

    Crashplan also works in Linux and can even be made to work on GUI-less servers…

    Reply  |  Quote
  8. mercurial, for sure.

    Reply  |  Quote
  9. HVACengi UNITED STATES Google Chrome Windows says:

    I use Windows Home Server (V1) to create daily incremental backups both at the office and at home. I also use Live Mesh to sync to 3 different computers. I’d like something with a bit more regular timing, but at least this way I have both incremental backups and multiple location backups. It doesn’t help me if I delete a file the same day I create it, or if I want to go back to an hour earlier, but it has saved me more than once.

    I’m really curious about AeroFS listed above. It looks like it’s nicely cross platform. All too often a cross platform program is written for [insert OS] first, and the instructions for other OS’s are rather complicated (try explaining to a normal user what IIS and PHP are, let alone how to install them and their associated components). I’ve put in for an invite, and will share my experience once I get it. Frankly, it may finally make it so I can leave behind my Windows only architecture. I’ve been so addicted to Live Mesh for years that any time I tried to switch, the inability to easily sync between Windows and Linux has held me back.

    I would actually be fine with using Git, as there are enough simple installations available on all platforms, and I could share scripts to automate the process. But I have an issue with using a diff based solution for binary files (word docs and accounting databases), and purging old commits to save space would be harder to automate.

    Reply  |  Quote
  10. iwre0 SPAIN Mozilla Firefox Ubuntu Linux says:

    i’m a programmer and i get paid for my work. I make some personal stuff for me, because i like to code, and i use it in my guruplug or where ever i want.

    I think you shouldn’t put your programs that a business paid for them in strange servers that you don’t belong to you. Those servers are owned by other business and you never get sure about the use of all that information you upload.

    If you are a IT guy you are supposed to know how to backup the programs paid with business money, but please dont use the cloud. Use your own servers, hard disks,..

    In the other hand i have my personal stuff, that i like to share, in several ways (blogs, pastebin, github…) and then i can use the cloud.

    Reply  |  Quote
  11. Luchs Opera Windows says:

    Your paragraph about Windows 8 is actually kind of wrong. Windows 8 does have a “File History” feature found under Control Panel\System and Security\File History.

    Here’s what it looks like: http://imgur.com/a/WYq15

    Reply  |  Quote

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>