This site is an archive; learn more about 8 years of OpenHatch.

The OpenHatch training missions are a group of interactive web pages for learning skills you would use when contributing to free software. It’s time to announce that more than a thousand people have successfully used them!

We at OpenHatch have long suspected that the training missions were the most used, well-loved portion of this website. People regularly give us lots of feedback on the existing training missions and request new ones. We know of a few free software projects, such as GNU Mediagoblin and WordPress, who link newcomers to our training missions in their IRC channels or as part of their new contributor documentation. When OpenHatch runs in-person events, such as OpenHatch Comes to Campus workshops, we use the training missions there too. And it makes intuitive sense to us that simple, interactive introductions to common tools used in free software (and software development generally) would be useful to many people. Unlike a long tutorial or text-heavy manual, a training mission gives you a short, concrete task to perform, a few levels of hints, and lets you know if you succeeded.

We’re always working to better track site usage and performance and keep better metrics. Recently, while preparing a talk proposal for OSCON, we looked up how much the training missions have been used.

Total # of missions successfully completed: 1303

for step_prefix in ['tar', 'diffpatch', 'svn', 'git']:
    relevant_steps = Step.objects.filter(name__startswith=step_prefix)
    stepname2person_ids = {}

    for step in relevant_steps:
        person_ids = StepCompletion.objects.filter(step=step).filter(is_currently_completed=True).values_list('person_id', flat=True)
        stepname2person_ids[step.name] = list(person_ids)

    person_id_lists = stepname2person_ids.values()
    person_set = set(person_id_lists.pop())
    for person_id_list in person_id_lists:
        person_set = person_set.intersection(set(person_id_list))
    step_prefix2person_count[step_prefix] = len(person_set)

print sum(step_prefix2person_count.values())

# of users who’ve completed at least one step in a mission: 1137

>>> StepCompletion.objects.filter(is_currently_completed=True).values('person_id').distinct().count()
1137

Most popular mission: Using tar

>>> Step.objects.annotate(num_completions=Count('stepcompletion')).order_by('-num_completions')[0].name
'tar_extract'

Wow!

We began writing the training missions in the summer of 2010 as a Google Summer of Code project. One and a half years later, we’re ridiculously excited that the training missions are really, actually being used by human beings. We’re also looking forward to making the training missions even better! Last week I finished an audit of the training missions based on our missions pedagogy guidelines to see where our older missions met our standards and where there was room for improvement. (Thanks to Mel Chua for her help in creating the guidelines!)

We are also working on standardizing the code style across the training missions (and documenting the results) so that it will be easy for others to write new missions and plug them into the OpenHatch codebase. We have a number of open requests: new training missions, possibly covering topics such as IRC, bash and bug triage.

Through feedback, we recently added a full tutorial on setting up a Windows machine to be able to easily go through the missions. We are also fielding requests and suggestions for improved plot lines.

If you haven’t tried out the training missions recently, we’d love it if you checked them out and gave us feedback. Or patches! We always need more contributors to write creative stories and code the backend that makes a mission real. So far, 24 different people have contributed to OpenHatch’s training missions code–not including people who have filed bugs or given other non-code help. It’d be great if you were the 25th.

If you have an open source software project of your own that uses a piece of technology covered by one of our training missions, please consider linking to it in your new-contributor documentation!

OpenHatch is an open source community and now a non-profit. We’re always looking for ways to make open source communities more inviting and active. Get in touch!

Write a comment