These are some of the abbreviations and words I have come across while working with the Mozilla community:


Add-ons are a way of extending the browser, it can be in the form of a plug-in, an extension, a new search engine or a visual theme.


Asynchronous JavaScript and XML (AJAX) is a technique where the JavaScript that is running on a page can communicate with a server (the asynchronous part) and update the DOM/content of the page in the browser.


Used in Gecko as the graphics rendering engine.


Chrome is made from XUL and JavaScript, it is the user interface that you see when using the browser.

In Mozilla terms Chrome should not be confused with Google Chrome (a web browser) or Google Chrome OS (a Linux clone)


The Document Object Model is the way the contents of a web page is stored in memory in the browser.

Scripts on a page can manipulate the DOM, that is they can change the contents of a page runtime.


See electrolysis


Electrolysis is the code name for the project that is adding processes into the Firefox browser family (processes as in a CPU process, not to be confused for rules or steps that must be performed to do something)


An extension is something that extends the browser in functionallity and/or user interface, like Firefox Sync (Weave) - but it isn't things like a new video decoder, this would usually be a plug-in - even the excact difference isn't clear.


Gecko is a cross platform layout engine that can render web content and XUL GUIs. See Thebes and Cairo.


An idl language for interfaces between processes (hence the 'P'). Created as part of the Electrolysis project.

The official meaning of IPDL is : "Inter-*-communication Protocol Definition Language" where the '*' means thread/process/...

The language is more advanced than your typical IDL language as it also deals with the different states the protocol can be in, and it describes what "events" that can be used depending on the state the interface is in.


Localization, the art of having the software UI appear in different human languages, and the translation from one language to the other.

Mochi test

Unit test suite.


Necko is the part of the Firefox browser that deals with the network. It is an independent component that can be used in other projects too.

The Electrolysis project will probably change this, so necko no longer will be a stand-alone component. (The price for nice interfaces :) )


An object that handles a document (HTML, XML), a page with multiple frames will have multiple nsDocShells. One of the responsibilities of the nsDocShell is to load the document.

nsDocShell will be in a tree structure with an instance of nsWebBrowser as the root node.


The Netscape Portable Runtime is a cross platform API that defines basic types (like integers, booleans, ...), threading functions, thread synchronization, I/O, strings, dynamic library linking, processes, and other low-level stuff.


Out-Of-Process-Plugin, a plugin that runs in its own process, rather than in the main thread.


A plug-in is something that enables the browser to show/process content from the web that it would other wise not be able to process, like flash or Quicktime.

A plug-in is one of the types of add-ons that you can get for your Firefox browser, see: add-on


When someone makes something in Bugzilla that needs to be reviewed by someone else, it is marked as "r?" to indicate this. This term can be seen outside of Bugzilla too, when comments are requested on other stuff.

If the reviewer approve what ever is up for review, the response to the "r?" is "r+", if there are issues that needs to be resolved before the reviewer can accept the proposal the response will be "r-" this is also seen outside of Bugzilla, like in meeting minutes if an idea has been abandoned.


Review not approved - see "r?"


Review approved - see "r?"


Remote Procedure Call, when code in one process calls a function in another process, or on another machine.


Performance testing suite, its run to check if any patches does speed regressions (slows things down).

You can run Talos locally or look for the results when testing a patch on the try server. For a description on how to run it locally see here.


C++ wrapper layer for Cairo, providing reference counting, and Mozilla specific utility functions.

I'm not sure if Pango (font rendering library) is also wrapped by Thebes, but Thebes has (previously) added more font capabilities than what was supported by Cairo.


The Cross Platform Component Object Model, is a set of interfaces with underlying functionality, that allows Mozilla applications and web pages to access different components - as well as allow one component to interface another one.

XPCOM is cross platform, which means that components written in C++, C and JavaScript can comunicate together.


A language that can be used to describe the look and feel of a GUI


The runtime environment needed to run XUL applications