Open Source Contributions: A catalyst for growth.
Tags: opensource, education, beginners
Published: 2020-02-05 09:53:50

Sometimes learning from other people’s experiences builds a certain level of certainty as to what we are doing right and what we may have done wrong. This is because it is very easy to learn from their experiences and build on them. In this article, I will use my personal experience (my Open Source story) to explain why I believe making open source contributions is a catalyst for growth and I hope it gives you the push to create your first [pull request.](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests)


##How did I get started?

Well, my first attempt to make an Open Source contribution was sometime in March 2018. At that time, I just found out about the [Google Summer of Code (GSOC) program](https://summerofcode.withgoogle.com/) from Samson Goddy and I told myself, “oh well, I think it’s time to apply what I learned on Android development during my industrial training late 2017 at Start Innovation Hub to a real life project”. I went to the GSOC site and glanced through all the organizations and their respective projects and the [Open Data Kit](https://opendatakit.org/) organization caught my attention.
To participate in the Google Summer of Code program, you have to be a student in the university and also make at least one contribution to the organization. I was already in the university, so all I had to do was to make at least one contribution to an organization before submitting my proposal. When I first joined the Open Data Kit slack channel, I was intimidated and overwhelmed but most open source organizations label issues on their repositories so it was easy to find the right issue to solve. As a beginner at the time, I jejely glanced through the beginner-friendly issues and decided to work on an issue titled [Escape markdown characters using backslashes](https://github.com/opendatakit/collect/pull/2045). This task entailed writing code to enable the ODK Collect app support escaping markdown characters using a backslash and this could be achieved using regular expressions (Regex).

##My First Pull Request
Honestly, I never knew about regular expressions before I decided to work on that issue, I didn't even know it existed, which meant I had to do a lot of research. You probably won’t believe me if I told you it took over 3 weeks for the pull request to be merged because the mentor ensured that I understood what I was trying to do, the implications of making those changes and most importantly that the code I wrote adhered to the coding standards of the organization.

Working on the issue took me from not understanding anything about regex to getting my first pull request merged by the Open Data Kit open source organization and *mehn*, this was literally the best feeling. The thought that you’ve contributed to an application that is used by thousands of people across the world and that **someone somewhere** is currently benefiting from that feature you improved is so fulfilling. It was truly an overwhelming but interesting first Pull Request.

After I had successfully made a contribution to the organization, all I had to do was to submit a proposal describing the project I wanted to work on and why I felt I was the best candidate for the project; this was another good thing to learn because I had never written a proposal in my life. I eventually created a proposal and submitted it for review. Unfortunately, when the accepted candidates were announced, I wasn’t accepted.

This wasn’t a sad moment for me because I suspected that someone with more experience would be selected for the project but I was super grateful that I learned a lot about writing proposals, contributing to open source, writing a good commit message and raising a good pull request. So I saw it as a win-win situation.

##My second Open Source project, well I thought it was…

After I graduated from school in August 2018, I decided to give Open Source contributions another try by applying for the Outreachy internship to an organization called [Wikimedia](https://www.wikimedia.org/) and my role there was to improve the MediaWiki Action API and also write sample codes in Python which was a great opportunity to learn not just as a developer but as a technical writer. Making contributions to the Mediawiki organization was not as difficult as my first pull request because I had already submitted a pull request before. If you ask me, I think I was *killing it* during this application phase.
A few days to the deadline for submitting my proposal, I had to travel to Taraba state via Enugu for [NYSC](https://www.nysc.gov.ng/); however, I missed my bus that morning because I was trying to fix an issue with the pull request I submitted. When this happened, I told myself that I was definitely going to be accepted, afterall, I missed my bus because of it. But I wasn’t selected for the internship. This time around, I was deeply sad because I thought I did better than other applicants. The rejection broke me to the point were I said I wasn’t going to make open source contributions again.

Well, thinking about it now, I guess I should have started with unpaid Open Source contributions first to build myself instead of jumping directly into applying for paid Open Source internship opportunities.

##My failed applications start to pay off

In January 2019, [Outreachy](https://www.outreachy.org/) announced that they were accepting proposals for the internship. Lo and behold, the same project I had applied for in the previous round in 2018 was among the projects and I felt I had a better chance of getting accepted since I had worked on this project before. As usual, I made contributions to the organization and submitted a proposal during the application phase. At this time, I was also looking for a company to serve during my NYSC in Lagos and I applied to a couple of companies and went to different interviews. One interesting thing I will love to point out in this article was my interview with a company called Interswitch. During the second phase of my interview with Interswitch, I met with the CIO and during our interaction, I spoke about my experience with making open source contributions and how I was currently writing sample codes and improving API documentation. The CIO asked me about the last time I made a contribution to the organization and luckily for me, I actually made a contribution to Mediawiki that morning before I went for the interview **so with a smile on my face I told him “today”**. He went further to ask which API I worked on and as I explained the workings of the API to him, I noticed he was impressed. It turned out that Interswitch was looking for someone with that skill at that time so there was a match. I got hired primarily because of my experience with writing sample codes, improving the API docs for the MediaWiki and of course, the ability to code.

Sadly, when the results for accepted interns were announced by Outreachy, I wasn't selected. It was a bittersweet experience because I had gained a lot of experience from making those contributions and also got accepted as a Software Engineer at an amazing company for my NYSC.

##Finally the big W - Google Season of Docs

I refused to be fazed by the disappointments I had with my previous applications so I decided to give it a shot again, this time I applied for Google’s Season of Docs with the [VideoLAN organization](https://www.videolan.org/). The VideoLAN organization owns the [VLC media player](https://www.videolan.org/vlc/) which has been downloaded over 3 billion times. When you think of the fact that there are over 7 billion people in the world right, it means that means almost half of the people in the entire world must have downloaded VLC into either their phones or desktop. Blown!

**Again**, I researched about the project, what it entailed, wrote a proposal and submitted it to Google and guess what? My proposal was accepted. I think I literally almost threw my laptop away when I got the email from Google. It was a surreal moment for me. I have literally been using the VLC media player since I was in secondary school and the fact that I was going to work for this organization was mind blowing.

##TL;DR
Contributing to Open Source organizations opens you up to a lot of opportunities and connects you with people doing amazing things all over the world. Who would have thought that I would get an opportunity to work as a technical writer for an organization that I have been using their product since secondary school and get paid 3000$ to do it, or get to have meetings and conversations with the president of the VideoLAN organization or get to do my NYSC at Interswitch or even get to speak at events about the beauty of Open Source?

To sum it up, I successfully completed the [Season of Docs program](https://developers.google.com/season-of-docs/docs/participants) by Google in November and also got a full-time job as a Developer Relations at Interswitch in December and without any doubt in my heart, I can boldly say that **OPEN SOURCE CONTRIBUTIONS** strongly contributed to my growth as a Software Engineer and Technical Writer.

Yes, it is a **catalyst for growth** and you absolutely do not have to jump right into applying for paid remote open source internships like I did if you are not ready for that, you can start by submitting an issue, fixing an already existing issue, correcting a typo, making a pull request to an organization, creating an Open Source project, joining the [Open Source Community in Africa](https://oscafrica.zulipchat.com/), attending the [Open Source Festival](https://festival.oscafrica.org/) and so much more. Trust me, the things you will learn in a short time would amaze you.

This article was inspired by my talk at the Hacktoberfest hackathon in Kampala last year and my colleague **Damola Adekoya** who told me it would be great to write an article about my open source journey.

Happy to answer any and all questions regarding Open Source contributions, [feel free to send me a DM me on Twitter](https://twitter.com/Didicodes).