Sebastian and I have been hacking on the curriculum and worksheets for several workshops we'll be teaching this summer; the 3rd summer of POSSE, but also internal training for fellow Red Hatters on participating in large open source communities and growing small ones. (The trick with Red Hatters is often figuring out how open source contributions help their dayjob - it's not that they don't know how to help, it's that they're so busy doing RHEL tech support, processing invoices, defending FOSS software patents, etc. that they feel bad for not having time to also contribute to an upstream software-producing community.)

Thanks to the magic of open-licensed, modular curricula, we're remixing materials left and right; about 80% of the internal Red Hat workshop comes directly from (and feeds back into) material in the POSSE ecosystem, both things from the POSSE summer workshop and from materials POSSE alumni and TOS community members have made. (A special shout-out to Heidi Ellis for WNEC's vital stats checklist, Dave Shein for RIT's community profiling exercise, and Matt Jadud for Allegheny's intro to blogging!) One thing we're rapidly learning is that remote reuse and dissemination of open content curricula is dependent on a huge body of context that's usually stored inside the brain of a good teacher.

For instance, take this worksheet. Simple one-pager, probably trivial to complete for many of us with open source contribution experience.

Now let's take that to a classroom. Suddenly, we're faced with a whole bunch of questions. What do instructors need to know to guide students through this? Do we need an instructor guide? Do instructors need to have open source contribution experience as a prerequisite to leading this exercise? (If so, that dramatically reduces the pool of teachers who can use this in their classes.) Do they need community mentors? (If so, how do they find them?) What infrastructure do we assume is available - one computer per class? Team? Student? What grade level or type of class does this fit into? Does it fulfill any of the numerous computing, technology, etc. standards teachers need to track? How do you grade it? Are there examples of completed work? And so on and so forth.

Every teaching context - every instructor-school-student-course-program combination - is incredibly different. This is why teaching is something that's almost always passed on human-to-human; each replication, each node it spreads to, represents a porting to a wholly new platform.

At some point, I'll have to abandon the "making curricula is like making code, but not" analogy that keeps on running in my head, but it's difficult for me to empty that cup. How do you think about these sorts of things?