If you’ve been following Firefox development over the last year, you probably know that we’re hard at work on a major refactor of the browser, codenamed Quantum.
It’s been a very exciting and challenging time with hundreds of engineers bringing to life new concepts and incorporating them into our engine – Gecko. Those refactors, which will culminate in the release of Firefox 57, touch the very foundation of our engine and require massive changes to it.
We’ve moved the whole engine from a single to multi-process model which is perhaps the hardest possible refactor a major piece of software can go through. We’ve added a whole new systems level programming language, and we’re replacing major components of the engine such as styling and rendering systems. There are substantial changes to our networking layer and security layers as well as completely new components like a new extension ecosystem, virtual reality stack and APZ. We’ve added another new programming language as part of our JS engine and significantly remodeled our build process and infrastructure allowing for quick feature testing, telemetry analysis to understand how our changes impact users and many, many more things.
The changes are massive. This is the largest refactor to Gecko and Firefox in my 17 years of contributing to the project. But we’re not done yet…
The Last 3 weeks
As of today, we’re about 3 weeks (24 days), away from branching Firefox 57 to beta.
All the major pieces are falling into place and are either already enabled, or will be soon. Some items may slip to 58 or 59, but the vast majority of the effort is on the last lap to the finish line.
Firefox Nightly as of today is an exciting software to try. It’s astonishing how much it has changed since January and I believe that anyone working on the Web ecosystem will have fun playing with it.
How can you help?
We have 3 more weeks to smooth out the rough edges, find and fix bugs and edge cases, fix any paper cuts and do all those small things that help complete the ultimate experience of using Firefox 57 to make it the best web browser on the planet. How?
Here’s where you come in.
One of the most amazing aspects of Firefox is that it’s a truly open source project. It is developed fully in the open, in an inclusive process that allows for anyone with the right skills to join in and help. And due to technologies we use, anyone with CSS, JS, HTML, React, Python, C++ or Rust skills can contribute! Heck, even without them, there are little and big things you can do.
My main work is related to the Localization and Internationalization layer at Mozilla, but over the last few months I’ve dedicated some of my time to help Firefox 57 release and realized that many people I know have the skills to help us and would most likely be interested in the challenge, but don’t know that they can!
There are hundreds of projects at Mozilla and almost all of them are open to contributors, but since we’re talking specifically about the Firefox 57 release, I created a list of tasks that vary in complexity, time investment and skills required, but all are excellent entry points to contributing to one of the biggest software projects in the world and are up for grabs!
Please note, we’re at the point where we can mentor you by helping you apply your skills in the context of the Firefox project, but we’re not in a position to mentor you in acquiring the basic skills needed for the tasks below.
Skills involved: Using the testing version of the product as your main browser
The simplest, and yet the most important thing you can do is download Firefox Nightly and use it as your daily driver. It’s a very stable browser, and in my years of using it I’ve encountered maybe once or twice a problem that blocked me from work. There are occasional minor hiccups, like the color of a UI item being off, or tab drag&drop being glitchy, but those kinds of small issues never impacted me that much and they’re usually fixed within a few hours.
Having a large and diverse userbase of the Nightly version allows us to collect the anonymized usage data. Things like “how many tabs users have open”, “how fast the browser starts”, “how fast pages render” etc. are crucial for our ability to notice the impact of the changes we land quickly and react if needed.
If we land a substantial change to how our HTTP2 stack operates and 6 hours later we see that average load time jumped by 30ms, we know we need to revert that change. But we can’t always see it in our labs, since we cannot replicate the vast diversity of the web. The way people use the web in India, China, Tunisia and Canada on both slow and fast computers differs too much. Real life data is the best shot we have at ensuring the quality of the end product spans across different demographics.
Skills involved: Taking screenshots, writing summaries and steps to reproduce
Mozilla is using a major open task system called Bugzilla. All our engineering goes through it and whenever we notice a problem, or work on a new feature, we file a ticket. That means that if you notice a problem, you can file a ticket as well.
Every time you notice Firefox misbehaving, or something not fitting well with your operating system, or a feature missing, or an icon shifted two pixels too far to the right, it’s the right time to file a new bug.
We can’t promise we’ll fix all of them. Some things are too risky to change, others may be that way on purpose. Sometimes we’ll disagree with you, or find out that there’s already a ticket filed for this issue.
But it’s way, way better to have too many reports and have to triage them, than to have too few.
Together with the low level changes to the engine comes a new user interface codenamed Photon.
Photon is an application of our Design System and allows us to refresh the product, better aligning it with the modern design model of operating systems and todays web. It also helps us link the engine improvements to the experience of using the product.
Over last 13 weeks, there has been a Photon Newsletter which gives you an idea of how the new Firefox UI is being developed.
There’s a handy list of tasks related to our UI that are up for grabs. Some of them are simple, like updating CSS rules to match the new design system, others require an hour or two of JS coding to switch from mouseup to mousedown event handlers on a button. There may also be some rabbit holes that look easy, but may suck you in for longer, but whether you have 6 months or 10 years of experience, and have a couple hours to spare or a whole weekend, you will find something for yourself there.
Up for grabs lists:
Contributing to Firefox requires you to be able to build it with your changes. Fortunately, we now have so-called “artifact builds” that allow you to only have to rebuild the front-end code (which is fast), and should be enough to contribute to Photon!
So look at the list, pick a bug and help us make the Firefox UI awesome!
People working on QF are doing an engineering equivalent of Sherlock Holmes’ job, profiling the various aspects of the codebase, trying to find out which pieces of code, when fired in a particular fashion result in the problem and then try to untie the knot between them.
There are many Quantum Flow bugs that are triaged as right below the threshold of importance and will not get time from the main QF engineers, but if you’re up for the challenge, they could be solved by you!
On that list P1 means “Priority 1”, while P3 means “Priority 3” – bugs that do not have an assignee in P1 are very important so if you think you can help with any of them, please do! Bugs with P3 may be easier but are unlikely to get attention from the main engineers before 57’s release, so if you think you can take any of them, do it.
So look at the list, pick a bug, and help us make Firefox fast and snappy!
Our Developer Tools are what make or break the experience of using a web browser for anyone working on the Web technologies. Thanks to an enormous effort, our devtools are now written in plain modern webstack – React, JS, CSS and HTML!
That means that if you are a web developer, you can most certainly help make the devtools better for yourself and others.
With good devtools we can attract developers to Firefox. With great devtools we can help them make the web better!
So look at the list, pick a bug, and help us make the devtools awesome!
Skills involved: Good language skills
To make the web reflect the diversity of languages around the World, we need both websites and web browsers to be translated into the multitude of languages used by people.
Localizing Firefox to every language on the planet makes the web more accessible to people from all cultures around the world, helping them learn and experience the web through an independent product not created for any corporation’s profit.
So join any of the existing localization teams, or create a new one and let’s make Firefox speak all languages on the planet (my request: Sindarin)!
Skills involved: Writing, Editing
With many new users coming to Firefox and many changes to our systems and APIs, there’s a lot of work happening around documentation.
Good documentation helps people understand the product better, build Firefox for the first time, contribute to it, write new extensions or learn how to fix their issues at scale.
Skills involved: Expertise in any system that Firefox interacts with
Web browsers don’t operate in an isolated environment. They’re a very unique piece of technology that exist somewhere between operating systems, hardware UX and the largest ecosystem of applications – the web.
We’re experts at Gecko and Firefox, but you are an expert in your ecosystem. If it anyhow interacts with Firefox, you can help us make this integration better!
Those things may vary – maybe you know GTK, Mac OS or WinAPI and can help us with OS integration? Maybe you know assistive technologies, have experience in bidirectional layouts, know how to profile performance on MacOS, know how high-contrast should work? All these and many other skills can be put to use to make Firefox work better with those systems.
So bring your skills, we’ll help you with the Mozilla code. Together we can make those inter-system interactions complete!
All Hands on Deck
Here’s my request. Over the next 3 weeks, consider booking some of your time to help us make Firefox 57 great for you and for your friends. It can be as little as an hour per week, or half of your Saturday, or maybe more.
We can all make a real impact and help the major improvements developed by the whole Mozilla project really shine with final touches from folks like us. There are several hundred backlog items. If we can get a hundred contributors each fixing one bug per week, we’ll fix them all!
And in 3 weeks, we can send off Firefox 57 to beta knowing we all contributed to making the web a healthy ecosystem and participated in the release of an amazing product.
Happy hacking! 🙂
p.s. If you need any help, jump on IRC, do not hesitate to ask any questions, and if needed, ping me personally (nickname “gandalf” on #developers). I’ll do my best to mentor you through your first task!