First Contribution to Open Source
It’s a common misconception that contributing to open source is difficult. You might think, “Sometimes I can’t even understand my code; how am I supposed to understand someone else’s?”. Relax. Until last year, I thought the same thing. Reading and understanding someone else’s code and writing your own on top of that can be a daunting task, but with the right resources, it isn’t as hard as you might think.
First of all what open source is?
Open source is a term denoting that a product includes permission to use its source code, design documents, or content. It most commonly refers to the open-source model, in which open-source software or other products are released under an open-source license as part of the open-source software movement. The use of the term originated with the software but has expanded beyond the software sector to cover other open content and forms of open collaboration.
Open Source Contribution is a process in which a person is required to collaborate with an organization mostly on Github and do some tasks to contribute to the progress of the project in various ways. All the activities like solving an issue, improving the design, implementing a new feature and writing documentation are counted as your contribution to the project.
Requirements
- You must be familiar with Github and Git. Many open source organizations use Git for managing source control. You must be able to clone a repository, fork it, pull from a repository, push to a repository, send a pull request and you must also know how to manage conflicts.
- As long as you know this much about Git, you will be able to start contributing. Secondly, know the language of your choice thoroughly. For example, if you want to contribute to the Spring Framework, knowing Java in and out is a must. If you want to contribute to the LLVM compiler, knowing C++ well is necessary.
Nothing else is required…
Getting Started
1. Choose a project
See which project interests you and choose accordingly. Are you interested in games? Check out Battle for Wesnoth. It is a game written in C++ and Lua. However, be wary that it doesn’t exceed your skills. For example, the game I mentioned requires some grasp of AI for any meaningful contribution. If you are not interested in AI then it may not be the right project for you.
2. Join the mailing list
Every project has a mailing list. If you go on their Github page, or their homepage, you will be able to find it. Most of the time, it may be a google group. Sometimes it will be a mailing list on other sites like SourceForge or GNA. Join the list, and introduce yourself. Sometimes, it is not required to join the mailing list. You may directly start working on the issue by communicating to them in comments.
3. Choose a bug/issue
Go to the page where bugs/issues have been filed. Every organization has bugs in its software. Typically the low priority ones or the minor ones are not touched. They are left for beginners so that they can read the code using fixing the bug. Choose the easiest one. I chose one which required only modifying one line in a file.
4. Ask for help
I couldn’t locate the file where the bug was supposed to be or getting your approach verified are some of the ways to get help from repository holders. Many a time you get reply quick but sometimes it may take longer than you would expect. You may ask for help on their mailing list or in comments within the issue.
5. Send a pull request
Once you resolve the bug, send a pull request to the organization. If they accept, your code will be incorporated in their main repository. Remember repository owner may have set up tests for reviewing a pull request and your PR must pass those tests before the owner review your code else your PR will be rejected.
Most Difficult Part
The most difficult part of Open Source Contribution is not the coding part. Coding is a part which anyone with a slight knowledge of the coding language can do. There is google to help you, mentors in the repository and even any companion of yours can help you with coding part but a thing with which no one can help you is “Finding Issue/Bug”. There is no google, companion and not a mentor who can find an issue according to your suitability.
“You have to sail yourself to the shore.”
Getting through Difficult Part
Finding an issue suitable for you will of course take time and I think most of your time throughout your contribution will be consumed in it. But anyone who survives this part gets to the shore.
- First of all, take a glance at the readme properly. This will give you a clearcut idea of the project.
- Secondly, have the confidence that you can do it. As the quote says, ”Well begun is half done!”. So have that faith in yourself.
- Finally, start looking for issues that will take time. And as suggested before, you should search for easy issues. The issues are labeled differently. You should look for issues with these labels.
These labels will help you find your first issue easily.
Don’ts
- Talk rudely to anyone in the open-source world.
- Take up the issue on which anyone else is working.
- Start working without communicating it with a mentor or owner.
- Get impatient.
Be careful with these things and you are good to go…
Advantages
- Get to know about different codebases and coding styles.
- Generate the ability to understand code written in different styles.
- Learn how a project is managed on a large scale.
- It is fun and beneficial at the same time as it will be a project you have chosen.
- Practice and develop any skill you want to acquire.
- Experience. You’ll get to use some stuff you probably won’t get to use in your day job.
- Shows the world your skills.
Some Open Source Software you use
Organizations to start with
- Coala (Python)
- Oppia (Python, Django)
- DuckDuckGo (Perl, JavaScript)
- Ava (Javascript)
- Pinax (Python, Javascript)
- Habitica (Javascript)
- Contributor Covenant (Ruby)
Open Source Competitions
Various Open Source Competitions are held where you earn from swag to cash for yourself. Like
Many and many more… You just need to get started.