What's Wrong With All This?
This post originally appeared on the Software Carpentry website.
Titus Brown doesn't like this web site. He's OK with the content (I think), but he finds it awkward to use, and while I don't feel as strongly as he does, I accept that we have outgrown WordPress. The question is, what should we use instead? We need a lot more than just a blog and some static web pages, but learning management systems like Moodle weren't built with our ad hoc model in mind (they're really teaching administration systems), and newer tools like P2PU feel like a step backward. I started thinking about requirements for a replacement back in April, but got distracted. Here's a longer look.
Who are we?
- A learner learns new tools and skills.
- A tutor passes on their knowledge.
- A workshop host organizes and runs a bootcamp.
- An author creates content (lessons, blog posts, exercises, etc.).
- An admin manages the web site.
- Innocent bystanders watch and comment from the sidelines :-)
An individual might assume any of these roles at different times or in different contexts. For example, workshop hosts are often tutors, a tutor for one topic may be a learner for another, authors are often admins and vice versa, etc.
What do we do?
- A workshop is a live event, typically running all day for two days. A workshop is made up of several lessons, which may use the content we have online (or at least improvise around it), but which usually remix the order.
- A course is a slower-paced event, typically running for a few hours once a week for several weeks. Courses use our online material (or don't) just like workshops.
- A tutorial is an ad hoc real-time session with one tutor and several learners. Tutorials can be online or live.
- A help session is an ad hoc session between one tutor and one learner. Help sessions can be online or live.
- A content jam is a live get-together to create or update content. We haven't actually had one of these yet, but I'm hopeful...
What do we use to interact?
- Skype and desktop sharing for real-time online events. We've been using BlueJeans for one-to-many tutorials; it works pretty well, but doesn't seem to allow people to use Skype text chat while in a session, and we've never been able to make recording work. It's also very expensive, but cheaper alternatives (WebEx, Google+ hangouts) haven't scaled as well.
- Our WordPress blog. We manually echo posts to Twitter.
- Twitter (tweets aren't currently archived on our site, but should be).
- Web pages in our WordPress site. This includes the online course material, ads for workshops, and a few bits of advertising.
- Comments on the WordPress material. (People have suggested adding forums as well, but I don't believe there would be enough traffic, and we all have too many places to pay attention to already.)
- Videos (hosted at YouTube, embedded in the WordPress site).
- Point-to-point email. (This is usually from and to people's personal accounts, so it isn't archived.)
- Our own mailing lists: one for workshop organizers and content developers, and others for various regions and workshops. These are archived, but since we use MailMan, they're not integrated with WordPress. (I've experimented with various mailing list plugins for WordPress, and haven't been impressed by any of them.) We manage these lists through the Dreamhost control panel.
- Subversion. We have a publicly-readable repository for the course material and a members-only repository for administrative stuff like grant proposals. We also set up one repository for each workshop group, which we keep live for a couple of months. We also manage repos through the Dreamhost control panel, but there's no way to automatically keep their membership and permissions in sync with the group mailing lists.
- EventBrite for event registration. We link to EventBrite sign-up pages for events from the corresponding WordPress pages, but the linkage is done manually. EventBrite also gives us a mailing list for each event; we should use these to contact workshop participants immediately before and after workshops rather than our MailMan lists.
- Google Calendar and Google Maps to show when and where upcoming workshops are. Our calendar and map are linked into a page on the WordPress site, but updates have to be done manually. In particular, we have to remember to add events to both the calendar and the map, and when an event is over, we have to change the map as well as moving the event's page to the "past" section of the site.
- Doodle to schedule tutorials.
One thing we don't have yet is badges. We'd like to issue these to people who have taken part in workshops and the follow-up tutorials (i.e., our "graduates"), and also to instructors and content creators. The Open Badges team is working on a WordPress plugin to do this, which we hope to deploy in June.
How do we interact?
- Synchronously, i.e., taking part in or delivering workshops, courses, tutorials, help sessions, and content jams, both live and online.
- Scheduling events using Doodle.
- Registering for (and unregistering from) events using EventBrite.
- Advertising events using MailMan lists, the blog, and Twitter.
- Updating people on changes to workshops and courses using MailMan lists and EventBrite lists.
- Writing blog posts.
- Writing pages.
- Commenting on blog posts and pages.
- Tweeting.
- Creating or updating content in the main Subversion repository (and then updating the web site if needed).
- Creating and uploading videos, and then linking to them in a blog post or from a page.
- Discussing things on the "dev" list. There's almost never discussion on the per-workshop lists: I feel like there should be (or should be forums or something), but help sites need critical mass, and I doubt we'll ever have it, so I'd rather put energy into teaching people how to use existing online Q&A sites well.
- Giving feedback about events. Right now, we collect good and bad points from people at the end of every workshop, then post them to the blog. We really need to collect feedback on tutorials, and to follow up with people months or years later.
What's wrong with all this?
- Speed and design: the existing web site is slooooow, and no one would call the existing site beautiful...
- Identity: scheduling is separate from registration is separate from the mailing lists and from repositories. Badging will only make that more complicated. Mozilla Persona (formerly BrowserID, and not the same thing as OpenID—are you confused yet?) isn't a complete solution: it handles authentication, but not authorization, and "who can do what?" is an authorization issue. OAuth is supposed to take care of the latter, but it it's a looong way from meeting our needs.
- Integration: connecting our blog to Twitter would be easy—I just haven't bothered to set it up. But tweets should be archived on the web site (both the ones we make and mentions of us), the mailing list archives should be integrated into the site, and so on. Again, there's a lot more to this than just managing identities.
- Features: I'd like a live table of registration stats (how many people have signed up for all upcoming events, and how many tickets remain) on the web site, but EventBrite doesn't have embeddable HTML for that. I'd also like a person-by-list table showing who's on which mailing list, and who has access to which repository, but Dreamhost and MailMan don't offer that. And I'd like the colors of map pins to change automatically once a workshop is over, but—you get the picture. All of these things can be fixed with the right glue code, but I have bigger yaks to shave.
- Conversation: the most important missing element is regular back-and-forth with the people we're trying to help. Again, I think that our goal should be to get them onto existing Q&A sites like Stack Overflow; in particular, we should help them feel confident enough to hang out there, so they don't become part of the dark matter of computational science.
What do I want?
I've written before about the idea of a GitHub for education, but that wouldn't address all of the issues laid out above. (Event registration, for example, doesn't feel like a GitHub kind of thing; nor does scheduling tutorials.) If we had a truly programmable web, I could hire a summer student to assemble what I want, but that's not a yak, it's a herd of angry mammoths: managing identities and permissions for MailMan, EventBrite, Subversion, and the blog in a single place would require a lot of hacking (or a time machine—if I could go back to 1999 and persuade the startup I was part of to open source SelectAccess, we'd be done by now).
So that leaves me looking for an off-the-shelf solution which I don't think exists. If I'm wrong, I'd welcome a pointer—and if there's something we should be doing that isn't in the discussion above, I'd welcome a pointer to that too.