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 is 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
The code for our tools is in two different locations, so if you want to work on a specific tool you will first need to locate where it is.
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.
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
Bugs and issue trackers
Since we have code in two different places, issues and bugs are to be found in two different places:
- For code in
m-c: http://firefox-dev.tools/ which also lets you filter by good bugs for beginners.
- For code in
devtools-html: this page lists all the issues across the organisation and these are available issues i.e. ready to be worked on.
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:
- There is a docs folder on
m-cwith technical information about the tools and about each individual panel. We are publishing an HTML version of these documents as well.
- Internal technical documentation (NOTE: we’re migrating from here to the folder mentioned above).
- Additionally, check out each GitHub repository for documentation specific to that repository or module.
- Not strictly a roadmap, but these are some of our 2017 goals.
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.
- about:debugging: jdescottes, ochameau
- Animation Inspector: gl, pbro, daisuke
- Canvas Debugger:
- Console: bgrins, nchevobbe
- Debugger: jlast
- Developer Toolbar: jwalker, mikeratcliffe
- DOM: honza
- Framework: Browser integration, toolbox and test infrastructure: jryans, bgrins, ochameau, honza
- Inspector: gl, pbro, zer0, jdescottes, tromey
- JSON Viewer: honza
- Memory: gregtatum
- Network Monitor: honza, rickychien, gasolin
- Performance: gregtatum
- Remote protocol and server infrastructure: jryans, ochameau
- Responsive Design Mode: jryans, zer0
- Scratchpad: jdescottes
- Shader Editor:
- Style Editor: gl
- Storage Inspector: mikeratcliffe
- Themes: bgrins, ntim
- Web Audio Editor:
- WebIDE: jryans, ochameau
News and demos
We publish news and updates to two blogs:
- Nightly for features newly added to Firefox Nightly. This is the place to request feedback from early adopters!
- Hacks when features reach more stable versions of Firefox.
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:
- Bug reports or feature requests:
- The DevTools forum is a great way to get in touch with us and also ensure that your question is visible to other people (and hopefully help them as well).
- Mailing list: for people who prefer mail to forums.
- Team weekly video call: Vidyo room DevTools, Tuesdays 9AM Pacific time.
- IRC chat:
irc.mozilla.org, but bear in mind that perhaps the person that could help you best is not online when you ask the question. For that reason, it might be better to use the forum or mailing list instead.
- Contributors to
debugger.htmlalso hold periodic hangouts and have a slack channel.
- Twitter: @FirefoxDevTools.
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.