DEV Community

Cover image for Contributing to a Browser Used by Millions - A personal experience
Itoro James
Itoro James

Posted on

Contributing to a Browser Used by Millions - A personal experience

Choosing the Project

When I saw the Firefox project listed, I almost skipped it because it looked like one of the easiest projects, and I assumed it would attract the most people. My thinking was: if everyone is going there, maybe I shouldn’t.

But then a friend told me something:

“It’s not always about doing it. Sometimes it’s about doing it well.”

So I chose Firefox. And I told myself: don’t just do it, try to do it well.
Did I do it well? Honestly, I don’t know. I’ll probably ask my mentors for feedback.

Setting up the Codebase

Setting up the project was straightforward for me, but when I opened the codebase, I was honestly blown away.
Firefox is huge.

My first instinct was to understand as much of it as I could, at least the sidebar.
I initially tried to understand it details by details, i then realized that wasnt efficient, given time constraints, so i tried to understand the structure instead, how components were connected and the flow of things. With time i got a hang of it, and started to feel familiar, not simple, but familiar enough to navigate.

Ready to make my first contribution

Finding the first bug to contribute to wasn't easy at all, every bug i thought to be interesting already had multiple contributors indicating interest, or someone already submitting a patch, assigned or not. It felt like i was late to the party, the competition was real. In a bit not to be left behind, i submitted my first fix without being assigned the bug, it was a documentation fix, nothing technical, but at least i felt safe, i had made a contribution.

The Bug That Was Closed

My second contribution attempt hit differently:
Bug 1982519: No default icon shown when an extension icon is missing

Early on, I suspected the issue wasn’t really a bug, or had already been fixed. But I still went ahead and built a solution.

When I submitted it, Rob Wu from the Firefox extensions team questioned my use of a generic regex. After a few back-and-forth comments, things became clearer for both of us, and the bug was eventually marked out of scope and closed.

When I first saw his comment, imposter syndrome kicked in.
It doesn’t always announce itself loudly, it just shows up quietly and makes you feel like everyone else knows something you don’t.

I started questioning everything, was I wrong? Was my approach off?

But communication helped. We clarified things. I understood his perspective, and he understood mine.
That helped a lot.

The Bug That Almost Broke Me

My last bug turned into my longest week:
Bug 2015491: a keyboard navigation issue in Firefox’s tab notes feature

When a user navigates to the Cancel Button and presses Enter, the expected behavior is for the text box modal to close, and the note not saved. However, the note was still being saved.

I fixed it and submitted my patch. It was landed, then got reverted by the sherrif.
I fixed it again. Reverted.
Again, reverted.
Three backouts, three different failure messages.

That was tough.

The self-doubt crept in. The temptation to open ChatGPT got stronger. That quiet voice started asking: do you actually know what you’re doing?

But this bug became the highlight of my experience.

At one point, I found a “fix” something that made all the tests pass. Clean, green, Done.

I had already spent more time on this than I expected, part of me just wanted to submit it and move on.
But I knew that wasnt fixing the bug, it was just masking the problem.

I knew where the issue was, there was an existing test in browser_b_notes_telementry.js, that had a line of code there that didn't seem logically right, and was affecting my test, but as at the time i couldn't find the exact problem.

And that was the real test for me.
Not the code. Not the bug.
The choice.

Submit something that looks correct, or hold back and do what’s actually correct and better.

I could have submitted it, it probably would have landed, no one might have noticed.
But I chose to speak up and ask for help.

And I’m glad I did.
Not only did I fix the bug, I also helped identify and fix an issue in an existing test, something that wasn’t even reported as a bug yet.

In a way, I caught a future bug.

That’s something I’m genuinely proud of. Not because everything went smoothly, but because I chose integrity when it would have been easier not to.

The Rule That Made it Better

Firefox banned the use of AI tools during the contribution phase.
I decided to fully commit to that.
No AI-generated code. No AI explanations. Every bug, every fix, every mistake were all mine.

It wasn’t easy, there were moments I really wanted to open ChatGPT and just get unstuck quickly.
During this experience i realized something.
I had forgotten what it felt like to sit with a problem. To be confused and stay there for a while, to think through it without immediately reaching for a shortcut.

This experience led me to realize something, AI is an incredible tool, however, it is quietly weakening our ability to think (deeply) if we rely on it too much.

Working without it was uncomfortable at times, but the sense of total ownership at the end? That felt different, even better.

Conclusion

My code is now in Firefox 151.
Millions of users will benefit from a fix I wrote from my laptop in Abuja, Nigeria, without a single line of AI-generated code.

I made only two contributions to the Firefox project, if you exclude the out-of-scope one, just two.

But the experience, the growth, and the impact mean far more than the number.

I want to say a special thank you to Kelly, Nikki, Stephen, Rob, and Jeremy. I also want to say thank you to my fellow contributors, your blogs inspired me to put this out there.

Top comments (0)