Moving to Classroom50 from GitHub Classroom
Recently, GitHub Classrom has been deprecated, with all repositories to be deleted on August 28, 2026. This was a very short timeline for migration, and has left many educators (myself included) nervous about transitioning as a new semester approaches.
I have been using GitHub classroom in two units: Collaborative and Reproducible Practices, and Communicating with Data. For me, it is an excellent tool to (a) give students template code for their work, (b) track their contributions over time and (c) get them used to modern version control practices. Despite the tool being clunky in many ways, and often unreasonably slow to load a single page, I’ve yet to find something that comes close in terms of features.
On the post announcing the deprecation of Classroom, GitHub announced two possible alternatives:
- Codio, which is a paid-for solution which is (in my opinion) unreasonably and unattainably expensive, or
- Classroom50, which is a free solution running entirely inside GitHub.
The second of these options is what I have explored, and I have some good news: it seems to work.
Classroom50
Initial setup
When you initially log into Classroom50, it will seem very familiar. Use your GitHub SSO, and follow the prompts.
Make your organisation first, as you will need to give special access inside Classroom50 to your organisation. **Make sure you enable the access to the organisation as part of your setup
You can do this later, but when you’re not yet comfortable, why make your life harder?
Classroom50 will then make a new repo, called classroom50, which it uses to keep track of assignments, workflows and even scores. Note that by default this is a private repo, and this will later cause you issues. Classroom50 uses Github Pages to host the student facing content, and on a free organisation this is not an option.
You have two choices:
- Buy Github enterprise, which is again unreasonably expensive or
- Make the repo public, and deal with the consequences.
The consequences include things like students being able to see autogrades, and some of the configuration. Just keep this in mind, especially if you are going to be using a lot of autograding.
Classroom setup
Next, you need to add students to your classroom. Unlike in Github Classroom, you don’t seem to just be able to send an open link for students to sign up. I guess with the new repo-based management setup this could make it too easy to spam invites to clasrooms you don’t belong to. Instead, you have to add each student, either via their github username, email or both. You can do this either one by one, or via a CSV upload.
This means that you should probably collect Github usernames of your students at the start of the semester, since many may be using email addresses that are not their university associated ones. I always had to do this anyway, because students would never select their correct username. The upside of this is that you will have record of who is who early on.
Then, send students the organisation invite link. You can find the link in the “Assignments” view, on the lefth and side, under “Students”. It should have the structure https://classroom50.org/organisation-name/classroom-name/onboard. Students need to accept this before they are able to accept any assignments.
Assignment setup
To set up a new assignment, the process is basically the same as the old GitHub classroom (i.e. before assignments were forks of repos). Click “Create new assignment”, and pick a template repo 1. Then, set the due date (which defaults to today), and set up any autograding you like. You can also change the repo slug at this point, which can be helpful if your template repo has a very long name.
You’ll get an assignment link to share with students, which will be in the form https://classroom50.org/organisation-name/classroom-name/assignments/assignment-name/accept. Once the student clicks the button, some scripts will create a deep clone of the starter repository in your organisation, appended with their Github username.
To access student repos, click the student name inside the assignment and then click “Open assignment repo”. This will take you directly to the student repo as per usual.
The CLI
Classroom50 interacts with the gh CLI. I’m yet to try this out but it seems to be cleaner than the old gh classroom extension and will hopefully make mass downloading easier. If you have any experience, I’d love to hear about it. I’ll probably try it out a bit later in the semester.
Summary
It looks like, so far, Classroom50 will be a good replacement for an ailing (and neglected) Github Classroom. The website is still a bit flakey, and there are some improvements (like links disappearing) that can make it a bit challenging, but I feel like this is “early adopters tax” of a new tool. Given the very short closure date of Classroom, and the very recent launch date of Classroom50, I think this tool has been very very rapidly developed, and to me that explains the roughenss around the edges.
Footnotes
If you’re like me you always forget to make the initial repo a template. This option is in repository settings right at the top↩︎