Yet another journey of contributing to Open Source
And diving into this OSS World as a beginner!
“Using your talent, hobby or profession in a way that makes you contribute with something good to this world is truly the way to go.”
— Simon Zingerman
Most likely, you stumbled upon this while searching fanatically through Reddit threads, Quora answers and other blog posts detailing — “How to get started with contributing to Open Source”. Well, this post is no different from them.
No wait, come back! It’s not a copy. It’s just that you might still be feeling bewildered about contributing, even after reading those blogs. This post gives you helpful (presumably 😛) insights on my journey of getting started with contributing to OSS.
Most likely, you would be feeling that you are not fit to do this. It’s fine — Really. I was in the same position some weeks ago and felt exactly same.
I’d been trying to contribute to open source for around a year (ever since the notification of GSoC’17 came out!).
And one thing I can surely tell you irrespective of your background or experience so far is — It’s tough to get started.
You have to first break through that “impostor’s syndrome”. If you are unclear of what it may mean, Google it! that’s the first and most important advice you need before getting started.
Then, you have to find a project you want to work with — Which is as intimidating as it can get. The tried and tested way of doing so is — Find what you are interested in. It can be a language, a software/tool you use everyday or an organization you always wanted to be a part of.
At the end of the day, it’s up to you if you quit or not. And believe me, you are less likely to do so if it’s something you always wanted to work with. In my case, it was Python which kept pulling me back to contributing to OSS.
At the start, nothing would make sense. You wouldn’t be familiar with the organizations’ commit guidelines, work-flow, coding guidelines and what not.
On top of all that, you would be witnessing around thousand of lines of code lying there like a maze. You wouldn’t be knowing your way out through that.
I hope that you would be in same (or perhaps better) condition right now — lost and confused.
But as it turns out, the developers/maintainers of the project know these problems as well as yourself. They know all of what I have told you above. You want to know how?…….. Well, they started as beginners as well 😉.
So, feel free to ping them on the channel if you need any help in getting started. Just remember, you should always mention what effort you have made prior to asking that question — Have you gone through the relevant docs? Did you go through contribution guidelines for the project? What errors are you facing?
Let me tell you, even after being around the code-base for weeks, I still face problems in understanding parts of the code and have to consult maintainers or other developers regularly. After all, I am still an amateur fish in this sea of code.
An attempt was made!
For full one year, I was looking through past GSoC and GCI orgs (Usually, orgs which are pretty welcoming to newcomers are selected in these — something which I wished from my first org).
I would select some of them, go through their Bug tracker/Issues listed at their GitHub repo and see some “newcomer”/”beginner”/”up for grabs”/”first issue” labelled issues.
Mostly, they were trivial changes like spelling corrections in docs, updating docstrings. But still, remember “impostor’s syndrome” (I told you to Google it — This is the next thing to remember, don’t proceed further until you are clear about things discussed before) — I never actually contributed.
Around after 3 months or so of this wandering, finally I selected ‘coala’ (Well, I had found some blogs which mentioned it to be quite newcomer-friendly) to be my first org.
But little did I know, there are hurdles even before getting into contributing to projects. Yeah! Setting up your development environment. I tried to install using the instructions available — But couldn’t. I raised the bug in the channel giving out as many details as I can — that includes solutions I have tried out, StackOverflow answers I consulted, error logs and messages. One of the maintainers of the project John (@jayvdb) raised the issue in the repo.
I waited for around 2 days for the issue to get resolved. And after 2 days, seeing no progress on the issue, I just left the channel and thought of never coming back to OSS.
And what a mistake that was! — This leads me to my next tip, you need to be patient in getting answers. Those people out there are volunteering to contribute to the project, taking out time from their daily routine. They are human just like you with actual personal lives — Respect that.
Around this time, I thought that maybe I wasn’t good enough for this open-source thing.
Another thing that worked against me was not seeking immediate guidance — I did knew some seniors and batch-mates of mine who had or were working on getting into GSoC. But I was too afraid to ask for their advice — Mostly because I thought that it would mean risking being looked like a stupid. This calls for my next advice, Ask!. Yes, nobody would be branding you an idiot if you are asking well-researched questions.
Meanwhile, the thought of even entering open-source just vanished somewhere between academics and self — projects.
In summer, while working on my internship project — I came across this thought of contributing to Open Source yet again through one of my friend whose mentor was a developer at coala and a GSoCer.
This time though, I decided to move forward a step into open-source. I tried again, this time, fortunately, I was able to set up coala on my machine. But again being quite busy in the internship, I had to leave it yet again.
I finished my internship, came back to college. Still, I had this “Start contributing to Open Source” on top of my to-do list. Then after, I got busy with the ongoing internship season.
After having my plans for summer set-up now with an internship, I decided to start contributing to coala again. I went through the installation guide, docs, git basics, commit guidelines, reviewing guide and general git workflow again.
For the next few days, I was looking through more issues, making new issues, helping other newcomers in onboarding, reviewing other Pull Requests. In a week or so, I finished the developer process in coala and got promoted to a developer at coala.
I was so engrossed into this reviewing stuff now that I continued to do so even during my exams (Yeah, even self-control was getting tough). Though my grades took a hit that semester, but I was happy. For the first time, I was feeling useful 😀.
All in all, I’ve learnt so many things, large as well as minute details, that no academic course can ever teach me.
Also, as later I came to know — There are some initiatives like Hacktoberfest, Mozilla Winter of Security etc. aside from the popular ones like GSoC, GCI which promote contributing to OpenSource. See if such incentives can serve you as an encouragement. I was fortunate to stumble across Hacktoberfest as well.
Many of you might be thinking along the lines — “But I don’t know anything at all”…. Wrong!. Even basic knowledge of any language (even non-programming languages would do — All projects have a number of documentation tasks as well) is enough to get started with contributing to some project. The main point is — Just start somewhere.
Special thanks to Mischa, Lasse, John and Mixih for helping me out when needed. More so for not giving out the solutions to me, but encouraging to solve them myself.
By the way, I got a chance to mentor some newcomer — intermediate level difficulty level tasks in Google Code In’17 as well. I actually understood quite some things in a clearer way while mentoring others. Thus my last advice, help others — that aids you in understanding things in a better way.
- It’s okay to be afraid of getting started, it’s actually tough. Anyway, you needn’t read full code-base to get started. Just start somewhere. Ask questions — Nobody would be judging you for that.
Not everybody is a born genius, there might be holes in your understanding — you have to ask questions.
“Doubts are good. Confusion is excellent. Questions are awesome.
All these are attempts to expand the wisdom of mind.”
- Do prior research before asking questions. Nobody would be doing that for you. Also, do understand that it is for your own good. Search through docs, guides/instructions, README or just Google it.
- Be sure that you have understood things in the conversation so far, don’t leave any trace of doubts. Things really get more confusing and difficult to explain when the basic things were understood incorrectly.
- Have patience. Sometimes, reviewing can take more than even a week. One thing you can do in these cases is to start reviewing stuff yourselves. This would cut short the reviewing queue and would help you in getting quick reviews.
- Help others on the journey. That also implies that you can contact me if you need any help 😄