Now You Know It!
Hi, I am Kriti Singh, and I will be documenting my journey in the world of open source from the beginning, getting to know about Outreachy, applying, failing (yes, failing), not giving up and finally succeeding. P.S. This is going to be a long post so I would advise you to read it only when you have more than enough time and patience.
cd Open Source/
I came to know about
(red - flag 1) But that shouldn't stop anyone from trying out things on their own and making mistakes, I learned this this the hard way, as you'll find later if you keep reading this rant. :)
I became a regular user of Linux eventually, and now the terminal screen and Vim editor looked cooler than their alternatives. Git is easy to learn on Linux. Packages easier to download and software easier to install! By now I was well enough familiar with Git and GitHub and basic knowledge of web development as well as I was trying to tinker around with stuff along as I was learning about them, w3schools and freecodecamp had become constant companions now. I decided to start my first contributions in hacktoberfest, I'm pretty sure you must have heard of it. But if you haven't, here it is. It is a world-wide program to encourage the participation of people in open source software development. They give you a cool T-shirt if you manage to make five pull requests in open source repositories on GitHub in the month of October. During that course, I found myself thinking night and day about the cool repositories that were trending that day, awesome people with like 6000+ contributions in a year, my minor contributions that got noticed and how were they overvalued by the great folks out there. I was so overwhelmed that I even put up a twitter post sometime in that year, link here . Yes, talk about being silly!
Around December 2017, I came to know about this program from one seniors at my college who had been an Outreachy 2017 alum and a active contributor in the open source. And I thought why not give it a shot in 2018 May-August rounds when the applications open and meanwhile, I set on to develop the common skills which most projects were based on. I kept contributing in a few open source projects as well to get hold of how things actually worked so that I can work full-fledged when the time comes. Soon time flew by and applications were open. I was not very confident about my chances since I thought I was very average (red flag - 2) and made a good amount of mistakes due to extremely low self-confidence. However, a thing or two that I did right was devoting a lot of time on finding organizations which had projects which matched my skillsets. This is a one-time investment and very very important. You should know your strengths multi folds than your weaknesses, especially if you are constantly suffering from Imposter Syndrome. I found 2-3 projects which I could start working on, but I still had this most important job of narrowing down to 1 project, which I never did (red flag - 3). This is a full-fledged work you are involved in, reading through such large codebases, understanding the flow, how are things integrated with each other, and how a mishandled exception is generating a bug in another component, too much! Yes, and then multiply it with 3, combined with the fact that you are a second year university undergraduate who has to attend 8 hours classes a day and then stay up on most of the nights so that you can fix your pull requests which get reviewed mostly at night due to the vast differences in time zones. I did struggle a lot during those days, not to mention my studies were affected as well. Silver lining were the shades of green squares forming a streak on my GitHub profile. Now comes the fun part, results announced finally! AANNDD, I was NOT selected. Things happen, life goes on :)
rm -rf Negativity/
Not overreacting, I was devastated, it took a toll on my end terms as well. Not blaming anyone, but this is what happened. I told a couple of times in this blog post as well that I was not a very super confident person, always doubting my abilities, questioning myself on whether I did deserve it or not, etc etc etc. The best thing about time is that it passes, whether good or bad. I got over this earlier than expected.
To divert myself, I also did competitive for some time, participated in hackathons, won a few of them, went around in developer workshops and conferences, continued making contributions in a few communities. Failures have always hit me hard, but I make sure they regret. After a few months, the program was announced again. And I had made a point to keep away all the red flags I faced earlier. Yeah, I know it may sound very different from all the other blogs you might have read for the same. But thats how it is.
What was different from the last time? Well since I took a cursory glance on the past events previously, I will be describing the general DO's and DONT's of being an open source collaborator, which also applies to Outreachy aspirants:-
- No matter how well versed you are in some skill, if you are new to a community, always begin with the issues labelled as easy, good-first-issue, beginner or similar tags. This is necessary as every community has some specific protocols regarding the conduct they expect from a new contributor. So if the issue is basic, you can focus more on the guidelines initially, and also get a beginner level understanding about what is the best way to move forward.
- After you have scouted out what you're going to solve, ASK if you can work on the same, so that you don't duplicate efforts with some other contributor and avoid subsequent clashes. You can also ask clarification if you're not sure if you understand it correctly. The more upfront you are, the easier things will be for you.
- Join the community's chat, mailing list, IRC or any other means of communication where you can ping relevant people for help if you get stuck. Trust me, no one is going to judge you even if you ask something 'silly', which you will eventually find out was not so silly.
- Respond and be active about the issues or pull requests you are involved in. Everyone is busy and no one is particularly fond of delays, especially when it is caused by a volunteer.
- Choose ONE project and give your everything to it. I learnt this very hard way. I know what constraints you face, the biggest one of which is always the fact that you are not so sure about yourself, whether you are the best among the applicants for that project and whether you have the qualities that people will prefer you above others. Trust me, you have. Just believe and never look back.
- Gently advance to bigger contributions, which involves working on major issues in the project. Research about the bug, related bugs, what all components are involved, what all components are affected, everything. Ask when you have tried enough and the solution is "not available on the internet"! (Highly unlikely in case you are facing some issue which is not repository specific).
- Open source tends to promote the spirit of collaboration. Try to work as a team, help others when they are stuck. Knowledge increases on sharing.
- Do not try to skip the code of conduct regarding contributions. Its highly likely you'll make unexpected mistakes that way and which shows your lack of sincerity.
- Do not start working on issues claimed by other contributors. You can always find one or the other issue unclaimed and perfect to work on. No need to start clashing so early, this thing turns very ugly very soon.
- Do not ask questions which you can find solutions to easily on googling. It will save time of yours and others.
- Do not work on multiple projects -- read this two times. Efforts are divided and wasted a lot this way.
git add NumPy
Ever imagined how it would be to write Python code for training models without NumPy? Yes I was excited because probably this was the one of the very few organizations whose product was a direct part of our routine lives. Being a Computer Science undergraduate, we regularly get mini projects for studying and implementing models for various problem statements in machine learning, and I was very habituated with
import numpy as np and now I get the opportunity to write guides for people like me, I was so in for it! I contacted the mentors on the beginner issues to solve, submitted a bunch of pull requests which got reviewed so quickly, and my changes were on prod even before realizing! My mentors, Matti Picus and Sebastian Berg were very responsive and helpful throughout. The results were declared and I was selected to work on the project -- Improve C API documentation for NumPy -- fun begins!!