--- title: Developer guide slug: Mozilla/Developer_guide tags: - Developing Mozilla - Landing - Mozilla - NeedsTranslation - TopicStub translation_of: Mozilla/Developer_guide ---

There are lots of ways to contribute to the Mozilla project: coding, testing, improving the build process and tools, or contributing to the documentation. This guide provides information that will not only help you get started as a Mozilla contributor, but that you'll find handy to refer to even as an old hand.

Documentation topics

Getting Started
A step-by-step beginner's guide to getting involved with Mozilla.
Working with Mozilla Source Code
A code overview, how to get the code, and the coding style guide.
Build Instructions
How to build Firefox, Thunderbird, SeaMonkey, or other Mozilla applications.
Development process overview
An overview of the entire Mozilla development process.
Managing multiple profiles
When working with prerelease versions of Firefox, it's often helpful to have multiple Firefox profiles, such as one for each channel, or for different kinds of testing.
Automated Testing
How to run Mozilla's automated tests, and how to write new tests.
How to submit a patch
After getting your patch written, you need to get it checked into the tree. This article explains the review process and how to get your patch approved.
Getting documentation updated
How to ensure that documentation is kept up to date as you develop.
Mozilla modules and module ownership
This article provides information about Mozilla's modules, what the role of a module owner is, and how module owners are selected.
Code snippets
Useful code samples for a wide variety of things you might need to figure out how to do.
Mozilla development strategies
Tips for how to make the most of your time working on the Mozilla project.
Debugging
Find helpful tips and guides for debugging Mozilla code.
Performance
Performance guides and utilities to help you make your code perform well (and to play nicely with others).
The Mozilla platform
Information about the workings of the Mozilla platform.
Adding APIs to the navigator object {{ gecko_minversion_inline("9.0") }}
How to augment the {{ domxref("window.navigator") }} object with additional APIs.
Interface Compatibility
Guidelines for modifying scriptable and binary APIs in Mozilla.
Customizing Firefox
Information about creating customized versions of Firefox.
Virtual ARM Linux environment
How to set up an ARM emulator running Linux for testing ARM-specific, but not necessarily platform-specific, code. Useful for mobile developers.
Obsolete Build Caveats and Tips
A place to put build tips which are no longer relevant to building the latest version of the code from main but are relevant when building old codebases.

Tools

Bugzilla
The Bugzilla database used to track issues for Mozilla projects.
MXR
Browse and search the Mozilla source code repository on the Web.
DXR
Next generation of searching Mozilla's source code. In active development.
Bonsai
The Bonsai tool lets you find out who changed what file in the repository, and when they did it.
Mercurial
The distributed version-control system used to manage Mozilla's source code.
TBPL (Tinderbox Push Log)
Tinderbox Push Log shows the status of the tree (whether or not it currently builds successfully).  Check this before checking in and out, to be sure you're working with a working tree.
Crash tracking
Information about the Socorro crash reporting system.
Performance tracking: Datazilla and Graphs
See performance information for Mozilla projects.
Callgraph
A tool to help perform static analysis of the Mozilla code by generating callgraphs automatically.
Developer forums
A topic-specific list of discussion forums where you can talk about Mozilla development issues.
Mozilla Platform Development Cheat Sheet
Brian Bondy's list of frequently referenced information for platform developers.
Firefox development video tutorials
Brian Bondy's video tutorials on Firefox development.