Contribute/Firefox
Contributing to Mozilla Firefox
Step 0: Download and install the prerequisites
https://developer.mozilla.org/en-US/docs/Simple_Firefox_build
Step 1: Download the code
1.1 Mozilla Firefox development uses Mercurial for code management.
hg clone https://hg.mozilla.org/mozilla-central
This will create a folder called mozilla-central which holds all the necessary code to build firefox.
1.2 Create a config file (optional)
By default, you do not need one. However, the generated build will be an optimized build with no debug symbols. For a build that can be run under a debugger, you need a mozconfig file.
cd /path/to/mozilla-central touch .mozconfig
Add options to the file:
https://developer.mozilla.org/en/docs/Configuring_Build_Options
Mozconfig example:
http://swarm.cs.pub.ro/~vgosu/mozilla/.mozconfig
1.3 Build the code
./mach build
1.4 Run Firefox
Linux/Windows: ./obj-[...]/dist/bin/firefox -P blank -no-remote
OS X: ./obj-[...]/dist/Nightly.app/Contents/MacOS/firefox -P blank -no-remote
or ./obj-[...]/dist/NightlyDebug.app/Contents/MacOS/firefox -P blank -no-remote
The extra arguments ensure that you use a different profile for development and allow you to continue using any existing Firefox instances.
2. Create a Bugzilla account
Go to https://bugzilla.mozilla.org/createaccount.cgi Enter your email address. Confirm it, and login to bugzilla.
3. Search for bugs / File bugs
Mentored bugs:
These are tasks in our database for which there is a guaranteed mentor.
http://www.joshmatthews.net/bugsahoy/
Good first bugs:
https://bugzilla.mozilla.org/buglist.cgi?quicksearch=sw%3A[good%20first%20bug];list_id=5083823
Student projects:
https://bugzilla.mozilla.org/buglist.cgi?quicksearch=kw%3Astudent-project;list_id=5083824
Recommended:
For first timers, the best bugs are fixing warnings. The next level would be telemetry bugs (just search for "add telemetry" on bugzilla)
If a bug doesn't exist, file one.
4. Fix the bug
This might tricky, especially for newbies. If you don't know where you should start, first try posting on the bug and asking for more information. The fastest way to get some information is to ask on the #introduction or #developers channels on irc.mozilla.org.
5. Post the patch on bugzilla
https://developer.mozilla.org/en-US/docs/Developer_Guide/How_to_Submit_a_Patch
5.1 Who should review my code
https://wiki.mozilla.org/Modules/Core
Don't always list the module owner. The other peers will do a good job, and they have more spare time.
6. Get feedback
Make sure you follow the Coding Style: https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style
7. Announce that your work is ready to be committed
When your patch is granted review+ by your reviewer, it's ready to be committed. If nobody commits it within a day or two, get in touch with your reviewer.
8. Additional resources
MXR
MXR is the code browsing tool used by the Firefox.
http://mxr.mozilla.org/mozilla-central/
An alternative is DXR, which is supposed to be the a more evolved version of MXR.
MDN
Also known as Mozilla Developer Network, this is a good place to get more info about what you need to do.
https://developer.mozilla.org/en-US/docs/Introduction
You might also need a .hgrc file: