Mozilla

The articles below include content about downloading and building Mozilla code. In addition, you'll find helpful articles about how the code works, how to build add-ons for Mozilla applications, and the like.

About omni.ja (formerly omni.jar)
Firefox and Thunderbird achieve performance improvements by moving many of their internal parts from being standalone files or sets of JAR files into just one JAR file called omni.ja; this reduces the amount of I/O needed to load the application.  Since Firefox 10 and Thunderbird 10, the file extension .ja is used because Windows System Restore does not back up files with the .jar extension, but it does back up .ja files.
Accessibility and Mozilla
Accessibility is the idea that software (among other things) should be designed to be usable and, as much as possible, convenient to use for people with disabilities. Mozilla strives to make its software accessible; the documents below cover the ways in which we do so. These articles provide Mozilla-specific details about accessibility.
Add-ons
Add-ons add new functionality to Gecko-based applications such as Firefox, SeaMonkey and Thunderbird.
Adding a new word to the en-US dictionary
Occasionally bugs are filed pointing out situations where perfectly legitimate words are missing from the English spell check dictionary in Firefox. This article describes the process for adding a word to the dictionary.
Bugzilla
bugzilla.mozilla.org (often abbreviated b.m.o) is Mozilla.org's bug-tracking system, a database for recording bugs and enhancement requests for Firefox, Thunderbird, SeaMonkey, Camino, and other mozilla.org projects.
Calendar
ChromeWorkers and the Chrome worker loader
To complement the open Web Worker functionality, Mozilla has introduced the ChromeWorker interface, which provides this capability within application chrome. That makes it available not only to the application itself, but also to add-ons.
Command Line Options
Command line options are used to specify various startup options for Mozilla applications.
Debugging
Debugging a project as large as Mozilla can be a daunting task. Fortunately, over the years, Mozilla developers have come up with not just technologies and features to help you debug code, but have devised tips and techniques that can help too. Also available are assorted tools that you can use when debugging.
Firefox
Firefox is a popular and most advanced browser Mozilla application, available for multiple platforms, including Windows, Mac OS X and Linux on the desktop and Android mobile devices. With broad compatibility, the latest in Web technologies and powerful development tools, the Firefox browser is the largest for both end users and web developers.
Firefox Marketplace
The Firefox Marketplace enables developers to publish cross-platform open web apps using standard Web technologies, languages, and tools. Mozilla is bringing its core values — openness, freedom, user choice — to the world of apps.
Firefox OS
Firefox OS is a new mobile operating system, developed by Mozilla, and based on Linux and the Gecko engine that powers Firefox.
Firefox for Android
For more and more people mobile devices are the primary way, or even the only way, to access the Web. Firefox for Android (codenamed Fennec) is an open, hackable, standards-based browser, just like the desktop Firefox.
Gecko
Gecko is the name of the layout engine developed by the Mozilla Project. It was originally named NGLayout. Gecko's function is to read web content, such as HTML, CSS, XUL, JavaScript, and render it on the user's screen or print it. In XUL-based applications Gecko is used to render the application's user interface as well.
How to Turn Off Form Autocompletion
Like most modern browsers, Gecko™-based browsers (e.g. Mozilla and Firefox browsers) can be configured to remember the information the user fills in for form and password fields on web sites. This article shows you how to disable this feature.
JavaScript code modules
JavaScript code modules let multiple privileged JavaScript scopes share code. For example, a module could be used by Firefox itself as well as by extensions, in order to avoid code duplication.
JavaScript libraries from Mozilla projects
In addition to Firefox and other applications, Mozilla developers have created a number of useful JavaScript libraries you can use in your projects. Documentation for these libraries can be found here.
Localization at Mozilla
Localization (L10n) is the process of translating software user interfaces from one language to another and adapting it to suit a foreign culture. These resources are for anyone with an interest in the technical aspects involved in localization.
Mercurial
Information about how Mozilla uses the Mercurial version control system.
Mobile
Firefox OS is an open source mobile operating system which uses Linux and Mozilla's Gecko engine to run a user interface and set of applications written entirely in HTML, CSS and JavaScript.
Mozilla Developer Program
Enable, inspire and collaborate to make the Web the primary platform used to create experiences across all connected devices.
Mozilla Framework Based on Templates (MFBT)
The Mozilla Framework Based on Templates ("mfbt") is the central repository for macros, functions, and data structures used throughout Mozilla code, including in the JavaScript engine.
Mozilla MathML Project
The Mozilla MathML project is Mozilla's project to build and enhance MathML support within Firefox and other Mozilla-based applications. For a quick overview, see the slides for the innovation fairs at Mozilla Summit 2013.
Multiple Firefox Profiles
A profile in Firefox is the collection of settings, customizations, and personalizations that a user has made in the program. You can find details about Profiles on Mozilla's end-user support site.
Persona
Mozilla Persona is a cross-browser login system for the Web, that's easy to use and easy to deploy. It works on all major browsers, and you can get started today.
Preferences
The preference system makes it possible to store data for Mozilla applications using a key/value pairing system. These articles provide information about how to use the preference system.
Projects
Below you'll find links to documentation about various Mozilla projects; these are often parts of Firefox or other products, but may also be used in other projects as well.
QA: Quality assurance at Mozilla
There are many things you can do to help out with the Mozilla project in the QA department, and all of them don't require being able to code. A few of them don't even require knowing any HTML or other web technologies.
Redis Tips
This document is a collection of some examples and tips for using redis, the open-source data structure server.  It is intended primarily for developers, and deliberately omits some topics that will be important in any redis deployment, like security and backups.
Setting up an update server
The goal of this document is to provide basic instructions on setting up your own update server.
Signing Mozilla apps for Mac OS X
Firefox and Thunderbird are built using Mozilla's Release Automation infrastructure. On Mac OS X, part of this infrastructure is automatic signing of the '.app' folder using Apple's codesign tool. For projects that don't use Mozilla's Release Automation and would like to prepare for the release of OS 10.8 Mountain Lion, this guide should provide some insight into how to make sure applications are signed correctly using Apple's codesign tool. Apple's Code Signing Guide, available here http://developer.apple.com/library/m...roduction.html is also a good resource on the subject.
Thunderbird
Thunderbird is Mozilla's mail/messaging application. These pages document Thunderbird and also provide links to documentation about the MailNews backend which is also used in other projects such as Eudora/Penelope, Seamonkey, Correo, etc.
Using Mozilla code in other projects
There are several ways you can use Mozilla code in your own project.
WebIDL bindings
The WebIDL bindings are generated at build time based on two things: the actual WebIDL file and a configuration file that lists some metadata about how the WebIDL should be reflected into Gecko-internal code.
XPCOM
XPCOM is a cross platform component object model, similar to Microsoft COM. It has multiple language bindings, allowing XPCOM components to be used and implemented in JavaScript, Java, and Python in addition to C++.
XPConnect
XPConnect is a bridge between JavaScript and XPCOM. With XPConnect, you can use XPCOM components from JavaScript code, and interact with JavaScript objects from within XPCOM components.
XPIDL
XPIDL is an Interface Description Language used to specify XPCOM interface classes.
js-ctypes
js-ctypes allows application and extension code to call back and forth to native code written in C. C++ support is limited, see bug 505907 for full support. Unlike binary XPCOM components, It allows developers to ship a single binary for use with multiple versions of Firefox.

Document Tags and Contributors

Contributors to this page: ziyunfei, Sheppy, evilpie, ethertank, DavidWalsh
Last updated by: Sheppy,