We have been using WordPress as a content management system (CMS) for Software Carpentry since the launch of Version 4 in July 2010, and while nothing in particular is broken, I'm increasingly dissatisfied with its interface and performance. Looking at other online tutorial sites, there are a lot of things we could add; I'd be grateful for your feedback on which you would actually use, and what we might have missed. Our feature list is:
- Hierarchical organization of topics and episodes. Explaining things is only the first half of teaching; the other half is organizing information into a coherent, comprehensible narrative so that learners aren't constantly stumbling over things they don't yet know. Pages and sub-pages with the occasional cross-link are as good a way to do this as any, so we'll stick with that.
- Video, text, and images for each episode. The combination of video+audio for those who prefer learning by watching, and text for those who'd rather skim things, seems to work well. The text also makes things more findable, since Google and Bing don't know how to search video or images. Going forward, we'd really like to integrate these all better: instead of screen captures of slides, for example, we should use (searchable and stylable) HTML5, but as I've blogged several times, the tools to mix freehand drawing with text aren't there yet. We'd also like to show more live coding in our videos, but again, the tools we need to do this affordably don't seem to exist.
- A way to ask and answer questions about particular episodes. So far, we've been encouraging people to do this via threaded comments on the WordPress pages for particular episodes; the only advance I can think of is to allow people to attach those comments to particular locations in the episode transcript, rather than requiring them to tack 'em on at the bottom.
- A way to report mistakes. I'm not sure whether this should be separate from the above or not. On the one hand, the more channels there are, the more likely people are to miss something (which in this case means duplicate postings). On the other hand, saying, "You misspelled 'mispell' on slide 8," is different from, "I don't understand why you divided by zero on slide 10."
- A channel for larger questions, comments, and discussion. Some of the things people want to talk about—careers, open publication, etc.—aren't tied to specific topics or episodes, though we hope they are at least tangentially related. I can't think of anything better for this than the kinds of forums we've all been using for years...
- Sub-sites for study groups. Our material is designed for self-directed use, but we also want to encourage groups to work through it concurrently—having a study partner who's struggling with the same things you are makes learning a lot more fun. Last autumn and winter we just set up a few sub-pages on the WordPress site, but we clearly need something more: at the very least, something students can write as well as read. A wiki per study group seems like the logical choice, but my experience with wikis has been pretty disappointing: after an initial flurry of interest, they (almost) always seem to go cold.
- Exercises with solutions (either tied to study groups or not). If someone is leading the study group, or if students are doing more than just perusing the material, they'll need problems to solve. I think this is just a sub-case of the item above, though there are obviously questions about when solutions are visible, and to whom.
- A blog. There needs to be a channel for announcements (like this one). There should also be an iCal calendar feed of upcoming events, and both should be echoed to Twitter.
- Aggregation of external comments and discussion. Every time we apply for funding, we have to scour the web for mentions of Software Carpentry to show what impact we're having. I think this information would be useful to other people as well, so something that pulls together links and comments from elsewhere would be very helpful.
- Downloadable source code, data files, etc. Our Subversion repository is publicly-readable, but people regularly ask for a downloadable tar or zip file of source code (and, somewhat less frequently, for the source of the lectures themselves).
- Access to the raw material of videos. The Camtasia project files and the raw audio and video are archived, but not under version control (they are megabytes each). We've only had a couple of requests for these in 18 months, but as new technologies make these more mashable, we should provide them.
One thing that isn't on this list is a Facebook group. That's because we've had two in the past, both of which quickly went cold. I know a lot of people are using it for study groups of various kinds, so maybe it could serve that role, but I'd need to be convinced.
Talking about Facebook brings up the most interesting question of all: how much of this should we host ourselves? Should we run the wiki, or should we grab space somewhere else? What about forums—should we host those, or should we point everyone at some public discussion area. And commenting—there are now web services that allow people to attach comments to arbitrary web pages, so should we rely on one of those, or install and integrate something ourselves? Your thoughts would be welcome...