--- /dev/null
+Version control is the most important practical skill we introduce.
+as the last paragraph of the introduction above says, the workflow
+matters more than the ins and outs of any particular tool. By the end
+of 90 minutes, the instructor should be able to get learners to chant,
+"Update, edit, merge, commit," in unison, and have them understand
+what those terms mean and why that's a good way to structure their
+working day.
+
+Provided there aren't network problems, this entire lesson can be
+covered in 90 minutes. The example at the end showing how to use
+Subversion keywords to track provenance is the "ah ha!" moment for
+many learners. If time is short, skip the material on recovering old
+versions of files in order to get to this section instead. (The fact
+that provenance is harder in Git, both mechanically and conceptually,
+is one reason to keep teaching Subversion.)
+
+Prerequisites
+-------------
+
+* Basic shell concepts and skills (`ls`, `cd`, `mkdir`, editing
+ files).
+* Basic shell scripting (for the discussion of provenance).
+
+Teaching notes
+--------------
+
+* Make sure the network is working *before* starting this lesson.
+
+* Give learners a ten-minute overview of what version control does for
+ them before diving into the watch-and-do practicals. Most of them
+ will have tried to co-author papers by emailing files back and
+ forth, or will have biked into the office only to realize that the
+ USB key with last night's work is still on the kitchen table.
+ Instructors can also make jokes about directories with names like
+ "final version", "final version revised", "final version with
+ reviewer three's corrections", "really final version", and, "come on
+ this really has to be the last version" to motivate version control
+ as a better way to collaborate and as a better way to back work up.
+
+* Version control is typically taught after the shell, so collect
+ learners' names during that session and create a repository for them
+ to share with their names as both their IDs and their passwords.
+ The easiest way to create the repository is to use a server managed
+ by an ISP such as Dreamhost, or on SourceForge, Google Code, or some
+ other "forge" site, all of which provide web interfaces for
+ repository creation and management. If your learners are advanced
+ enough to be using SSH, you can instead create it on any server they
+ can access, and connect with the `svn+ssh` protocol instead of
+ HTTPS.
+
+* Be very clear what files learners are to edit and what user IDs they
+ are to use when giving instructions. It is common for them to edit
+ the instructor's biography, or to use the instructor's user ID and
+ password when committing. Be equally clear *when* they are to edit
+ things: it's also common for someone to edit the file the instructor
+ is editing and commit changes while the instructor is explaining
+ what's going on, so that a conflict occurs when the instructor comes
+ to commit the file.
+
+* Learners could do most exercises with repositories on their own
+ machines, but it's hard for them to see how version control helps
+ collaboration unless they're sharing a repository with other
+ learners. In particular, showing learners who changed what using
+ `svn blame` is only compelling if a file has been edited by at least
+ two people.
+
+* If some learners are using Windows, there will inevitably be issues
+ merging files with different line endings. `svn diff -x -w` is
+ supposed to suppress differences in whitespace, but we have found
+ that it doesn't always work as advertised.