After Thursday's post-mortem on the latest offering of Software Carpentry at the Universitiy of Toronto, I had a chance to talk further with Jon Pipitone, who was one of the tutors (and who is just wrapping up an M.Sc. looking at code quality in climate models). We got onto the topic of infrastructure for Version 4, which needs to be settled quickly.

  1. a way to deliver content to students, including text and images, audio/video, exercises (with solutions), sample data sets, and useful software;
  2. a way for students to feed questions back to the course organizers (asynchronously through email and bulletin boards and/or synchronously through VoIP and desktop sharing);
  3. a way for instructors (who may or may not be contributors) to respond to students;
  4. a way for lay contributors (who may also be students) to offer new content, from pointing out typos to providing exercises or whole new lectures; and
  5. a way for core contributors to manage and edit contributions, create some of their own, et cetera.

This description implies some social infrastructure, including:

  1. some core contributors who are creating lots of course content, and probably teaching the course as well;
  2. a second tier of instructors who are creating less content but also interacting with students; and
  3. students, who may be registered in a course of some kind or working through the material on their own (and who may eventually move up to answering others' questions and eventually to creating content).

This sounds like what you'd find in an open source project (regular users, occasional testers or bug reporters, and contributors) at least as much as it sounds like a traditional college course (students, teaching assistants, and professors). The most important difference is that the divisions between the latter three roles are sharper and deeper than the divisions in open source projects: some undergrad students eventually go to grad school and become TAs, and some of those eventually become faculty, but it's almost unheard of for someone to be in two of those categories at once, or to "bubble up" from one to the next based solely on ability and enthusiasm. That must happen if Software Carpentry is to become self-sustaining: while over 140,000 people have looked at the existing material in the past five years, only three dozen have ever sent bug reports, and only four of those have contributed any substantial content. Whatever we use to accomplish tasks 1-5 above must therefore draw people in and make it easy for them to use, ask, answer, and contribute.

With that out of the way, here are a few options for discussion:

So how do they stack up?

Project Retro Social Turnkey Wiki
Easy to set up/administer/maintain? +1 0 0 0 +1
Easy for people to contribute? -1 -1 0 -1 0
Comes with everything? 0 -1 0 +1 0
Flexible content delivery? -1 0 -1 +1 -1
Overall -1 -1 -1 -1 -1

A bit of explanation:

As always, I'd welcome your thoughts…