Why you should use GitHub: Lessons for the classroom and newsroom
Alexey Zagalsky is a software developer and PhD student at the University of Victoria in Canada examining how GitHub, the Web-based code sharing service, is emerging as a collaborative platform for education. “Educators have already begun to use GitHub to support teaching and learning,” Zagalsky says, “in some cases using it to replace certain aspects of the traditional learning management systems (e.g. Blackboard, Moodle), while in other cases gaining new benefits and capabilities.” The following post, based on an informal scientific study they ran, was originally published on Zagalsky’s website.
Here at Storybench, we think Zagalsky’s argument for using GitHub in the classroom can be extended to the newsroom. GitHub’s collaborative environment and culture of meticulous documentation foster communication, organization, and practicality–qualities every newsroom should strive to improve.
GitHub is a popular Web-based social code sharing service that utilizes the Git distributed version control system. The software development community has embraced GitHub as an essential platform for managing their software projects (see Wired story here). After just seven years, GitHub has nine million registered users and about 20 million unregistered visitors. Similarly, tools such as BitBucket and GitLab have gained popularity in hosting software projects.
More importantly, GitHub is far more than a place to store code, it is a meeting place that supports communities of practice and fosters collaboration. People use it as a virtual meeting place that supports discussions and information sharing.
But GitHub is not only for software developers. We believe it is similar to other tools that are built for developers (e.g., Wiki, Stack Overflow), but end up being adopted by other knowledge workers. Early adopters used GitHub to compose music, to share recipes, and even to store legal documents. For example, Stefan Wehrmeyer, a German software developer and activist, has posted the German federal government’s laws and regulations to GitHub, allowing anyone to track changes, see who made the changes, and why. This not only provides traceability of the changes, but using GitHub’s diff functionality, shows what exactly has been changed. Similarly, the U.S. federal code and the French civil code have been published to GitHub.
Our Study
My fellow researchers and I studied how and why educators use GitHub. In the first phase, we searched for resources (such as blog posts and discussion groups) that described the personal experiences of educators using GitHub to support learning or teaching. Next, we interviewed 15 educators that have used GitHub, including one of the blog authors from the previous phase. We were able to thoroughly investigate the usefulness and potential of GitHub in education. We then proceeded to interview John Britton, a representative from GitHub, in order to gain insights into GitHub’s perspective.
Finally, we conducted a follow-up survey to get feedback on our interpretation of the interview findings.
Why Educators Use GitHub
Traditional learning management systems (LMS) are a pain point for many educators (including myself). The basic purpose of these systems is to allow educators to share course material with the students, and to host student assignments. However, in reality, we end up using a combination of LMSs, and external services, while somehow most of the communication happens over email.
On top of that, access to the course material or the assignments is limited to current students only. Which doesn’t include students who completed the course and want to reuse the material, other educators, or industry people who may share their own experience. This is not a hypothetical situation, I’ve seen this happen first hand, more than once (both as a student and as an educator).
GitHub may not solve all these problems, but our study reveals extraordinary benefits to educators who used it.
Reuse and Sharing of Knowledge
By using GitHub, educators can share and collaborate on course material. When a fellow educator wants to teach a similar course, all that she needs to do is fork the original course on GitHub. And if she improves it, other educators are aware of the changes and can integrate them back to their courses as well.
“Some of the material is shared with the world and some of it is shared with other instructors of other universities…We’re versioning all of it.”
CS professor from University of California at Berkeley
Furthermore, one of the interviewees shared the following unexpected situation:
“I think the repository has something like 200 stars on GitHub right now and as far as I can tell most of those stars are from people who didn’t take the course.”
CS instructor from Harvard University
Suddenly, the course grows beyond the classroom, allowing the exchange of ideas and knowledge among students and external people (e.g., practitioners and experts from the industry).
Transparency of Activity
Using GitHub as a submission platform also makes it easier for educators to monitor student progress, activity, and participation. GitHub has numerous features that support transparency of student activities, e.g., graphs and the news-feed that aggregates all the activity in one place.
“[As an educator] you really see the full history of how the document comes into being, including all the discussions, the former versions. I can monitor who’s active, working in certain teams, which is also handy, practical.”
CS professor from Delft University of Technology
Encourage Participation
By using GitHub educators were able to encourage participation. In one case, the instructor used student logs as material for discussion in class. Another example was where students submitted an issue followed by a pull-request, mechanisms that are usually used to discuss bugs or code changes, in order to change a deadline.
“Last year, I introduced a number of deadlines in between, and the time of the deadline was always Friday evening. And the students didn’t like it, so they opened an issue on GitHub – “Can we move it?”. So I said, I’m open to suggestions, please discuss it. Everyone responded to that issue on GitHub, and then at the end I said “based on the discussion, it is going to be on Sunday”. And then I asked the student who initiated this discussion “Please, open a Pull Request where you provide the fix to the assignment, so the Friday now changed to Sunday”. And that worked really nicely.”
CS professor from Delft University of Technology
Industry Relevance
Educators also use GitHub to provide their students with industry-relevant skills and tools.
“This is very much what people use these days in [statistics], and so I actually consider it a completely valid pedagogical goal in and of itself. And the fact that it makes our work together easier is a beautiful byproduct.”
Statistics professor from University of British Columbia
Furthermore, GitHub can also be used as a portfolio showcasing the student’s work. It is common for employers to evaluate candidates based on their existing projects and activity on GitHub. [Ed note: This is increasingly relevant for programmer-journalists. A GitHub account is a résumé.]
Incidental Benefits
There are incidental benefits as well. Educators mentioned the ease of use, where you don’t have to use complex university systems, instead you can use your existing tools and just “push the changes”. Additionally, GitHub provides free academic licenses, both at the “student level” and at the “organization level”.
How Educators Use GitHub
With course material hosted on GitHub, students (or other educators) can discuss and suggest corrections to the material with the use of Pull-Requests or issues. For example, in a course I taught, students submitted corrections to the material by using pull requests. We didn’t require them to do so, and it was not part of the grade – they did it on their own. Some educators even give extra credit for accepted pull requests. This is a game changer benefit of using a system like GitHub – it improves quality and encourages collaboration, benefiting everyone.
Additionally, educators use GitHub as a submission platform. And there are two main ways to do it. One is more similar to the traditional LMS, where you create a separate repository per student, and it’s private. The second way is having a single repository for the assignment, and the students will fork or branch it. This way all of the students can see each others work, allowing them to collaborate and build on the work of others.
Not Quite Ready for Prime-time, Yet
Our study uncovered how educators use GitHub to support learning and teaching, while extending or even replacing traditional LMSs. However, the implications of our findings go beyond GitHub itself. The emergence of GitHub’s workflow within education is transforming the traditional e-learning model and will better support socio-collaborative learning environments of the future. I would also like to strongly recommend reading GitHub for the rest of us by Jon Udell.
It should be mentioned that GitHub was not designed as an LMS, and even though it can be used as such, there are several challenges involved. The main challenges are the lack of a shared knowledge base of suggested and best practices, and the barriers to entry educators face (i.e., an understanding of Git is required).
“To get the most out of GitHub, you need to understand Git… if you use it the right way it is simple, but somehow with Git you end up with conflicts, and if you don’t understand it, it’s magic!”
CS professor from Delft University of Technology
Planning to Use GitHub? Here’s What You Should Do
Privacy is not all or nothing. GitHub allows for various visibility levels, depending on how you set up the repository. Make sure to explore these possibilities.
Use Markdown when possible. A plain text file format will enable you to take advantage of the diff and line-commenting functionalities. And Markdown’s markup language is very simple to learn, while supporting stylized documents.
Share your experience, and learn how others use GitHub. We, as a community, need your help in contributing to and shaping a shared knowledge base.
Learn Git’s workflow. Understanding Git’s workflow (commits, branches, conflicts) will give you a better understanding how GitHub works and how it can be best used.
Be creative. There are additional ways to enhance the teaching and learning experience. For instance, some educators use Travis CI for automated assignment grading.
Have you used or plan to use GitHub to support teaching or learning? What was the biggest challenge for you? What recommendations do you have for other educators? Please comment below.
P.S. I’d love to meet you on Twitter.
Published Research
Additional details on this study can be found in our paper that was presented at the CSCW 2015 conference, with the slides available online as well. We are extremely grateful to all the interview and survey participants.
I would also like to thank Margaret-Anne Storey, Leif Singer, and Maryi Arciniegas Méndez for providing feedback on early versions of this post.
- NICAR: With the right tools, anyone can be a data journalist - March 11, 2019
- Northeastern J-school alumna Rachel Zarrell makes Forbes’ “30 under 30” - December 4, 2017
- How we built an interactive graphic using carcinogen data from the W.H.O. - November 12, 2015