So, you have finally convinced yourself to enter the realm of Open Source Development. But wait, the initial threshold of getting to speed in this domain is feeling too difficult for you. You are struggling to do your very first contribution in a big Open-Source repository. The huge code-base is too overwhelming and difficult to understand. The issues marked as simple are also too difficult to comprehend. There are just too many things you still don’t know. The list of things you are seeing for the first time is growing day by day. It seems it’s a bad choice after all?
So my dear open-sorcerer, have some hope. This feeling is mutual with at-least 60% of the people out there. It always starts with a bumpy road but if you can cross that part, believe me, the road ahead is smoother than you can imagine.
I started with OSS on 15th Sept with zero knowledge of this domain, I just knew some of the features of GitHub GUI. My first PR was to NLTK on 22nd Sept and for that whole week, I was struggling to just get my first PR in. The issue tracker and the vast code-base to work on was not intuitive enough to get past that threshold. The one I did had hints to solve in the issue itself and after completing that one, I felt a little sense of achievement. So, find that PR for you, however small it be, it will take you halfway to the threshold. The next one was in Gensim for me, the maintainers there were very understanding. But it seemed silly to ask all those beginner doubts. I somehow managed that too. By the end of it, the learning rate has started to grow. I learnt how to write tests, PEP8 writing style, doc building etc. Searching among the countless posts about this state to get beyond the threshold, i.e the beginner’s guides… I got suggested Coala org. I am glad I did.
Coala as a community is very welcoming for beginners. The docs they have will teach you about standard Git usage and standards while making a PR. They are very strict about those but you will surely be a better presence in OSS after spending some time there. I used to think, Why to learn the Git workflow when I can use the basic GitHub GUI for most of the tasks. Coala changed my mindset. All the big projects out there have standards of their own, you don’t want to make a bad image out there. So, better learn things at such a place. The community they have set up is commendable, the newcomers become reviewers and the feedback process is apt too. I recommend solving at least 2–3 PRs there, you will gain a lot.
About the long code-base which seems really vast, don’t worry they all follow a similar structure to organise files and while fixing an issue you don’t need to understand all the code-base. You need to find the areas the issue is related with and thanks to modular programming, you can solve it without getting the whole code-base. But yeah, you need to pick up some of the basic things in your OSS journey like… Fault isolation, Continuous Integration(Testing), Virtual Environments, Docs Building, Code Writing style etc.
It might take at max a month or two for you to reach that smooth road and after that shifting between orgs. or coding languages in OSS will be not that tough. You can take this from a GSoC student.
My OSS log:
15th Sep-- Decided I wanted to proceed with OSS.
25th-- CircleCi, UnitTesting, Continous Integration, documentation ways
26th-- numpy docstring writing formats, a little bit of unit Testing implementation
28th-- Agile dev, Started seeing other repos than gensim
30th-- reading guidelines of other repos, will help understand standards
20th Oct-- Learned about coala developers practices
22nd Oct-- Got added in coala newcomers grp and learned about gitter and saw operational bots on Github
23rd Oct-- Learned Git workflow including squashing, merge conflict resolving etc.
27th Oct-- Explored zulip repo guides.
28th Oct-- Learned Git workflow fetch vs merge and rebasing concept.
30th Oct-- UnitTesting
31st Oct-- pytest and travis-ci working
5-6th Nov-- Exploring org. list
9th Nov-- Started learning Julia.
20th Dec-- Explored Julia Idea Page and started learning about its flux(ML) library
28th Dec-- Started with JuliaImages
29th Dec-- Towards first big PR
05th Jan-- Completed first big PR!!
7th Jan -- Second big PR opened
12th Jan-- Started with TextAnalysis(fav domain) in Julia as it got added to ideas page of Julia.
14th Jan -- Skimming Issues section for problems to solve @JuliaImages
17th Jan -- Reading research papers and meanwhile solving JiliaText issues. (SIH + Hackin city)
24th Jan-- Struggling with daily PRs and exams prep!!
15th Feb-- Started with Shogun as a focused org
23rd Feb-- Reading about GPU programming in Julia... Too many project ideas on it
27th Feb-- Shit my Lappy don't have NVIDIA GPU and AMD programming is tougher... Leaving it
1st March-- Decided my second focused org to be JuliaAstro after seeing it in GSoC org list. (Community Interaction)
5th March-- Leaving Shogun as handling 3 orgs prep at the same time seems too much!!
10th March-- 1st PR to JuliaAstro
15th March-- Simultaneously handling prep for both orgs
21st March-- 2nd PR to JuliaAstro
7th April-- Submitted two strong proposals to JuliaText and JuliaAstro in GSoC!!
6th May-- Cracked GSoC under JuliaAstro @OpenAstronomy!!
6th May-- Got invited for Julia Summer of Code(JSoC) with JuliaText!!