Ever since I read the subversion manual I’ve been really impressed with version control, and with subversion especially. Like any other student in CS I’ve had my fair share of “Where is the latest version of my assignment? Crap, it’s on my desktop at home and it’s due in two hours”. And subversion got rid of that problem for me.

A couple of times I did a 30-minute tutorial on subversion to a class of CS students. I did my best to emphasize how easy it is to use and how significant a problem it solves. I’m sure I convinced a few to use it, but not nearly as many as I should have.

I guess there are two significant reasons why students don’t bother with subversion:

1 – No time to learn it

Even though there are really just 5 commands one needs to know to make good use of it – it’s 5 commands the students don’t feel like learning.

One shouldn’t blame the poor students, they already have so much to learn, especially in the beginning of a program. They have to manage their time just like anybody else, and learning something that’s supposed to save them from trouble at some undefined point(s) in the future isn’t high on their list of priorities.

2 – No server

Most people aren’t as impressed as me with Linux servers and don’t have their own linux box they could use for a subversion server. And if they do they’re on Rogers or Bell and they’re not allowed to have a public server on that connection.

So even though the subversion server installation is possibly the easiest of any serious server, and creating a repository can be done in a 2-line shell script it’s really beyond the average student’s ability.

All this is quite unfortunate for many reasons, among them:

  • In the real world, unless a CS student ends up being a sysadmin or a webmaster – they’ll be required to know and use version control. The concepts of how version control works should be learned in school.
  • Graduate students work on years-long projects. Working on a piece of code for a year with no version control is wrong for so many reasons I won’t bother explaining it here.

I’m working on a solution for this problem. That’s all I’ll say for now (until I work out the logistics).

Excercise for the reader: figure out what I called this project (I registered the domain name as soon as I decided to take the project on).