Open source, Week 10
New week, new phase, new challenges and new joys. As the name of the phase hints (Open source / Reading other people’s code), this phase is all about collaborating in open-source projects, being part of this community, reaching out to the repo managers and provide your grain of sand in the world of open-source software.
The first lesson from this phase came quickly, as I was overconfident and way too relaxed from the previous phase; perhaps I thought: “You just find a cool project, read the documentation and work on a task, how hard could it be?” (such iconic final words that question is). What I didn’t grasp when the phase started Is just how hard is to actually find an ideal open-source project. The way I like to think about it is, since these projects are open to whomever likes to help out, anyone can help, and that means that a lot of these people are the best of the best in their respective fields and technologies. This obviously is good for the community as a whole, but it also means that the entry barrier can be quite daunting, which is what I found out when I started searching issues in my favorite JS frameworks, only to find I didn’t even begin to understand what I had to understand in order to solve such issues.
Facing this knockback I changed my strategy, trying to find some issues with such tags as ’beginner friendly’, ‘good first issue’, or ‘first timers only’. While this helped narrow out the difficulty aspect of just blindly searching issues, it also narrowed the list of available issues to a significant degree. That’s when I found my second knockback: since the easy issues are few, a lot of people quickly chime in and solve them. I was lucky to only live the sour experience of finding a good issue only to find someone has solved it while you were looking the documentation (this happened to some teammates more than 5 times…). Being humbled by this, I spent a couple of days just searching for good repos, compiling a list of them to check out in case something went wrong (foreshadowing).
While trying to work on these issues I got my second dose of humbleness while researching issues. Twice I failed in communicating effectively, and from these experiences I got 2 important lessons. In the first instance, I dismissed an issue raised by someone, thinking he simply misunderstood the documentation. When I pointed this out, the user who raised the issue politely pointed out to me some information that I had glossed over, which was quite the embarrassing experience. From this I learned to be extra careful when collaborating on a project of this kind, since it is an open forum in which respect is key in order to create a safe and productive environment. Giving people the benefit of the doubt and questioning ourselves are extremely important aspects of the communication aspect of open source.
My second failure came when I picked up an issue, only to realize when working on it that, as much as I tried, I wasn’t able to replicate the problem. This was on a Friday afternoon, so unfortunately, I had to ask the user for the information he used, not expecting an answer until the next Monday. From this I learned the importance of making sure you have all the information that is needed to work on the issue, and how I shouldn’t be afraid of asking other users to provide this information. In this case I was lucky, and the guy answered me the next day instead of Monday, but I shouldn’t rely on this happening every time.
With the week coming to an end, I still don’t have any PR accepted, and while this saddens and stresses me a bit, I still feel happy with the work that I’ve put in this last week, as well as the number of things I’ve been learning in order to be able to collaborate in these projects, from Ruby on Rails to Django. While a part of me is worried about the scope of this phase, another part is incredibly excited at the opportunities this work entails. We’ve been pretty much been granted a free pass to work in whichever technology our heart desires, and while this freedom like any other can seem scary at first, I’m sure that once we get the hang of it the payoff will be incredibly worth it.
As a final note, I’d like to make a review of my current work:
* meilisearch-js: This is the project where I didn’t ask for enough informationa at first. While I was able to indentify the source of the issue presented, the solution is a bit more complicated, as it requires either changing the API or implementing some sort of check that allows to only deny the data with the wrong index format. More analysis is required to determine the right approach.
* Farmbot-Web-App: This is a fairly easy issue, as it just requires some CSS modifications. The problem came from the fact that the app is built with Ruby on Rails, a framework I have zero experience with and which has been quite the challenge to set up.
* mapbox-gl-js: This is the one where I jumped to conclusions too fast. With the information provided, the bug seems to be there, however I haven’t been able to identify what exactly is causing it. More testing is required.
Happy holidays, and cheers for an exciting week!