Firefox Developer Tools

These are the tools provided by Firefox for developers to inspect Web code.

This repository aims to provide a general overview of how the tools are built, who’s working on them, and how to get involved. If you are looking for user support, there’s a whole area at MDN dedicated to it.

We abide by our code of conduct and expect all contributors to do the same.

Working on the code and contributing

mozilla-central vs devtools-html

The bulk of the code is hosted in the Firefox repository (we call it mozilla-central, often abbreviated as m-c), in the devtools folder. Development of newer pieces of the tools is happening in GitHub, on the devtools-html organisation.

Code in m-c takes longer to set up from scratch, as it involves installing Mercurial and binary tools such as compiler to build a version of Firefox in your machine, but it is required if you want to work on most of the tools (as the majority of them are in this repository). Here are the instructions plus this very good article.

The repositories in devtools-html are more straightforward if you’re used to the GitHub workflow: you clone them, and then run npm install && npm run or similar. Roughly, you can work with each repository individually and we periodically we generate JavaScript bundles that are then copied into m-c.

Bugs and issue trackers

Since we have code in two different places, issues and bugs are to be found in two different places:

Documentation

Broadly speaking, the tools are divided in two parts: the server and the client. A server is anything that can be debugged: for example, your browser, but it could also be Firefox for Android, running on another device. The client is the front-end side of the tools, and it is what developers interact with when using the tools.

Since these two parts are decoupled, we can connect to any server using the same client. This enables us to debug multiple types of servers, using the same protocol to communicate.

You will often hear about actors. Each feature that can be debugged (for example, network) is exposed via an actor, which provides data about that specific feature. It’s up to each server to implement some or all actors; the client needs to find out and decide what it can render on the front-side when it connects to the server. So when we want to debug a new feature, we might need to do work in two parts of the code: the server (perhaps implementing a new actor, or extending existing ones) and the client (to display the debugging data returned by the actor).

Often, an actor will correspond to a panel. But a panel might want to get data from multiple actors.

You might also hear about the toolbox. The toolbox is what everyone else calls developer tools i.e. the front-end that you see when you open the tools in your browser.

This is just a brief overview. For more detailed documentation:

People and modules

The tools are broadly divided into panels. Each panel has one or more owners, who mostly work(s) on that panel and are the best people to ask if you have specific questions about the code.

News and demos

We publish news and updates to two blogs:

You’re more than encouraged to help us talk about the tools by writing an article, making a demo, or both! We also wrote some guidelines for making demos.

Getting in touch

There are various ways to get in touch with us:

Processes

Most changes will be done via either the “pick a bug and send a patch” or “send a PR” processes.

For substantial changes, we ask that a “request for comment” (RFC) document is provided first, so we can examine what the implications of a change will be. Here is how to follow the RFC process.

People

jryans
tromey