How the Google Summer of Code changed our open source projects for the better
The Palisadoes Foundation offers an annual summer internship program called the Calico Challenge where software engineering students are offered summer internships to work on our open source projects hosted on GitHub under the guidance of an experienced IT professional mentor. Stipends are paid upon meeting pre-defined goals. Sponsorship has been provided by companies and individuals both in Jamaica and overseas. Calico started in 2016, and was inspired by the Google Summer of Code program (GSoC).
Funding for Calico was hard to obtain in 2021, due to the pandemic, and we decided to suspend the program. But we didn’t give up hope, and applied to be a GSoC organization that year. We focused all our attention on our Talawa mobile application which was created to help community based organizations collaborate with their membership. These organizations could include religious groups, non-profit charities, social groups and in limited cases, businesses. We explained that we wanted to eventually host Talawa as a cloud service to help finance our education outreach.
With a five year track record of developing Talawa and other open source applications with over 30 Jamaican university students, we got in.
We didn’t expect to be awarded and were not monitoring our emails closely. However on the day of the announcement we noticed a flurry of activity on our various Talawa repositories. In a single day there were dozens of requests from programmers to have their contributions accepted and merged into our software. These “pull requests” used to be rare because our projects were small, and so we decided to investigate. We were elated to get the award, but then what?
It was pandemonium. There were many unforeseen challenges:
- Project activity skyrocketed overnight with the following statistics taken a week after the GSoC announcement. A “fork” occurs when a software developer copies a project to their own private account so that they can work on modifications that will then be merged back into the original project through a “pull request”
- Project Talawa: 132 forks, 672 pull requests
- Project Talawa API: 77 forks, 230 pull requests
- Project Talawa Admin: 12 forks, 15 pull requests
- We had very little documentation on how to use the software, desired features, procedures for contributing code and our overall vision.
- The software was buggy and there wasn’t any automated software testing to make the operation smoother.
- A large number of mentors needed to be found to guide students.
- Students were constantly asking questions on our Slack channel, a service similar to WhatsApp.
A plan was quickly put in place.
- We placed a call for mentors on every tech WhatsApp group we knew. Within days we had Jamaican IT professionals monitoring the pull requests.
- Minor changes to the software, such as fixing typos, were rejected.
- Pull requests had to be tied to documented GitHub issues (the equivalent of trouble tickets and feature requests) that explained the aim of the proposed software changes.
- All GitHub issues created by software developers were automatically tagged as being “unapproved”.
- Only Palisadoes mentors could assign the issues to software developers and remove the “unapproved” tag.
- Pull requests were only reviewed on approved GitHub issues.
- We only accepted GitHub issues to fix bugs while we worked on a strategy to rewrite the code to be more reliable. This is what is also called a “code freeze”.
- GitHub issues for new “feature requests” were added to the list of things to do for the code rewrite during the code freeze.
- We created new GitHub issues to develop ways to improve our automated testing and code formatting. These were assigned to potential GSoC students.
- We created YouTube videos outlining the various Talawa projects to help answer many of the questions we were receiving.
- After the videos were created we held a series of webinars to guide students through the projects and the GSoC application process.
- Mentors created a single documentation site for all Talawa projects.
- We started a series of structured weekly strategy meetings with mentors to coordinate our activities. The meetings were minuted and the results distributed to all members so they would always be up to date in case they missed a session.
- Our Slack channels were reworked to have separate channels to discuss each project. Other channels dedicated to automatically announce newly created GiHub issues and pull requests were established to help alert potential contributors to opportunities to participate in improving our code. We also created a general discussion channel and a closed mentor channel as a quick means of communication.
- Palisadoes Foundation volunteers were constantly asked questions by globally dispersed students which disrupted the volunteers’ other activities such as their regular jobs, and sleep. We created a protocol whereby students were redirected to mentors assigned to the relevant projects and alerted students to the best times of the day (office hours) to contact mentors about questions.
- A lot of time was spent setting an inclusive culture within the projects that discouraged bad behavior, such as flaming (hostile and insulting remarks), lone wolves and closed collaboration groups.
- We also tried to make everyone have an equal chance of being accepted into GSoC. This extended beyond our open documentation and YouTube videos. We also converted many of our responses to private queries from students into public statements soon thereafter.
- We realized that many of our student applicants were scattered across the globe, but our mentors were mainly based in Jamaica. Mentors in a range of timezones were required. We were fortunate to get a volunteer based in India to help us have coverage around the clock to monitor activity on GitHub.
- A formal communication plan had to be created. We scheduled email campaigns, blog posts and social media announcements so that we would have new content about our experiences distributed each month so that we would remain relevant in the eyes of our community.
- We created a software development workflow where all changes were tested in a dedicated “development” area. This development code was only migrated to our production “master” branch when it was deemed to be stable after numerous tests.
- We encouraged students to always create GitHub issues on the GitHub website so that everyone could get an idea of the outstanding work that needed to be done. This greatly helped in setting our coding priorities.
- We also created career sessions with mentors to provide guidance to students on how to handle some of the foreseeable challenges in their careers.
The experience has been both exhilarating and frightening. We kept our cool and focused on a rapid succession of incremental changes that have created a revolution in the way we handle our projects.
Special thanks to all our mentors around the world.
- Troy Anderson
- Xavier Bryson
- Brandon Chung
- Jason Gayle
- Shannon Henry
- Shannika Jackson
- Dimitri Johnson
- Jordan Jones
- Jordan Liu
- Phillip Llewellyn
- Dominic Mills
- Deandrew Moore
- Delton Phillips
- Laurell Seville
- Gareth Thomas
- Tahj Thompson
- Sagar Utekar
- Ranil Wallace