Mordax

Software Developer

View My GitHub Profile

Building Firefox

Preamble

Firefox is one of those classic open source projects, alongside the Linux project, that are massive in scale and have also been around for a long time.

The more you enter the open source ecosytem, the more its inevitable that most of your time will be used up on relatively newer frameworks and software systems.

Sadly, I’ve noticed with a lot of newer frameworks, due to their lack of maturity, tend to be buggy, and documentation hard to deal with. As opposed to building projects within it, I’d find myself debugging the environment itself.

Firefox was the most enjoyable environment I’ve ever set up and worked in. ASP.NET was the only comparable experience I’ve had.

The reason for this preamble was to emphasis just how wonderful it is to work in a mature code environment. Even though I’m a Windows user [life of a PC gamer is hard], it was still quite smooth.


Introduction

A list of limited bugs had popped up over at Bugzilla, and our particular class was in a lucky position to work on it. In a series of overwhelming myself with opportunities and seeing if I can deliver, I made my interest clear immediately.

Mark Banner had kindly offered to mentor the bugs. They were all regarding turning on ESLint rules on various folders in the Firefox code, both automatically fixing issues and also manually going in and fixing them.

Issue

Enable ESLint for dom/base/test/chrome and dom/base/test/unit.

Steps and Side Issues

A lot of the initial steps were mentioned via email by my prof, humphd and expanded on by Mark, and I will do my best to remember and reiterate the steps. Also note that these instructions use Mercurial, not Git. Git has different instructions.

All in all, I actually really enjoyed building and fixing things in Firefox - I was less frustrated as a Windows user than I thought I would be. It can be a bit confusing though - there’s multiple locations to work in (bugzilla for issues, mercurial for commits, moz-phab for submission, Phabricator for review). It opens a lot of avenues for potential slip ups.

But other than that, I’m really happy and humbled that I now have code in the browser that I’ve used ever since I was a kid.

Benefits:

Hopefully turning on ESLint in all of these folders can help avoid and potentially fix existing bugs.

Also, it was a great experience for me. I’ll definitely return to Firefox for sure!

Here’s the links to my (landed!) code:

dom/base/test/chrome (automatic changes)
dom/base/test/chrome (manual changes)
dom/base/test/unit (automatic changes)
dom/base/test/unit (manual changes)