A beginner's bumpy journey to find a few good bugs

5 readers like this.
annoying bugs

Opensource.com

Did you land on this story looking for advice on how to start contributing to open source? There are tons of these stories on the interwebs, aren't there? And I am sure you must have read a lot of them by now, because you've been trying to start contributing for quite some time. Maybe you still feel like you've not progressed at all.

I get that feeling. I was in the exact same position until a few weeks ago. Let me tell you my story.

Bumping around in beginner land

I'd been trying to contribute to open source for about two years. Yes. Two years. And there's one thing I can tell you with a lot of certainty—it is intimidating. It's tough to get started. You have to learn how to work within a large code base. You have to learn and adhere to a project's coding style guides. Nothing makes sense: the control flow, how different modules interact, how and why the code is organized the way it is—it's all one big maze. You need to muster a lot of courage to ask questions, dive into the code base knowing next to nothing, and keep fighting with it. (This is a generalization about how some projects operate, but many have difficulty making their projects accessible to new contributors.)

I'm just an amateur trying to learn as much as I can. So, I tried to take the easy way in: fixing typos in docs or comments in the code, and doing trivial bug fixes where it was obvious what needed to be changed. I didn't want to ask too many questions or try to understand the code base. Every time I wanted to contribute, I went to GitHub or a bug tracker, and searched for issues labeled easy, beginner, good first bug, low hanging fruit. And after sifting through hundreds of them, I would find something trivial enough to do without any major help.

This worked for a while, until I realized that I could make better use of the skill set I was building. At that point, I'd learned many new things, but I couldn't figure out where to apply them. Just learning without applying counts for very little. I was stuck on a plateau, and I wasn't moving forward at all. Then something happened that made me terribly scared about being a new contributor.

I picked out an issue that seemed easy enough from a large, popular project. I thought it would be better to ask clarifying questions before making any changes, for fear of messing up, so I posted a comment saying that I was a new contributor and asked how a particular piece of text should be altered so as to close the issue. The reply I got was: "If you can't figure out how to make the change, you're not qualified to make the change."

Yikes! This response baffled me. And it ultimately made me even more scared to ask questions when I didn't understand something about a project.

Maybe I wasn't wanted because I didn't know enough? Maybe I needed to work more on my skills instead of asking stupid, lame questions to experienced people who were super busy? This is when my quest for a mentor began too because I felt that maybe if I knew someone with whom I was comfortable asking questions, things would be OK and I could make myself more useful. So I emailed a bunch of people, asking them to help me get started since I was feeling particularly intimidated after the aforementioned experience.

I received a lot of positive replies full of encouragement, but I still didn't find exactly what I was looking for. I felt like I was bumping into a closed environment in the world of open source.

Discovering good first bugs

One fine evening, as I was searching for issues to work on, I landed on a Mozilla project called web-ext, a tool to help test web extensions. I was glad to find a few issues labeled as good first bugs, but none of them were as simple as fixing a small typo. Boy, was I glad about that.

I started working on one of them and quickly realized that I had to ask questions if I wanted to be able to close the issue. I skimmed through the code base, and once I had some sense of what was going on, I asked for more direction. Voilà! I was able to solve the issue after getting all the relevant details I needed. Today, I've opened four pull requests—one merged, and the other two on their way to being merged, and a patch accepted for Firefox.

I'm glad I took the plunge, and I'm glad I didn't back down when it came time to asking relevant questions, even if it meant risking looking stupid. I've learned it's okay to not know everything, and to take one step at a time to learn something new. The folks at Mozilla mentoring me on these issues have been nothing less than super helpful and supportive. They've guided me all the way, taking time out to break things down and explain them in incredible detail. This, despite the fact that they could have just fixed these issues themselves in a few hours instead of spending time mentoring me toward a solution of my own over the course of several days.

Now, I've set up Firefox locally and scour for bugs on Bugzilla every other day.

This article is adapted from the original on Medium, which includes tips for beginners and a shout out to the maintainers.

User profile image.
I'm a CS student from India with a keen interest in software development.

4 Comments

What's also interesting about your story is how one project lost a potential contributor and another gained it.

I'm glad you shared this story and I'm particularly inspired from your courtesy by clearly avoiding tackling the consequences to the developers that so rudely addressed you before. But, since I'm not a actor in that story, I will address it myself.

What you experienced is one of the biggest problems in a representative portion of the open source culture; a general aggressive attitude that steers many people away by making them feel either incompetent or offended. To be perfectly fair, this isn't an exclusive problem of computer programming. Many engineering fields cultivate a certain arrogance based on personal knowledge. You don't need to go far to witness this much in computer programming. Join forums or IRC channels on this topic (or even computers in general), and you will realize the above than necessary aggressive or intolerant attitude of many of its members.

The problem is mostly tied to our education system. Most SE courses around the world do not teach Collaboration and do not make the obvious link between software development and basic social skills.

Of course, there is absolutely nothing to be gained from it. As your story proved, someone just lost a valuable contributor; one that actually wishes to learn and contribute, which is something I can tell you is rare to find.

Despite all that is said about Open Source (and we are going through a commemorative period as we just commemorated the Software Freedom Day), there's many things deeply wrong in Open Source community and many people doing it without really understanding exactly what it means to Open Source and to Collaborate. In many respects, many Open Source projects out there are wounded to death by the anti-culture of their key members who do not really Open Source at all. They don't even represent Closed-Source software values, which are particularly keyed on principles of team collaborative work. They only represent themselves; as aggressive developers without any concern for others, with a tendency to understand projects as their own property, and with no understanding whatsoever of the all-important social skills associated with software engineering.

This is great; congrats on the pull requests!

A very encouraging information.

Mario Figueiredo:

Then where does that leave someone like me? Who’s trying to learn Python and get involved in the open-source community on a more meaningful basis? I would love to be a person who helps with bugs and code and the like, but if I'm treated like an annoyance by someone I ask a question to? I will not stick around to have it happen again! Isn't there some kind of "Code Of Conduct" for the Programming industry? if not.....SHOULDN'T there be? just as how there's a set of rules when it comes to altering the code of a Linux distro and the GPL......shouldn't there be some kind of guideline for ALL SE's....programmers....developers...etc to follow? And I'm not asking because I want to ruffle feathers I'm actually curious to know....I also realize that just because a cod of conduct is created that not everyone will follow it or even acknowledge it, but its a start no? eventually the people who treat others in such a shoddy way will be "known" and then they might find it hard to complete projects if they have to work alone, because no one else will work with them due to their bad attitude. Like I said....its would be a start to "cleaning up" this messy mental attitude that a lot of people have...

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.