10 years in education program technology

This fall, we’re celebrating the 10th anniversary of the Wikipedia Student Program with a series of blog posts telling the story of the program in the United States and Canada.

Ten years ago when I joined the team that started what became the Wikipedia Student Program, we didn’t have any specialized software to organize classroom assignments and keep track of what student editors were doing. We had to work with what the good Ward gave us: the near-infinite palimpsest of wiki pages.

Several years before joining Wikimedia Foundation, I had attended a talk by longtime Wikimedian Erik Möller that really stuck with me. Erik laid out his vision of the wiki as a technology that empowers users to become technologists themselves — to use the flexibility of wikitext and templates to build the tools they need. I found this idea beautiful and powerful. As an historian with no background in programming, I had never thought of myself as a technologist before. But that sense of being able to make whatever you needed for the encyclopedia — that this technology wasn’t magic, but text — is I think what pulled me into Wikipedia in the first place.

For the first several terms of the education program, wiki tools did much of what we needed. We built templates to provide some structure to wiki course pages, and to give instructors a clear workflow for signing up and getting started. We manually collected usernames, to make sure we knew who the student editors were for each course. For my part, I dove deeper than I ever had into templates, building a set of training modules for introducing instructors and students to the Wikipedia basics. But as the number of courses grew, we strained the limits of what was practical with just wikitext and templates. We needed more powerful and specialized software.

Course: Oblivion

In 2012, Wikipedia assignments went — perhaps a little too boldly — where none had gone before: to a new MediaWiki extension built just for the purpose of supporting course projects. The initial debut of this software created a new namespace on Wikipedia, “Course:”. Unfortunately, deploying this new namespace inadvertently wiped out an article about an episode of Star Trek: Voyager, the auspiciously titled “Course: Oblivion“. It had to be turned off immediately, and the joke after that among Wikimedia staff was “whatever you do, don’t piss off the Star Trek editors”. (Looking over the discussions today, everyone seems to have been quite nice about it.)

The aftermath of that deployment is when I first started getting involved with software development. I was tasked to work with the editing community and the developers to find a way forward so that the extension could be re-enabled. My impression at the time was that everything seems so complicated, it’s a wonder that any software ever gets better or that anyone ever understands how it works. But a few months after the initial deployment, I organized a Request for Comment to redeploy the extension in time for the Fall term.

With the extension up and running again, I started compiling an ever-growing list of ways to make this new course management system better — to make work more smoothly with the rest of Wikipedia, to fix the parts that new instructors and students would get stuck on. I also started looking into the code myself. With an enormous amount of help from a new Wikimedia engineer, Andrew Russell Green, I managed to add a new feature to the education program extension, an API for listing all the students in a course and all the articles they were assigned.

The combination of a functional (if buggy) course page system and a whole lot of wiki templates gave the education program a chance to develop over the next few years, becoming an accepted (if occasionally controversial) part of English Wikipedia. It took root in a growing number of other languages as well, as the education team at Wikimedia worked to foster similar programs around the globe. Unfortunately, the extension was increasingly viewed as a technological dead end by the Wikimedia tech team — in fact, one they were eager to turn off because of how much work it took to keep it up and running through each new version of the core wiki software.

The Dashboard

2014 marked a major change for education programs in the Wikimedia community, and a new direction for the technology that supports it. That year, part of the education team at Wikimedia Foundation spun off into a new independent nonprofit focused on English Wikipedia and North America: Wiki Education. I joined as Product Manager, and my first task was to hire a software agency to build a whole new suite of tools to power Wikipedia assignments going forward.

We started out with a web app, the Assignment Design Wizard, that gave instructors a series of choices about how to implement a Wikipedia assignment. At the end, it would translate those choices into a set of templates for a course page and then post them to Wikipedia, integrating with the education program extension. The next term (Spring 2015) we took it much further, launching the first version of the Wiki Education Dashboard. Built with Ruby on Rails and the JavaScript framework React, the Dashboard has been the main focus of our technology efforts ever since.

My role gradually shifted, as I took an increasingly active hand in developing the Dashboard. At first, I learned how to save changes so that I could update instructions and adjust the content of automated wiki edits. From there, I began diving into the Ruby programming language, and was soon adjusting the system’s logic and fixing bugs. By 2016, we were scaling back our budget for software development, but I was also starting to become comfortable enough with the Dashboard code to push things forward myself, developing small new features and doing a large amounts of “refactoring” — rewriting code to make it simpler, more understandable, and easier to extend.

New wikis, new challenges

The Dashboard gave us a platform we could continually extend and adjust to meet the needs of a growing Wikipedia Student Program. With a heroic effort from Wikimedia engineer (and Ruby enthusiast) Adam Wight, we also began taking what we’d built and making into a possible replacement for the MediaWiki education program extension more generally. Wiki Education stopped using the extension when we launched the Dashboard, but it was still being used widely by other Wikipedia education programs globally. To make the Dashboard work for the rest of the Wikimedia movement, we needed it to be compatible with every language version of Wikipedia (and any Wikimedia project). This meant internationalizing the interface, but also integrating the concept of multiple independent wikis throughout the system. The result, after months of work, was the launch of Programs & Events Dashboard in June 2016.

In the years since, the shared Dashboard codebase (which powers both Wiki Education Dashboard and Programs & Events Dashboard) has become a critical piece of infrastructure for not just the Wikipedia Education Program, but a whole host of efforts to bring new contributors to Wikimedia projects. As of October 2020, Programs & Events Dashboard has been used by more than 53,000 people across more than 250 wikis. It has provided a new home for Wikipedia classroom assignments around the world — allowing the MediaWiki education program extension to be retired in 2018.

One of the biggest challenges since 2016 has been keeping up with the scale at which the Dashboard is being used. I’ve had to learn a lot about software architecture and system administration, optimizing the code and finding creative ways to handle the load of tens of thousands of editors, millions of articles, and tens of millions of edits. Another big challenge has been adapting the Dashboard’s user experience to the wide variety of ways people are using, or want to use, it. Initially, it was designed around Wiki Education’s Student Program — college students working on English Wikipedia, with support from Wiki Education staff. Since then, it’s been used for: edit-a-thon series, Wikipedia writing contests, Wikimedian-in-Residence and Visiting Scholar projects, Wikidata curation drives; Wiki Education’s Scholars & Scientists program, and much more. We’ve made it more flexible, added new features to support specific types of programs, and found ways for program organizers and Wiki Education staff to do more with less time.

A big part of the Dashboard story is the interns and volunteers who’ve built new features, fixed bugs, and generally made it better over the years. More than 130 people have contributed since 2015, across nearly 14,000 changes (“commits”). I’m grateful for everyone whose been part of this technology journey with me (both through the Dashboard project, and elsewise), and I can’t wait to see what — and whom — the future brings.

Image credit: Ralf Roletschek, GFDL 1.2, via Wikimedia Commons


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.