Nearly 20,000 teachers use GitHub Classroom to manage coding assignments and automate repository creation, especially for distributing starter code to each of their students. But the starter code replication feature was slow and unreliable—taking 15 seconds, on average, per repository and failing five percent of the time. This meant that the creation process would likely get stuck at least once for teachers with a class size of 20 students.
Replicating starter code is one of GitHub Classroom’s key features. Unfortunately, it was unreliable and sluggish, leading to a long-standing source of frustration for teachers. After some research, two of GitHub’s 2019 summer interns, Eric Pickup and Shaunak Pagnis, found a promising solution using template repositories. Template repositories are a built-in feature that allows you to create new repositories using another as a template. It works perfectly with GitHub Classroom since a teacher’s starter code acts as a template.
Eric and Shaunak shipped this feature to the entire GitHub Classroom community earlier this month just as teachers were setting up for the start of school. Now, when teachers create an assignment with starter code, there’s an option to import using a template repository.
Since its release, over 10,000 assignment repositories have been created with template repositories. We’ve seen the success rate improve from 95 to 99.9 percent, and repository creation times decrease from 15 to two and a half seconds on average. We’ve already seen the community’s appreciation for this improvement.
“Classroom used to have occasional problems with its cloning process, where it would sometimes hang or leave an empty repository. I’m thrilled that the new Classroom is ready to go, and just in time with classes starting next week. This should substantially remove the headaches we used to have getting students started on new assignments.”
— Dan Wallach, Professor at Rice University
GitHub Classroom is open source, and you can watch development, make feature requests, or implement changes yourself from our repository. Check out our roadmap to learn more about the future of Classroom. For more information about template repositories, visit our help documentation.