3 C’s : Consume, Connect & Contribute !
The open-source world is comprised of these three pillars: consume, connect, contribute. Understanding each aspect is equally important to any open source initiative or project as well as to people who are involved in it. It seems exciting to get involved with an upstream project, but one might want to know,
How can I contribute to open-source?
Getting involved with an open-source project is a bit of a challenge & can be confusing for people who are getting started. Like picking up a right project? What is the process to get involved? There are many considerations. Identifying a certain flow can be difficult. Understanding these 3 pillars can help provide you some direction and clear up some of them dilemma that prevents you from getting started.
What project should I pick up? To answer this question, you need do some self-evaluation for yourself.
- Pick the area of your interest: It could be a specific concept, language, framework etc.
- What is your comfort level with that choice?
Both questions are important to answer before moving ahead:
You might feel interested in getting started with for eg:- Linux Kernel. But, are you comfortable with programming in ‘C language’ ? or familiar with basic concepts like memory, processes, threads, I/O operations etc. Basically how it works at an abstract level. If you have the basic clarity with it, don’t worry about the dilemma of knowing everything or being an expert. you should go ahead & get started, but you don’t have any kind of prior understanding and seeing it for the first time because you read something about it or that technology suddenly become a buzz word in the community. May be you need to give a thought before starting with it. Running behind buzz word technology won’t help you.
If you start with something at your comfortable. it will be easy to grasp. You won’t understand the entire project at first, but you have the basis of that particular language and understanding of concepts. It will be easier for you to contribute. Now, even you might be an expert with that language. Still, understanding the idea behind that project require the next step.
To get familiarity with any project/library. the best way is to start using it. And become the consumer of it.
If it is a library/framework that intrigues you, try something like writing a “Hello world” code using that project. Trying hello-world means, implementing the sample examples or run the sample code with mentioned setups. Build the project yourself with the give build steps on the project document.
See, what details you can identify, that could you make it better. Is there any problem that you came across while trying the sample examples or building that project. Is there any steps are missing? or anything additional you did for getting it work. If you found something: Bingo! you can move to next step.
If you didn’t find anything, then. Try to implement various other feature that you wanted to learn & understand how it works. As your understanding becomes better, you can start looking into issues that are already reported in the project repository.
Many projects use tags like “help-wanted”, “Community help required”, “beginner” etc. Pick that seems easier to you. Should you start implementing? No, immediately. here comes the another C i.e Connect!
“Remember: You don’t join a project/initiative, you always join a community”
Open source is an outcome of solid synergy between the community people. It doesn’t differentiate/discriminate between culture, gender or religion. You connect with people across countries & timezone. Sometimes you connect with people having weird sudo names, anonymous identities, popular like a rock star in the tech world. You might be working with people over IRC and don’t even know there real name, even if you meet them in the real world you will still call them with there IRC nick. But, it doesn’t matter until you get the work done with coordination.
So, if you have identified. What issue you wanted to pick up. May it is a good idea to ask some question or acknowledge, that I would like to start with it. May be ask for some starting pointers. Remember you don’t have anything to loose here, but only gain. So, ask as many questions as you like may should stupid, but sometime, it can pull up some interesting discussion, but that does mean, you ask question that you can easily found by yourself. You may or may not get all the answers. but, you will be able to get started.
Now comes that hard part “Getting things done”! our last C: Contribute.
Yeah, I didn’t make a mistake in writing contribution.md. it’s a file that you should be looking into before going further. Read it, this file gives you an idea about, what guidelines your can follow to make you first contribution.
Now, focus on that one thing you picked up is important, you might feel to give up in the starting. It’s too difficult or won’t able to make any progress. Still, keep trying. You might get some more question, after trying enough ask & clear those questions don’t wait for long, but keep it humble & having some of patience. If you made some progress with your code assignment, don’t wait try to send out a pull request & get an initial review. So, they might point out whether you are going in right/wrong direction. Even they might suggest you to follow some convention or standards, that can be easily changed instead of changing at last when you are about to complete the entire work. They might do an initial review and request for completing it further. And finally, when everything looks great, you will see the message “merge request accepted”! First PR accepted & first love can give you same level of emotional happiness :P
- Remember 3 C’s: Consume-Connect & Contribute !!
- Be humble & gentle!
- Respect other’s opinion & help.
- Try to teach what you learn on the process & share!
- Happiness comes from solving good problems, Be happy & keep up the good work!