Reflective Practice

Version Control ALL the Things

Photo by Karl-Ludwig Poggemann:

By Jesse Rappaport

One of the great things about teaching at CUNY is that because we teach so many classes as graduate students, we get the chance to experiment with different techniques and tools. I took this attitude to heart when designing my hybrid course, and so I decided to try to utilize something commonplace in the world of programming, but comparatively unknown outside of it—that is, version-control systems, or simply, git.

Git is one of the core tools in a programmer’s toolkit. It’s a way of tracking changes in documents that allows you to view the entire history of revisions to a document, collaboratively make changes, and even “wind back” the revision history if you’re not happy with the changes. In brief, you register for a free account on, and then you upload your documents into repositories (basically, folders). You work on the documents on your computer, and then when you want to publish your changes, you “push” them to the GitHub repository (along with comments contextualizing whatever changes you’ve made). The software then registers every part of the document that has changed and updates the current version of the document. At the end of the day, all the stages of development of the document are now publicly recorded. Of course, there are other version-control systems available (for instance, Google docs allows you to review the history of revisions on a document) but GitHub is the one I am most familiar with, and I liked that it lets you publish web pages (not just online documents) that can be styled with markdown.

So, when I was planning the website for my class, rather than going through the effort of setting up a WordPress blog, Google site, or something similar, I realized I could simply use a GitHub repository as my course website. A GitHub page is more “lightweight” than a WordPress site, but also simpler than a Google site—you just type your document in markdown and it is displayed in a simple, attractive, and accessible way. Every repository contains a README document which is written in markdown language (similar to WordPress), and then displayed on the front page of the repository (almost like a very bare-bones blog). So, I just used a README document on my personal GitHub page as my syllabus, complete with links to web sites, readings, course documents, and whatever else I might want to include. Since then, I’ve been updating and revising the syllabus as the course progresses, and all of my changes are publicly documented. This makes me feel like I have a “living” syllabus that is easily responsive to any necessary changes, while also preserving the history of the document. That way, if a student wants to know, say, was this information included in the initial syllabus?, there is a public record available to answer this question.

Although this semester I only decided to use GitHub to manage my syllabus, it got me thinking: how else might instructors use GitHub in the classroom? It depends on the subject matter, of course, but I think that version-control systems like git are extremely powerful tools, both for individual work and for collaboration. Some of the potential applications I could imagine for it include:

  • Students working on a paper/presentation together might use GitHub to exchange ideas for revision. They can each work on the project individually, but then there is also a common space where decisions are officially implemented, so everyone on the team is on the same page
  • An instructor assigns a paper and wants every student to make at least two rounds of revision (maybe incorporating this with peer review); if the revisions are documented on GitHub, then the instructor can see exactly how and when the revisions were made
  • Students, or the instructor, could use GitHub as a tool to develop a study guide, or set of course notes, that would be open to public comment and collaboration.

Like any technology, there is a learning curve for GitHub, so you’ll have to decide whether or not these ideas are feasible for your classroom. However, although git is often used as a “command-line tool” (scary, text-only, black terminal window on your computer), GitHub also offers a desktop client that allows you to use GitHub without ever touching a terminal. Additionally, although it seems to be primarily geared towards technology educators, GitHub offers a service called “GitHub classrooms”  to facilitate class management and assignment review. As an instructor, it’s been great to have a “living” syllabus with markdown and hyperlinks that I can update but still maintain a clear record of change, and so it’s a very dynamic and streamlined way to do a syllabus.

GitHub, or version-control systems in general, have not really taken off outside of the programming world, but they really should! Version-control makes collaborating on software code so much easier, and it would be exciting to see how those benefits might translate to other domains.

Jesse Rappaport is a doctoral candidate in Philosophy at the Graduate Center and a Contributing Writer for Visible Pedagogy.

Leave a Reply