6.23.2009

Real-life Version Control

I had an idea today, about Version Control. Since probably half the readers of this blog don't know what that is, maybe this quote from the Subversion Book will help:
Subversion is a free/open source version control system. That is, Subversion manages files and directories, and the changes made to them, over time. This allows you to recover older versions of your data or examine the history of how your data changed. In this regard, many people think of a version control system as a sort of "time machine."
Subversion, and all the other version control systems out there, were generally designed by programmers, and they tend to also be used by programmers. This is because they tend to include tools that are good for writing code, like "diff," and that programmers are the kind of people that like to find technological solutions to problems.

Other people may have their own methods for version control, usually with pretty bad big-O complexity. Which is computer-science-speak for "wastes hard drive space, and runs slowly." Have you ever seen something like this on your computer?

project052809.xls
project052909.xls
project052909 - 2.xls
project053009.xls
project053009 fixed.xls
project053009 final.xls
project053009 with changes.xls
project053109 with changes 2.xls
project060109.xls
project060109 - new.xls
project060209.xls
project060209final.xls
project060209 really final.xls
project060209 FINAL VERSION.xls

... you get the idea. You don't want to lose track of old versions, because every time you delete
or change something, you know that you might later change your mind and want to revert back to that point. Well that's the whole point of version control, except that it's automated so you don't have to keep changing filenames. Plus it's done in a very clever way so that if you have 25 versions of a 400MB file, it probably won't take 10GB of file space to do it. If you like, you can have multiple people accessing the same repository, which means no more emailing the same file back and forth with minor changes. Even more exciting: You don't need anything fancy like a system administrator or knowledge of how to use Linux.

Anyway, the idea that I had today was "What if other types of engineers could use version control? What if we could version-control real-life things?" So I had an idea for a cute little video that could be used to demonstrate the functionality of version control systems. As far as I know, no one has yet created such a video. And by that I mean I looked on youtube for a few seconds and didn't find anything. Here goes:

A girl opens a drawer and gets out a blank piece of paper. A little blue question mark appears, hovering over the corner of the paper. She gets a pencil and starts drawing a picture of a tortoise. After a little while, it looks like a cute little tortoise, not bad for a first draft. She looks at the front of her desk and sees a little machine with several big friendly buttons on the front. She presses one that looks like a green arrow. Suddenly,
something pokes out of the top of the machine, and a laser shoots down and scans her new drawing. The laser mechanism retracts back into the device. The girl looks down and sees the the blue question mark has been replaced by a green circle.

The girl now cheerfully grabs a bunch of permanent markers from a cup on her desk, and begins to color in her drawing. As soon as she starts drawing, the green circle floating above the corner of the drawing turns red. She keeps going until the tortoise is looking rather adorable, and pushes the green button again. The device laser-scans her drawing, the circle turns green again, and she walks away, satisfied with her new drawing.

Cut to her friend's house. Her friend sits down at his desk, with no paper or drawing of any kind. But he does have the device. He presses a gold button on his machine, and suddenly an exact copy of the girl's drawing appears on his desk, with the green circle hovering above it. He grabs an orange marker and a black marker and starts drawing a tiger, standing behind the tortoise. The circle turns red. The tiger is, of course, ferocious. But it is also very badly drawn. Not seeming to mind, the boy hits the green button proudly. His drawing is laser-scanned and the hovering circle turns green.

The girl now comes back to her desk, and the drawing still looks like it did when she left. She hits a button on the version control device and it instantly changes to include the tiger. She picks up a black marker and adds an outline to the tiger to make him look less sloppy.

Etc. Eventually there would be a part where something goes terribly wrong, and they use version control to undo the changes. Anyway, that's my idea...

No comments: