Project maintainers on the cloud coding site GitHub may have noticed a recent surge in “open source ambassadors” from The Australian National University (ANU).
More than 300 bugs were fixed in a week’s time by 53 teams made up of 260 students who blitzed their way into GitHub to fix bugs and propose new features for open-source software as part of a course called Software Engineering (COMP2120/6120).
The class is taught by Associate Professor Alex Potanin, who is teaching his first course at ANU after arriving in June. Associate Professor Potanin said that he completely redesigned the course “to emphasise open source and its importance in the modern microservices-oriented development approaches”.
ANU student Amelia Genova, whose team of five decided to identify and fix issues in the code for JavaParser, said, “it was an interesting experience to see how to contribute to an open-source project”.
Genova said it was more fun to work and learn about computing “out in the industry and beyond the academic setting”.
Her teammate Jacob Weston-Davis agreed. Compared to his previous group projects, he said, “ I definitely felt a lot more responsibility and pressure to make sure the code I was submitting was well-written and documented properly”.
“The idea of not wanting to waste the maintainer’s time was core to me in how I approached the assignment,” Weston-Davis said.
The ANU School of Computing’s teaching philosophy is to begin with computing foundations and build up to the coding languages, applications, and industry tools that are relevant in a rapidly evolving industry.
“This is the course where our students learn large scale programming,” said Associate Professor Potanin. “They know how to program on the small scale, but if we just throw you into a large company, the planes will start crashing because you don’t know how things work. So, we teach them the techniques and knowledge required for working in a large company.”
With marks for the students’ optimised coding dependent on acceptance and integration in real-world software packages, Potanin has gone a step beyond bringing current industry tools into the academy; he’s intertwined them.
Virtual apprenticeship starts with a request
The process begins with a “pull request” by which the students offer to address an issue that tech purveyors have listed as in need of addressing. The students could also make suggestions for other improvements not yet envisioned.
If the pull request is accepted, a virtual apprenticeship begins in which the purveyor shares a portion of the code with the students, the students enhance it, and then submit it back to the purveyor.
The goal of GitHub users and purpose of the site is to have these fixes accepted by the purveyors and merged back into the code as a permanent fix. With over 300 instances of successful pull requests, the ANU students and their instructor are feeling encouraged and ready for more.
Associate Professor Potanin estimates that 1/3 of his students already had GitHub profiles before the course (his guess would be higher if not for restrictions faced by students located in some countries). Now they all have profiles on which they can build.
They often introduced themselves as ANU students, although they were not instructed to do so. With such a high volume of pull requests resulting in successful collaborations around the globe, Associate Professor Potanin sees his students as “open source ambassadors” reflecting positively on Australia and the ANU.
Budding coders typically gain experience and burnish their credentials by amassing “code accepted” outcomes on their GitHub profiles.
“When they look for jobs they will be able to say, ‘look at that issue on GitHub, I have contributed to it. Here are my development activities’. It’s very public,” he said.
Does that mean people living in their parents’ basement with no formal training can get job offers by exceling on GitHub?
Yes, Associate Professor Potanin says, it happens, and employment oppotunities might also arise here, but the primary purpose of the course is to allow students to learn how to contribute in a small way to a large project. This will have applications far beyond the open-source, virtual collaboration available on GitHub.
Teamwork, coding and attention to detail
Genova and Weston-Davis’ team had chosen JavaParser because they had familiarity with the Java coding language, but found the majority of the process was learning and understanding the codebase.
The team members reviewed each other’s work and, in this process, helped each other gain a better understanding of the codebase. They split into teams of one or two for each issue, but when a problem or barrier arose, “the whole team would come together to try to resolve it”, Genova said.
Potanin said the other 52 teams had similar experiences.
“They helped each other because addressing different bugs within the same system requires knowledge of the system across the team.”
A handful of teams found that by the time they submitted the amended code, someone else had beat them to it.
“We realise that somebody else in the world may be fixing the same bug,” said Associate Professor Potanin. “We don’t penalise them for that because this is an educational environment.”
If the students show that they have fixed the bug, they get full credit.
Some examples of successful pull requests by student teams include:
- Contribution accepted into an Android streaming app
- Contribution accepted into a Reddit reader app (https://github.com/Docile-Alligator/Infinity-For-Reddit)
- One of several non-trivial contributions accepted into an advanced modern debugging tool used by many developers
- Auto-linking files with safe character replacements
COMP2120 is the course number for the undergraduate version of Software Engineering. Graduate students take COMP6120 and attending the same lectures, the primary difference being they are required to write additional research essays.