Git Out and Contribute
Why Open Source is Awesome
From the code that sent Apollo 11 to the moon to the operating system that powers most of our cellphones, open source is booming and you would have to be living under a rock to not have heard of it, yet. As of 2016, GitHub was home to projects written in 316 programming languages (source: Octoverse) and to be honest, I didn’t even know that many existed. But contributing to open source projects has helped me write cleaner code, ship less bugs and improve community interactions considerably.
So what is Open Source really?
Typically speaking, open source refers to software that users can run, distribute, study or modify for any purpose. It is simply collaborative software development that relies on peer reviews and community feedback to get better quality code.
The Open Source Business Model
Why would companies want to give away their software for free?
The business incentives behind releasing software as open-source are many. Take for example, Google’s decision to open-source Android that helped with fast adoption and its growth to become the most prominent operating system on mobile platforms. Major tech companies such as Facebook, Microsoft have also started open-sourcing their software now.
Summers of (Awesome) Code
Today, several organisations fund programs to push students to open source notably among them Google Code In, Google Summer of Code, Outreachy, Rails Girls Summer of Code and the list goes on. Most of these provide a stipend to cover living expenses of the student for a period of ~3 months while working remotely on the project of their choice.
What is in it for you?
How can Open Source be helpful?
- Write cleaner, less buggy code: Open Source is fundamentally built on the practice of peer reviews and community feedback. So, you usually receive comments from a lot of developers who have worked on the project in the past about programming idioms, good community practices and writing maintainable code.
- Contribute to great projects: A lot of great projects today are open source, notably among them DuckDuckGo, VSCode, React, Swift, Go, Kotlin and many, many more.
- Build a network of great developers: Since community interactions is a fundamental part of open source, one gets to interact with developers from different backgrounds in different timezones which eventually evolves into a support network with a lot of talented coders.
- Bag internships and jobs: Your GitHub profile is your online portfolio and a good way to showcase the quality of your code to recruiters. I, have myself, received internship offers by recruiters who had a look at my projects on GitHub.
- Swag, swag, swag: Once you have made some valuable contributions to a project, they will ship you some cool goodies and stickers as a thank you!
Okay, I love Open Source now but how do I start?
Ask and ye shall be answered
Set it up: Find a project that you really, really like (and in a language you are familiar with) and clone it on your desktop. Set it up, follow the installation guide and try running it. If you face any issues, go ahead and create an issue for the project maintainers to look at (Telling maintainers what problem you faced in the project is also a valuable contribution for the community).
Introduce yourself to the community: Say hi to the other people working on the project on Gitter, Slack or whatever chat room they use. Community interactions are as important in FOSS as writing code is.
Find a suitable issue and work, work, work: Most communities have labelled some issues as /easypick or /newcomer and do not require much knowledge of the code base. Start with those first. Ask intelligent questions (Now “What should I do” is not one). Poke around. Send a Pull Request once you think you have fixed it. More often than not, you will receive a lot of comments on it. Address those, fix your code, iterate over till it passes all the tests and voila, you have made your first contribution!
Most importantly, don’t get discouraged or stop. It may happen that you feel overwhelmed by the huge code base most of which you do not understand. That is okay. Do not give up, the community is there to help. Ask for it. 🙂