Google Summer of Code
Google Summer of Code (GSoC) is a global program that offers students an opportunity to be paid for contributing to an open source project over a period three(3) months.
GSoC is basically an open source apprenticeship: students will be paid by Google to work under the guidance of mentors from an open source community. It’s a really great opportunity to build new skills, make connections in your community, get experience working with a larger and often distributed team, learn, and, of course, get paid. If you’re new to GSoC and what it means to be a student, learn more in this short video.
Ushahidi
Ushahidi platform is often used for crisis response, human rights reporting, and election monitoring. Ushahidi offers products that enable local observers to submit reports using their mobile phones or the internet, while simultaneously creating a temporal and geospatial archive of events. Ushahidi (Swahili for “testimony”, closely related to shahidi which means “witness”) created a website in the aftermath of Kenya’s disputed 2007 presidential election that collected eyewitness reports of violence reported by email and text message and placed them on a Google Maps map.
Ushahidi platform has been deployed over 125,000 times in over 160 countries.
Ushahidi is listed as a Sub-organization under Digital Impact Alliance for GSoC 2019.
Applying for Google Summer of Code
To apply for GSOC, you do not need to be a Computer Science or IT major. Basic programming experience and communication skills are just fine.
No matter what, don’t wait until you apply to initiate contact! Engage with multiple open source communities once the participating organizations are chosen to get a feel for how different groups work.
The earlier you apply, the better. Submitting your proposal early helps you get early feedback. Writing proposals might be a little daunting, here’s a guide to help Students write Quality proposal.
Among the Ushahidi GSoC projects for 2019 was Ushahidi platform USSD Integration. This project involved developing an application that allows for users to send in reports to Ushahidi deployments via USSD on Ushahidi v3.
USSD, which stands for Unstructured Supplementary Services Data, is a protocol that allows for the transmission of information via a GSM network. Users enter a USSD string and press call to send the message.
A typical USSD message starts with a * followed by digits which indicate an action to be performed or are parameters. Each group of numbers is separated by a *, and the message is terminated with a #.
Unlike SMS, USSD messages create a real-time connection during a session, that remains open, allowing a two-way exchange of a sequence of data.
I applied to Ushahidi because I have worked on a similar project (CERS) earlier at a hackathon but did not go too far with it afterwards. I figured I would love to continue on the project with an organization such as Ushahidi and would definitely make a broader impact on Users.
Although my application to Ushahidi was in a hurry (which was during the last few hours of GSoC 2019 Application), I was super excited when I got the news that my application made it to the list of GSoC Projects for 2019. 🕺🕺🕺
May 2019
The first month of GSoC was majorly for Community Bonding, during this period, I got to know members of the core Ushahidi Team. I also got added to the Ushahidi Organization on GitHub, Slack Channel and Scheduled Check-In calls with my Mentor and other colleagues at Ushahidi.
Tip: Students are recommended to try to find out as much as possible about their organization.
June 2019
I enjoyed working with my Mentor, he gave useful feedback and was able to set me up with most access I’ll need to begin. We discussed a lot on our calls and those discussions helped us realize what might work and might not.
I made my first PR after I was finally able to understand how the Ushahidi V3 API works.
After a few discussions, I made a PR to migrate the micro-service from Django to Flask, more because what I was working on was a micro-service and doesn’t require all of what Django has to offer. It was really exciting working with Flask. I also wrote a Dockerfile which later was of help in deploying the micro-service to AWS Fargate (runs containers in a serverless environment).
Tip: Students need to become more flexible in learning and be open to make changes and updates to your project.
July 2019
On July 1st, I was able to complete an earlier task of creating multiple USSD screens based on Survey fields from Ushahidi API, here goes the PR for that.
While making progress and closing issues, I also worked with my mentor in deploying the microservice to AWS with using Terraform (this was fun because I also had a thing for DevOps).
Tip: Create an issue for whatever task or even research you’re working on, making comments on the issue as you progress — try to make sure your mentor knows what you’re currently working on.
August 2019
Although we had a working demo of the USSD Microservice, there were a few more challenges. We relied on the input from our inital USSD provider — Africa’s Talking which is immutable and breaks the application when users enter an invalid response. We felt we should be able to handle invalid inputs from users rather than terminate their sessions. For validating USSD responses, I wrote some more logic that accepts all responses but only saves valid responses to Redis, this way we can ask users to re-enter invalid response and only save them when they pass validation. At the end of users session, we post the valid response that has been saved on Redis to the Ushahidi deployment.
To enable users or contributors easily understand how the Ushahidi Platform USSD Service works, I worked on a documentation using GitBooks. Ushahidi Platform USSD Service Documentation
Conclusion
Open source organizations are the backbone of the FOSS culture, which promotes free and open source software, encourages sharing and collaboration. Diving into open source quite early is advisable. Communication with the members of the organization is also crucial.
Google Summer of Code is a great opportunity for students to work on a project that truly matters, and exponentially increase their ability as a coder and the ability to work in a large team. I can definitely say my coding skills have improved over the three months of GSoC.
Writing clear documentation, structuring your code to meet standards, and making sure your changes does not break anything else was a truly educational experience.
Useful Links
Ushahidi Platform USSD Service Repository
Google Summer of Code Student Guide
What Nigerian Students at GSoC 2019 are Working on
Curated list of resources for college students
Thanks for reading through!