mazilla mozilla
What's mozilla
Purpose of this page
Characteristics of mozilla
Survey of mozilla
Web tool
Technology of mozilla
Other resource
Building mozilla
Construction of environment
for building
Checkout of source
Procedure for building
Image of after-building
Execute mozilla
What's embedding
Concept of embedding
Structure of PPBrowser
Analysis of PPBrowser
Structure of embedding
Structure of marbrow
Analysis of marbrow
What's fizzilla
Build fizzilla
Embedding of fizzilla
Talk with Mr. Yatsugi

Survey of mozilla

How is mozilla ?

On this section, I give the outline of mozilla to see how mozilla is made up.

Strictly speaking, mozilla has various projects. And the browser front-end project which is called "mozilla" as a whole, is the project "SeaMonkey".

The projects other than SeaMonkey are such as

  • L10N - Localization
  • Grendel - Mail news client written in Java
  • Electrical Fire - Java Virtural Machine that uses JIT (Just In Time) compilation techniques
  • Rhino - Javascript engine written in Java
  • Gnome - GNOME project
  • Classic - Mozilla classic

Because mozilla is massive, to understand its structure, it is necessary to see it from various aspects.


The source code of mozilla is managed by being divided into various modules. They correspond to directories which are placed on top level on the mozilla source tree (mozilla/*/).

I show the main modules below.

  • docshell - Core part of web browser
  • dom - DOM (Document Object Model) process
  • editor - HTML editor
  • embedding - Upper level embedding of web browser
  • expat - Well-formed XML, DTD parser (It doesn't seem to be used)
  • gfx - Cross-platform lower level drawing process
  • htmlparser - HTML, XML parser (formats into an in-memory tree structure)
  • intl - Process for various character code setting and locale
  • jpeg - JPEG drawing process
  • js - Javascript
  • layout - Layout engine of browser (this is sometimes called Gecko)
  • lib - This includes basic library necessary to Macintosh programmer
  • mailnews - Mail & news component
  • netwerk - Network process (shifted from old network, sometimes called netlib, Necko)
  • nsprpub - Cross-platform C runtime library
  • profile - User profile management
  • uriloader - This invokes the correct viewer for a URL content
  • view - View process, for example scrolling view
  • webshell - Medium level of web browser (this functions are divided into docshell etc and this is being reduced)
  • widget - Cross-platform visual controls (scroll-bar, radio-button, list-box,...j
  • xpcom - Cross-platform COMiComponent Object Modelj
  • xpfe - Cross-platform front-end
  • xpinstall - Smart update process

Web tool

There are various Web tools to use mozilla conveniently. These can be accessed from HP of mozilla

CVS (Concurrent Versions System)

This is the tool used for managing the source code of mozilla. This is used for source code generation management and helps development by multiple persons. Client program widely used in mozilla for Macintosh is MacCVS Pro, but there are other candidates.

LXR (Mozilla Cross-Reference)

Contents of the latest mozilla source code can be browsed and searched.


This is the tool for the source tree management. This enables us to search check-in history of mozilla source code which is managed by CVS, to see logs or to get Diffs.


At, there are machines building the latest source on every platform all the time. Tinderbox is the page made by cgi, in which this building status are shown graphically (shown in colors). Let's check Tinderbox before we check-out.


This is the system to manage bugs of mozilla. This enables us to search contents of bugs already posted, and post bugs you found.

Technology of mozilla

XPCOM (Cross Platform Component Object Model)

This is the technology to change program modules into components. This was modeled after COM of Microsoft, and mozilla enhance it to be used as cross-platform.

Characteristics of COM itself are such as

  • Every component can manage reference count from clients, create & dispose of itself automatically.
  • Clients do AddRef when using one component, and do Release when finishing to use it.
  • From clients, every component looks like a group of some interfaces.
  • Clients gets and uses desired interface by doing QueryInterface to component.

This XPCOM is the most important technological key point for modularization and cross platform of mozilla.


This is a smart pointer for XPCOM. This is more convinient than a raw COM Interface pointer, 'cause nsCOMPtr manages AddRef, Release and QueryInterface automatically. Just like a pointer of C or C++, you can apply * or -> to it to `get to' what it points at.


This is a (character) string class for XPCOM.


This is a technology to enable interoperation between Javascript <-> C++, IDL, Interface. Interface described by IDL and implemented by C++ can be called from Javascript, and Javascript can be called from Interface described by IDL and implemented by C++.

XPIDL (Cross Platform Interface Description Language)

This is a cross-platform interface description language used to define XPCOM Interface classes.

XBL (Extensible Bindings Language)

This is a markup language for defining "binding" that is attached to elements of external documents. This is based on XML. Binding can be attached to elements by using CSS or DOM. These elements are called "bound elements" and come to work according to new action specified by binding.

XPFE (Mozilla's Cross Platform Front End)

This is a general term of cross-platform front-end of mozilla. This is worked synthetically by a gathering of parts such as XPToolKit and XUL.


This is concrete individual user interface parts used for actualization of the above XPFE.

XUL (XML-based User-interface Language)

This is a language based on XML for describing the structure of user interface of mozilla. By making this external file and modify this file, you can change mozilla's look and feel dynamically.

NSPR (Cross Platform operating system facilities)

This is a cross-platform OS runtime library. This has functions such as thread management, file management, network management, date & time management, memory management (malloc, free) and shared library linking.

Other resource

News group & mailing list

Mozilla is ever-changing.

The best shortcut to get an information of the latest mozilla is to take part in the news group or mailing list of modules and fields you are interested in.

When you fall into some trouble and you can't get the answer by yourself, let's ask the corresponding mailing list about it.

Module owner

In mozilla, there are persons responsible for each module, who are called "module owners".

And, there is a person who is not actually a module owner but responsible for the whole fields about Macintosh (including embedding). His name is

Mr. Mike Pinkerton [ email ]

Copyright (C) 2000-2002 Symphony, Inc. All Rights Reserved.