Mozilla Source Code Directory Structure

  • Revision slug: Mozilla_Source_Code_Directory_Structure
  • Revision title: Mozilla Source Code Directory Structure
  • Revision id: 40167
  • Created:
  • Creator: Jeff Carr
  • Is current revision? No
  • Comment /* xpcom/ */

Revision Content

Overview

The mozilla source code for all projects (Firefox, Thunderbird) is combined into a single tree. This tree contains all the source code for all the projects in the mozilla family and all the code required to build each project on the platforms each project supports (Linux, Windows, Mac OS, etc).

Getting the Source Code

You can download a compressed file of a snapshot of the sources or you can check out the current sources from cvs. Mozilla Source Code Via CVS or Download Mozilla Source Code

Checking out the CVS source can be done with the command:

cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot checkout mozilla

The Source Code Directory Structure

Here is a first attempt to explain what the top level directories in the mozilla cvs repository contain & what they are for.

README/

Contains 2 readme files: mozilla/README.build & mozilla/README.os2

accessible/

Provides the hooks to enable support for hearing and sight impaired users.

admin/

Seemingly empty directory.

apache

Contains apache/gzip/src/modules/do_gzip/mod_gzip_content.c

base/

An empty directory.

browser/

Contains the source code for the Mozilla browser. This code is shared between all ports (Mozilla, Firefox, Camino, etc) and platforms (Linux,Windows,Mac OS, etc).

build/

The files needed to create packages (autoconf,rpm,deb,unix,wince,mac,etc).

calendar/

From the README in calandar/ :

resources/
        content/ - This directory contains all the XUL and JS files needed for the calendar.
              /test      - Test files for the calendar. These are not needed to run it.
        locale/  - Where the text for the calendar ends up, as well as definitions for dates and date formats.
           en-US/
        skin/    - Graphics and CSS files defining the look of the calendar.
           modern/
              ca-event-dialog/ - Graphics and CSS files for the dialog which adds and edits events.
           classic/
              ca-event-dialog/ - Graphics and CSS files for the dialog which adds and edits events.

libxpical/ - An XPCOM interface to the libical library. This is needed to retreive and write calendar information to a file.

camino/

Contains the code to build camino which is a mozilla based browser customized for the MacOS look & feel.

caps/

Capability-based web page security management

caps contains C++ interfaces and code for determining the capabilities of content based on the security settings or certificates (e.g. Verisign).

Source in caps/src/ & caps/include/

cck

??

chimera/

Just an empty directory.

chrome/

The chrome look & feel theme. (chrome/src)

cmd/

Another empty directory.

composer/

The Mozilla HTML Composer.

config/

Files required to configure & prepare Mozilla to be built.

content/

Not sure what this code is for. The important files seems to be the cpp files in content/base/src :

mozSanitizingSerializer.cpp nsAtomListUtils.cpp nsAttrAndChildArray.cpp nsAttrValue.cpp nsCommentNode.cpp nsContentAreaDragDrop.cpp nsContentIterator.cpp nsContentList.cpp nsContentPolicy.cpp nsContentSink.cpp nsContentUtils.cpp nsCopySupport.cpp nsDOMAttribute.cpp nsDOMAttributeMap.cpp nsDOMBuilder.cpp nsDOMDocumentType.cpp nsDOMLists.cpp nsDataDocumentContentPolicy.cpp nsDocument.cpp nsDocumentEncoder.cpp nsDocumentFragment.cpp nsFrameLoader.cpp nsGenConImageContent.cpp nsGeneratedIterator.cpp nsGenericDOMDataNode.cpp nsGenericDOMNodeList.cpp nsGenericElement.cpp nsHTMLContentSerializer.cpp nsImageLoadingContent.cpp nsMappedAttributes.cpp nsNameSpaceManager.cpp nsNodeInfo.cpp nsNodeInfoManager.cpp nsObjectLoadingContent.cpp nsParserUtils.cpp nsPlainTextSerializer.cpp nsPropertyTable.cpp nsRange.cpp nsScriptEventManager.cpp nsScriptLoader.cpp nsStubDocumentObserver.cpp nsStyleLinkElement.cpp nsSyncLoadService.cpp nsTextFragment.cpp nsTextNode.cpp nsTreeWalker.cpp nsXMLContentSerializer.cpp nsXMLNameSpaceMap.cpp

db/

mdb/Mork general-purpose database

db contains C++ code for the mdb/Mork database which is a low-level, general-purpose and cross-platform file library. It is used to store mail box data, news data and global history data.

dbm/

Source for this db in dbm/src/ and is still being occationally updated in 2005 to it must be used for something.

directory/

Contains things in the following directories: c-sdk/ java-sdk/ perldap/ tools/ xpcom/

docshell/

Probably the code to control how the entry text box works. Main files are: base/nsDocShell.cpp shistory/src/nsSHistory.cpp base/nsWebShell.cpp base/nsDocShell.h base/nsDefaultURIFixup.cpp

dom/

Contains many .idl files in public/idl/ and some source code in src/base/

editor/

The Mozilla HTML editor.

ef/

Electrical Fire is the code name for a multi-platform Just-In-Time Java compiler (JIT). For more information, see the Electrical Fire homepage (The homepage states this project was dropped in 1998).

embedding/

Contains projects related to embedding Mozilla projects into things. Includes things like the [Minimo Project] which is intended on minimizing the memory footprint of Mozilla.

expat/

Just an empty directory.

extensions/

Code for the various Mozilla extentions is in here. There are many! access-builtin auth cck chimera content-packs cookie ctl cview datetime editor finger gnomevfs help inspector interfaceinfo irc java jssh layout-debug lightning manticore mono negotiateauth p3p pageInfo permissions pgpmail pics pref preloader psm-glue python reporter schema-validation spatialnavigation spellcheck sql sroaming tasks transformiix tridentprofile typeaheadfind universalchardet venkman vixen wallet webdav webservices xforms xml-rpc xmlextras xmlprettyprinter xmlterm

gc/

Contains the boehm general purpose, garbage collecting storage allocator. Not sure of anything uses this or not. Original code in boehm/ is circa 1999 & 2000. boehm/leaksoup/ and boehm/xSYM/ were added in March 2002.

gconfig/

Files used to configure the build enviornment for the various platforms that Mozilla supports (or supported in the past) as targets: (AIX AIX3.2 AIX4.1 AIX4.2 AIX4.3 FreeBSD2 HP-UX HP-UXA.09.03 HP-UXA.09.07 HP-UXA.09 HP-UXB.10.01 HP-UXB.10.10 HP-UXB.10.20 HP-UXB.10.30 HP-UXB.10 HP-UXB.11.00 HP-UXB.11 IRIX IRIX5.2 IRIX5.3 IRIX5 IRIX6.2 IRIX6.3 IRIX6 Linux Linux2.0.34_x86 LinuxELF1.2 LinuxELF2.0 NCR3.0 NEC4.2 OSF1 OSF1V2.0 OSF1V3.0 OSF1V3.2 OSF1V4.0 OSF1V4.0B OSF1V4.0D ReliantUNIX ReliantUNIX5.4 SCOOS5.0 SCO_SV3.2 SunOS4.1.3_U1 SunOS5.3 SunOS5.4 SunOS5.4_i86pc SunOS5.5.1 SunOS5.5.1_i86pc SunOS5.5 SunOS5.6 SunOS5.6_i86pc SunOS5 UNIX UNIXWARE2.1 WIN16 WIN32 WIN954.0 WINNT3.51 WINNT4.0)

gfx/

Most of the files are in the cairo/ src/ and thebes/ directories.

gfx2/

Contains "GFX2: The widget/gfx redesign" from 2002 in proposal.html.

grendel/

This is Grendel -- a Java mail/news client.

htmlparser/

An empty directory.

include/

An empty directory.

intl/

Support code for the internationalization of Mozilla. The main directories are bidi/ chardet/ ctl/ locale/ lwbrk/ strres/ uconv/ and unicharutil/

ipc/

Contains the code to support InterProcess Communication between Mozilla's products in the directory ipcd/

java/

The Java Enhancers to the Mozilla web browser.

Currently, the only active sub-project is the Webclient Java API to the Mozilla web browser. This project also leverages the JavaDOM sub-project.

The JavaDOM sub-project directories contain Java sources, Java native methods implementation, native c++ code and Java DOM API tests respectively.

Read the build/README.* files for build instructions (blackconnect, blackwood, dom, pluglet and webclient).

jpeg/

The README for the source code in here starts with:

The Independent JPEG Group's JPEG software

README for release 6b of 27-Mar-1998

This distribution contains the sixth public release of the Independent JPEG Group's free JPEG software.

js/

This directory contains the code for the SpiderMonkey (JavaScript-C) Engine.

See the Spider Monkey pages for more information and Documentation.

js2/

The README file has "Build instructions for Epimetheus 10/12/2002" and some notes on how to build it on Linux & Windows. Not sure what it is, but it was probably intended on a code rewrite to the js/

l10n/

An empty directory.

layout/

The Gecko Layout components and classes.

Layout Documentation Overview

High Level Design Template

Detailed Design Template

lib/

All the directories are empty except for the mac/ directory. Most of the files in there are in mac/UserInterface/

mail/

Code for Mozilla based mail clients like Thunderbird.

mailnews/

More code for Thunderbird.

minimo/

Not sure what this is for, mostly just contains the directory chrome/

modules/

Contains a number of module directories: appfilelocprovider calendar coreincl edtplug files fullsoft ipc libbz2 libeclient libfont libhook libimg libjar libmar libnls libpr0n libpref libreg libtest libutil makefile.win mozinfo mpfilelocprovider oji plugin progress rdf schedulr security softupdt staticmod transactionmngr unicharutil xml zlib

mozilla/

An empty directory.

msgsdk/

The "Netscape Messaging Access SDK" which contains a bunch of code in a C/ and java/ directory.

mstone/

"MSTONE 4.2

Mstone is a mail server performance testing tool designed to simulate the different types and volume of mail traffic a mail server would experience during a peak activity period. Mstone was formerly known as Mailstone."

mzlu/

Another empty directory.

nav-java

Another empty directory.

netwerk/

This seems to be where the network support code is for mozilla.

network/

This directory is full of empty directories.

nglayout

Another empty directory.

nsprpub/

The "NetScape Portable Runtime" code. This mainly seems to be the lib/libc/ directory: "NSPR 2.0 libc functions". This directory contains various libc-types of functions. All functions in this directory are platform independent, thread friendly (both safe and efficient).

nunet

Another empty directory.

other-licenses

The subdirectories of the other-licenses directory contain Mozilla-related source code that is _not_ licensed under the traditional Mozilla licensing schemes (i.e., the Mozilla Public License, Netscape Public License, MPL/GPL or NPL/GPL dual licenses, or the MPL/GPL/LGPL or NPL/GPL/LGPL tri-licenses). In particular, the requirements imposed by the license terms for the source code in the other-licenses directory may be different from the requirements imposed by the terms of the MPL or NPL. (7zstub, Xft, freetype, libart_lgpl, etc).

parser/

Contains the expat HTML/XML parser.

plugin/

Contains only an oji/ directory. This is the code that implements plugins in the Mozilla products.

privacy/

Handled in src/privacy.c and src/receipt.c.

profile/

Must be the code for handling user profiles.

rdf/

Not totally sure what is in here. base/src/nsInMemoryDataSource.cpp says:

/*

 Implementation for an in-memory RDF data store.

 TO DO

 1) Instrument this code to gather space and time performance
    characteristics.

 2) Optimize lookups for datasources which have a small number
    of properties + fanning out to a large number of targets.

 3) Complete implementation of thread-safety; specifically, make
    assertions be reference counted objects (so that a cursor can
    still refer to an assertion that gets removed from the graph).

*/

registry

Finally a directory that is appropriately empty.

security/

A bunch of different things related to security.

shell

empty

silentdl

empty

storage

Not sure what this is for. Some of it was written by Oracle. Source is in storage/src/

string

Another empty directory.

suite/

Contains about 5 files for the See Monkey Suite. Looks like just images, etc.

sun-java/

Several header files in the stubs/ directory. When will Sun open source Java?

themes/

Includes the "blue" "classic" and "modern" themes. Readme says: questions to pixeljockeys@netscape.com.

timer

empty dir

toolkit/

Lots of stuff. The big directories are components/ content/ locales/ mozapps/ themes/

tools/

This directory is for miscellaneous tools associated with mozilla.

Table of Contents

* cvs.py
   A python script to checkout trees with multiple threads.
   Works on Unix and Windows. I have not tested the Mac.
   With this script, pulls can take five minutes instead of twenty.
   Of course, this script pounds the cvs server three times as hard,
   so use it with discretion.

* trees.pl (a.k.a moz)
   A perl script to navigate mozilla source trees.
   Run trees -h for usage. You will probably need to copy 'trees.pl' into
   your home directory somewhere (Just be careful to keep it up to date).
   Wrap 'trees.pl' in a shell alias called 'moz' to let you do things like,
     moz gecko webshell   - cd to webshell directory in gecko tree
     moz gecko2           - cd to same directory in gecko2 tree
     moz /                - cd to the root of the tree
     moz -o               - cd to the same subdir in the object directory

* mozilla/tools/build
   This directory is for tools that facilitate the building of the
   mozilla source code (the browser, the sdks, etc.).

* mozilla/tools/project-editor
   CGI interface to Machintosh Project Editor

* mozilla/tools/tests
   <synopsis: write me>

* mozilla/tools/tinderbox
   Scripts associated with the client-side of tinderbox.
   (scripts to checkout, build, and report the status of the tree to a
    tinderbox server.)

* lots of other stuff (need documentation!)

tripledb

-ENODIR

uriloader/

Contains code in the base/ exthandler/ and prefetch/ directories.

view/

Contains a few source files in src/ like View.cpp.

wallet/

another empty directory.

webshell/

Four .idl files in public/ along with a tests/viewer/ directory.

webtools/

Another big directory. Some of the big directories are: bugzilla/ addons/ litmus/

widget/

Has the include files for the widgets mozilla defines & uses in the public/ directory. In the src/ directory, there are seperate directories for each operating system that convert those generic widgets into the OS dependent ones.

xpcom/

Contains >www.mozilla.org/projects/xpcom XPCOM

xpcom_obsolete

xpfc

xpfe

xpinstall

xulrunner

zap

That's all folks!

Revision Source

<h3 name="Overview"> Overview </h3>
<p>The mozilla source code for all projects (<a href="en/Firefox">Firefox</a>, <a href="en/Thunderbird">Thunderbird</a>) is combined into a single tree. This tree contains all the source code for all the projects in the mozilla family and all the code required to build each project on the platforms each project supports (Linux, Windows, Mac OS, etc).
</p>
<h3 name="Getting_the_Source_Code"> Getting the Source Code </h3>
<p>You can download a compressed file of a snapshot of the sources or you can check out the current sources from cvs. <a href="en/Mozilla_Source_Code_Via_CVS">Mozilla Source Code Via CVS</a> or <a href="en/Download_Mozilla_Source_Code">Download Mozilla Source Code</a>
</p><p>Checking out the CVS source can be done with the command:
</p>
<pre class="eval">cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot checkout mozilla
</pre>
<h3 name="The_Source_Code_Directory_Structure"> The Source Code Directory Structure </h3>
<p>Here is a first attempt to explain what the top level directories in the mozilla cvs repository contain &amp; what they are for.
</p>
<h4 name="README.2F"> README/ </h4>
<p>Contains 2 readme files: mozilla/README.build &amp; mozilla/README.os2
</p>
<h4 name="accessible.2F"> accessible/ </h4>
<p>Provides the hooks to enable support for hearing and sight impaired users.
</p>
<h4 name="admin.2F"> admin/ </h4>
<p>Seemingly empty directory.
</p>
<h4 name="apache"> apache </h4>
<p>Contains apache/gzip/src/modules/do_gzip/mod_gzip_content.c
</p>
<h4 name="base.2F"> base/ </h4>
<p>An empty directory.
</p>
<h4 name="browser.2F"> browser/ </h4>
<p>Contains the source code for the Mozilla browser. This code is shared between all ports (Mozilla, Firefox, Camino, etc) and platforms (Linux,Windows,Mac OS, etc).
</p>
<h4 name="build.2F"> build/ </h4>
<p>The files needed to create packages (autoconf,rpm,deb,unix,wince,mac,etc).
</p>
<h4 name="calendar.2F"> calendar/ </h4>
<p>From the README in calandar/ :
</p>
<pre class="eval">resources/
        content/ - This directory contains all the XUL and JS files needed for the calendar.
              /test      - Test files for the calendar. These are not needed to run it.
        locale/  - Where the text for the calendar ends up, as well as definitions for dates and date formats.
           en-US/
        skin/    - Graphics and CSS files defining the look of the calendar.
           modern/
              ca-event-dialog/ - Graphics and CSS files for the dialog which adds and edits events.
           classic/
              ca-event-dialog/ - Graphics and CSS files for the dialog which adds and edits events.

libxpical/ - An XPCOM interface to the libical library. This is needed to retreive and write calendar information to a file.
</pre>
<h4 name="camino.2F"> camino/ </h4>
<p>Contains the code to build <a class="external" href="http://www.mozilla.org/projects/camino/homepage.html">camino</a> which is a mozilla based browser customized for the MacOS look &amp; feel.
</p>
<h4 name="caps.2F"> caps/ </h4>
<p>Capability-based web page security management
</p><p>caps contains C++ interfaces and code for determining the capabilities
of content based on the security settings or certificates (e.g. Verisign).
</p><p>Source in caps/src/ &amp; caps/include/
</p>
<h4 name="cck"> cck </h4>
<p>??
</p>
<h4 name="chimera.2F"> chimera/ </h4>
<p>Just an empty directory.
</p>
<h4 name="chrome.2F"> chrome/ </h4>
<p>The chrome look &amp; feel theme. (chrome/src)
</p>
<h4 name="cmd.2F"> cmd/ </h4>
<p>Another empty directory.
</p>
<h4 name="composer.2F"> composer/ </h4>
<p>The Mozilla HTML Composer.
</p>
<h4 name="config.2F"> config/ </h4>
<p>Files required to configure &amp; prepare Mozilla to be built.
</p>
<h4 name="content.2F"> content/ </h4>
<p>Not sure what this code is for. The important files seems to be the cpp files in content/base/src :
</p><p><a href="en/MozSanitizingSerializer.cpp">mozSanitizingSerializer.cpp</a> <a href="en/NsAtomListUtils.cpp">nsAtomListUtils.cpp</a> <a href="en/NsAttrAndChildArray.cpp">nsAttrAndChildArray.cpp</a> <a href="en/NsAttrValue.cpp">nsAttrValue.cpp</a> <a href="en/NsCommentNode.cpp">nsCommentNode.cpp</a> <a href="en/NsContentAreaDragDrop.cpp">nsContentAreaDragDrop.cpp</a> <a href="en/NsContentIterator.cpp">nsContentIterator.cpp</a> <a href="en/NsContentList.cpp">nsContentList.cpp</a> <a href="en/NsContentPolicy.cpp">nsContentPolicy.cpp</a> <a href="en/NsContentSink.cpp">nsContentSink.cpp</a> <a href="en/NsContentUtils.cpp">nsContentUtils.cpp</a> <a href="en/NsCopySupport.cpp">nsCopySupport.cpp</a> <a href="en/NsDOMAttribute.cpp">nsDOMAttribute.cpp</a> <a href="en/NsDOMAttributeMap.cpp">nsDOMAttributeMap.cpp</a> <a href="en/NsDOMBuilder.cpp">nsDOMBuilder.cpp</a> <a href="en/NsDOMDocumentType.cpp">nsDOMDocumentType.cpp</a> <a href="en/NsDOMLists.cpp">nsDOMLists.cpp</a> <a href="en/NsDataDocumentContentPolicy.cpp">nsDataDocumentContentPolicy.cpp</a> <a href="en/NsDocument.cpp">nsDocument.cpp</a> <a href="en/NsDocumentEncoder.cpp">nsDocumentEncoder.cpp</a> <a href="en/NsDocumentFragment.cpp">nsDocumentFragment.cpp</a> <a href="en/NsFrameLoader.cpp">nsFrameLoader.cpp</a> <a href="en/NsGenConImageContent.cpp">nsGenConImageContent.cpp</a> <a href="en/NsGeneratedIterator.cpp">nsGeneratedIterator.cpp</a> <a href="en/NsGenericDOMDataNode.cpp">nsGenericDOMDataNode.cpp</a> <a href="en/NsGenericDOMNodeList.cpp">nsGenericDOMNodeList.cpp</a> <a href="en/NsGenericElement.cpp">nsGenericElement.cpp</a> <a href="en/NsHTMLContentSerializer.cpp">nsHTMLContentSerializer.cpp</a> <a href="en/NsImageLoadingContent.cpp">nsImageLoadingContent.cpp</a> <a href="en/NsMappedAttributes.cpp">nsMappedAttributes.cpp</a> <a href="en/NsNameSpaceManager.cpp">nsNameSpaceManager.cpp</a> <a href="en/NsNodeInfo.cpp">nsNodeInfo.cpp</a> <a href="en/NsNodeInfoManager.cpp">nsNodeInfoManager.cpp</a> <a href="en/NsObjectLoadingContent.cpp">nsObjectLoadingContent.cpp</a> <a href="en/NsParserUtils.cpp">nsParserUtils.cpp</a> <a href="en/NsPlainTextSerializer.cpp">nsPlainTextSerializer.cpp</a> <a href="en/NsPropertyTable.cpp">nsPropertyTable.cpp</a> <a href="en/NsRange.cpp">nsRange.cpp</a> <a href="en/NsScriptEventManager.cpp">nsScriptEventManager.cpp</a> <a href="en/NsScriptLoader.cpp">nsScriptLoader.cpp</a> <a href="en/NsStubDocumentObserver.cpp">nsStubDocumentObserver.cpp</a> <a href="en/NsStyleLinkElement.cpp">nsStyleLinkElement.cpp</a> <a href="en/NsSyncLoadService.cpp">nsSyncLoadService.cpp</a> <a href="en/NsTextFragment.cpp">nsTextFragment.cpp</a> <a href="en/NsTextNode.cpp">nsTextNode.cpp</a> <a href="en/NsTreeWalker.cpp">nsTreeWalker.cpp</a> <a href="en/NsXMLContentSerializer.cpp">nsXMLContentSerializer.cpp</a> <a href="en/NsXMLNameSpaceMap.cpp">nsXMLNameSpaceMap.cpp</a>
</p>
<h4 name="db.2F"> db/ </h4>
mdb/Mork general-purpose database<p>

db contains C++ code for the mdb/Mork database which is a low-level,
general-purpose and cross-platform file library. It is used to store
mail box data, news data and global history data.

</p><h4 name="dbm.2F"> dbm/ </h4>
<p>Source for this db in dbm/src/ and is still being occationally updated in 2005 to it must be used for something.
</p>
<h4 name="directory.2F"> directory/ </h4>
<p>Contains things in the following directories: <a href="en/C-sdk">c-sdk/</a> <a href="en/Java-sdk">java-sdk/</a> <a href="en/Perldap">perldap/</a> <a href="en/Tools">tools/</a> <a href="en/Xpcom">xpcom/</a>
</p>
<h4 name="docshell.2F"> docshell/ </h4>
<p>Probably the code to control how the entry text box works. Main files are: <a href="en/Base%2f%2fnsDocShell.cpp">base/nsDocShell.cpp</a> <a href="en/Shistory%2f%2fsrc%2f%2fnsSHistory.cpp">shistory/src/nsSHistory.cpp</a> <a href="en/Base%2f%2fnsWebShell.cpp">base/nsWebShell.cpp</a> <a href="en/Base%2f%2fnsDocShell.h">base/nsDocShell.h</a> <a href="en/Base%2f%2fnsDefaultURIFixup.cpp">base/nsDefaultURIFixup.cpp</a>
</p>
<h4 name="dom.2F"> dom/ </h4>
<p>Contains many .idl files in public/idl/ and some source code in src/base/
</p>
<h4 name="editor.2F"> editor/ </h4>
<p>The Mozilla HTML editor.
</p>
<h4 name="ef.2F"> ef/ </h4>
<p>Electrical Fire is the code name for a multi-platform Just-In-Time Java
compiler (JIT). For more information, see the <a class="external" href="http://www.mozilla.org/projects/ef">Electrical Fire homepage</a> (The homepage states this project was dropped in 1998).
</p>
<h4 name="embedding.2F"> embedding/ </h4>
<p>Contains projects related to embedding Mozilla projects into things. Includes things like the [<a class="external" href="http://www.mozilla.org/projects/minimo/">Minimo Project</a>] which is intended on minimizing the memory footprint of Mozilla.
</p>
<h4 name="expat.2F"> expat/ </h4>
<p>Just an empty directory.
</p>
<h4 name="extensions.2F"> extensions/ </h4>
<p>Code for the various Mozilla extentions is in here. There are many! <a href="en/Access-builtin">access-builtin</a> <a href="en/Auth">auth</a> <a href="en/Cck">cck</a> <a href="en/Chimera">chimera</a> <a href="en/Content-packs">content-packs</a> <a href="en/Cookie">cookie</a> <a href="en/Ctl">ctl</a> <a href="en/Cview">cview</a> <a href="en/Datetime">datetime</a> <a href="en/Editor">editor</a> <a href="en/Finger">finger</a> <a href="en/Gnomevfs">gnomevfs</a> <a href="en/Help">help</a> <a href="en/Inspector">inspector</a> <a href="en/Interfaceinfo">interfaceinfo</a> <a href="en/Irc">irc</a> <a href="en/Java">java</a> <a href="en/Jssh">jssh</a> <a href="en/Layout-debug">layout-debug</a> <a href="en/Lightning">lightning</a> <a href="en/Manticore">manticore</a> <a href="en/Mono">mono</a> <a href="en/Negotiateauth">negotiateauth</a> <a href="en/P3p">p3p</a> <a href="en/PageInfo">pageInfo</a> <a href="en/Permissions">permissions</a> <a href="en/Pgpmail">pgpmail</a> <a href="en/Pics">pics</a> <a href="en/Pref">pref</a> <a href="en/Preloader">preloader</a> <a href="en/Psm-glue">psm-glue</a> <a href="en/Python">python</a> <a href="en/Reporter">reporter</a> <a href="en/Schema-validation">schema-validation</a> <a href="en/Spatialnavigation">spatialnavigation</a> <a href="en/Spellcheck">spellcheck</a> <a href="en/Sql">sql</a> <a href="en/Sroaming">sroaming</a> <a href="en/Tasks">tasks</a> <a href="en/Transformiix">transformiix</a> <a href="en/Tridentprofile">tridentprofile</a> <a href="en/Typeaheadfind">typeaheadfind</a> <a href="en/Universalchardet">universalchardet</a> <a href="en/Venkman">venkman</a> <a href="en/Vixen">vixen</a> <a href="en/Wallet">wallet</a> <a href="en/Webdav">webdav</a> <a href="en/Webservices">webservices</a> <a href="en/Xforms">xforms</a> <a href="en/Xml-rpc">xml-rpc</a> <a href="en/Xmlextras">xmlextras</a> <a href="en/Xmlprettyprinter">xmlprettyprinter</a> <a href="en/Xmlterm">xmlterm</a>
</p>
<h4 name="gc.2F"> gc/ </h4>
<p>Contains the boehm general purpose, garbage collecting storage
allocator. Not sure of anything uses this or not. Original code in boehm/ is circa 1999 &amp; 2000. boehm/leaksoup/ and boehm/xSYM/ were added in March 2002.
</p>
<h4 name="gconfig.2F"> gconfig/ </h4>
<p>Files used to configure the build enviornment for the various platforms that Mozilla supports (or supported in the past) as targets: (AIX AIX3.2 AIX4.1 AIX4.2 AIX4.3 FreeBSD2 HP-UX HP-UXA.09.03 HP-UXA.09.07 HP-UXA.09 HP-UXB.10.01 HP-UXB.10.10 HP-UXB.10.20 HP-UXB.10.30 HP-UXB.10 HP-UXB.11.00 HP-UXB.11 IRIX IRIX5.2 IRIX5.3 IRIX5 IRIX6.2 IRIX6.3 IRIX6 Linux Linux2.0.34_x86 LinuxELF1.2 LinuxELF2.0 NCR3.0 NEC4.2 OSF1 OSF1V2.0 OSF1V3.0 OSF1V3.2 OSF1V4.0 OSF1V4.0B OSF1V4.0D ReliantUNIX ReliantUNIX5.4 SCOOS5.0 SCO_SV3.2 SunOS4.1.3_U1 SunOS5.3 SunOS5.4 SunOS5.4_i86pc SunOS5.5.1 SunOS5.5.1_i86pc SunOS5.5 SunOS5.6 SunOS5.6_i86pc SunOS5 UNIX UNIXWARE2.1 WIN16 WIN32 WIN954.0 WINNT3.51 WINNT4.0)
</p>
<h4 name="gfx.2F"> gfx/ </h4>
<p>Most of the files are in the cairo/ src/ and thebes/ directories.
</p>
<h4 name="gfx2.2F"> gfx2/ </h4>
<p>Contains "GFX2: The widget/gfx redesign" from 2002 in proposal.html.
</p>
<h4 name="grendel.2F"> grendel/ </h4>
<p>This is <a class="external" href="http://www.mozilla.org/projects/grendel/">Grendel</a> -- a Java mail/news client.
</p>
<h4 name="htmlparser.2F"> htmlparser/ </h4>
<p>An empty directory.
</p>
<h4 name="include.2F"> include/ </h4>
<p>An empty directory.
</p>
<h4 name="intl.2F"> intl/ </h4>
<p>Support code for the internationalization of Mozilla. The main directories are bidi/ chardet/ ctl/ locale/ lwbrk/ strres/ uconv/ and unicharutil/
</p>
<h4 name="ipc.2F"> ipc/ </h4>
<p>Contains the code to support InterProcess Communication between Mozilla's products in the directory ipcd/
</p>
<h4 name="java.2F"> java/ </h4>
<p>The Java Enhancers to the Mozilla web browser.
</p><p>Currently, the only active sub-project is the Webclient Java API to the
Mozilla web browser.  This project also leverages the JavaDOM
sub-project.
</p><p>The JavaDOM sub-project directories contain Java sources, Java native methods implementation, native c++ code and Java DOM API tests respectively.
</p><p>Read the build/README.* files for build instructions (blackconnect, blackwood, dom, pluglet and webclient).
</p>
<h4 name="jpeg.2F"> jpeg/ </h4>
<p>The README for the source code in here starts with:
</p><p>The Independent JPEG Group's JPEG software
</p><p>README for release 6b of 27-Mar-1998
</p><p>This distribution contains the sixth public release of the Independent JPEG
Group's free JPEG software.
</p>
<h4 name="js.2F"> js/ </h4>
<p>This directory contains the code for the SpiderMonkey (JavaScript-C) Engine.
</p><p>See the <a class="external" href="http://www.mozilla.org/js/spidermonkey/">Spider Monkey</a> pages for more information and Documentation.
</p>
<h4 name="js2.2F"> js2/ </h4>
<p>The README file has "Build instructions for Epimetheus 10/12/2002" and some notes on how to build it on Linux &amp; Windows. Not sure what it is, but it was probably intended on a code rewrite to the js/
</p>
<h4 name="l10n.2F"> l10n/ </h4>
<p>An empty directory.
</p>
<h4 name="layout.2F"> layout/ </h4>
<p>The Gecko Layout components and classes. 
</p><p><a class="external" href="http://lxr.mozilla.org/seamonkey/source/layout/doc/overview.html">Layout Documentation Overview</a>
</p><p><a class="external" href="http://lxr.mozilla.org/seamonkey/source/layout/doc/hld-template.html">High Level Design Template</a>
</p><p><a class="external" href="http://lxr.mozilla.org/seamonkey/source/layout/doc/dd-template.html">Detailed Design Template</a>
</p>
<h4 name="lib.2F"> lib/ </h4>
<p>All the directories are empty except for the mac/ directory. Most of the files in there are in mac/UserInterface/
</p>
<h4 name="mail.2F"> mail/ </h4>
<p>Code for Mozilla based mail clients like <a class="external" href="http://www.mozilla.org/projects/thunderbird/">Thunderbird</a>.
</p>
<h4 name="mailnews.2F"> mailnews/ </h4>
<p>More code for Thunderbird.
</p>
<h4 name="minimo.2F"> minimo/ </h4>
<p>Not sure what this is for, mostly just contains the directory chrome/
</p>
<h4 name="modules.2F"> modules/ </h4>
<p>Contains a number of module directories: <a href="en/Appfilelocprovider">appfilelocprovider</a> <a href="en/Calendar">calendar</a> <a href="en/Coreincl">coreincl</a> <a href="en/Edtplug">edtplug</a> <a href="en/Files">files</a> <a href="en/Fullsoft">fullsoft</a> <a href="en/Ipc">ipc</a> <a href="en/Libbz2">libbz2</a> <a href="en/Libeclient">libeclient</a> <a href="en/Libfont">libfont</a> <a href="en/Libhook">libhook</a> <a href="en/Libimg">libimg</a> <a href="en/Libjar">libjar</a> <a href="en/Libmar">libmar</a> <a href="en/Libnls">libnls</a> <a href="en/Libpr0n">libpr0n</a> <a href="en/Libpref">libpref</a> <a href="en/Libreg">libreg</a> <a href="en/Libtest">libtest</a> <a href="en/Libutil">libutil</a> <a href="en/Makefile.win">makefile.win</a> <a href="en/Mozinfo">mozinfo</a> <a href="en/Mpfilelocprovider">mpfilelocprovider</a> <a href="en/Oji">oji</a> <a href="en/Plugin">plugin</a> <a href="en/Progress">progress</a> <a href="en/Rdf">rdf</a> <a href="en/Schedulr">schedulr</a> <a href="en/Security">security</a> <a href="en/Softupdt">softupdt</a> <a href="en/Staticmod">staticmod</a> <a href="en/Transactionmngr">transactionmngr</a> <a href="en/Unicharutil">unicharutil</a> <a href="en/Xml">xml</a> <a href="en/Zlib">zlib</a>
</p>
<h4 name="mozilla.2F"> mozilla/ </h4>
<p>An empty directory.
</p>
<h4 name="msgsdk.2F"> msgsdk/ </h4>
<p>The "Netscape Messaging Access SDK" which contains a bunch of code in a C/ and java/ directory.
</p>
<h4 name="mstone.2F"> mstone/ </h4>
<p>"MSTONE 4.2
</p><p>Mstone is a mail server performance testing tool designed to simulate
the different types and volume of mail traffic a mail server would
experience during a peak activity period.  Mstone was formerly known
as Mailstone."
</p>
<h4 name="mzlu.2F"> mzlu/ </h4>
<p>Another empty directory.
</p>
<h4 name="nav-java"> nav-java </h4>
<p>Another empty directory.
</p>
<h4 name="netwerk.2F"> netwerk/ </h4>
<p>This seems to be where the network support code is for mozilla.
</p>
<h4 name="network.2F"> network/ </h4>
<p>This directory is full of empty directories.
</p>
<h4 name="nglayout"> nglayout </h4>
<p>Another empty directory.
</p>
<h4 name="nsprpub.2F"> nsprpub/ </h4>
<p>The "NetScape Portable Runtime" code. This mainly seems to be the lib/libc/ directory: "NSPR 2.0 libc functions". This directory contains various libc-types of functions. All functions in this directory are platform independent, thread friendly (both safe and efficient).
</p>
<h4 name="nunet"> nunet </h4>
<p>Another empty directory.
</p>
<h4 name="other-licenses"> other-licenses </h4>
<p>The subdirectories of the other-licenses directory contain Mozilla-related
source code that is _not_ licensed under the traditional Mozilla licensing
schemes (i.e., the Mozilla Public License, Netscape Public License, MPL/GPL
or NPL/GPL dual licenses, or the MPL/GPL/LGPL or NPL/GPL/LGPL tri-licenses).
In particular, the requirements imposed by the license terms for the source
code in the other-licenses directory may be different from the requirements
imposed by the terms of the MPL or NPL. (7zstub, Xft, freetype, libart_lgpl, etc).
</p>
<h4 name="parser.2F"> parser/ </h4>
<p>Contains the expat HTML/XML parser.
</p>
<h4 name="plugin.2F"> plugin/ </h4>
<p>Contains only an oji/ directory. This is the code that implements plugins in the Mozilla products.
</p>
<h4 name="privacy.2F"> privacy/ </h4>
<p>Handled in src/privacy.c and src/receipt.c.
</p>
<h4 name="profile.2F"> profile/ </h4>
<p>Must be the code for handling user profiles.
</p>
<h4 name="rdf.2F"> rdf/ </h4>
<p>Not totally sure what is in here. base/src/nsInMemoryDataSource.cpp says:
</p>
<pre class="eval">/*

 Implementation for an in-memory RDF data store.

 TO DO

 1) Instrument this code to gather space and time performance
    characteristics.

 2) Optimize lookups for datasources which have a small number
    of properties + fanning out to a large number of targets.

 3) Complete implementation of thread-safety; specifically, make
    assertions be reference counted objects (so that a cursor can
    still refer to an assertion that gets removed from the graph).

*/
</pre>
<h4 name="registry"> registry </h4>
<p>Finally a directory that is appropriately empty.
</p>
<h4 name="security.2F"> security/ </h4>
<p>A bunch of different things related to security.
</p>
<h4 name="shell"> shell </h4>
<p>empty
</p>
<h4 name="silentdl"> silentdl </h4>
<p>empty
</p>
<h4 name="storage"> storage </h4>
<p>Not sure what this is for. Some of it was written by Oracle. Source is in storage/src/
</p>
<h4 name="string"> string </h4>
<p>Another empty directory.
</p>
<h4 name="suite.2F"> suite/ </h4>
<p>Contains about 5 files for the See Monkey Suite. Looks like just images, etc.
</p>
<h4 name="sun-java.2F"> sun-java/ </h4>
<p>Several header files in the stubs/ directory. When will Sun open source Java?
</p>
<h4 name="themes.2F"> themes/ </h4>
<p>Includes the "blue" "classic" and "modern" themes. Readme says: questions to pixeljockeys@netscape.com.
</p>
<h4 name="timer"> timer </h4>
<p>empty dir
</p>
<h4 name="toolkit.2F"> toolkit/ </h4>
<p>Lots of stuff. The big directories are components/ content/ locales/ mozapps/ themes/
</p>
<h4 name="tools.2F"> tools/ </h4>
<p>This directory is for miscellaneous tools associated with mozilla.
</p>
<pre class="eval">Table of Contents

* cvs.py
   A python script to checkout trees with multiple threads.
   Works on Unix and Windows. I have not tested the Mac.
   With this script, pulls can take five minutes instead of twenty.
   Of course, this script pounds the cvs server three times as hard,
   so use it with discretion.

* trees.pl (a.k.a moz)
   A perl script to navigate mozilla source trees.
   Run trees -h for usage. You will probably need to copy 'trees.pl' into
   your home directory somewhere (Just be careful to keep it up to date).
   Wrap 'trees.pl' in a shell alias called 'moz' to let you do things like,
     moz gecko webshell   - cd to webshell directory in gecko tree
     moz gecko2           - cd to same directory in gecko2 tree
     moz /                - cd to the root of the tree
     moz -o               - cd to the same subdir in the object directory

* mozilla/tools/build
   This directory is for tools that facilitate the building of the
   mozilla source code (the browser, the sdks, etc.).

* mozilla/tools/project-editor
   CGI interface to Machintosh Project Editor

* mozilla/tools/tests
   &lt;synopsis: write me&gt;

* mozilla/tools/tinderbox
   Scripts associated with the client-side of tinderbox.
   (scripts to checkout, build, and report the status of the tree to a
    tinderbox server.)

* lots of other stuff (need documentation!)
</pre>
<h4 name="tripledb"> tripledb </h4>
<p>-ENODIR
</p>
<h4 name="uriloader.2F"> uriloader/ </h4>
<p>Contains code in the base/ exthandler/ and prefetch/ directories.
</p>
<h4 name="view.2F"> view/ </h4>
<p>Contains a few source files in src/ like View.cpp.
</p>
<h4 name="wallet.2F"> wallet/ </h4>
<p>another empty directory.
</p>
<h4 name="webshell.2F"> webshell/ </h4>
<p>Four .idl files in public/ along with a tests/viewer/ directory.
</p>
<h4 name="webtools.2F"> webtools/ </h4>
<p>Another big directory. Some of the big directories are: bugzilla/ addons/ litmus/
</p>
<h4 name="widget.2F"> widget/ </h4>
<p>Has the include files for the widgets mozilla defines &amp; uses in the public/ directory. In the src/ directory, there are seperate directories for each operating system that convert those generic widgets into the OS dependent ones.
</p>
<h4 name="xpcom.2F"> xpcom/ </h4>
<p>Contains <a class="external" href="http://www.mozilla.org/projects/xpcom">&gt;www.mozilla.org/projects/xpcom XPCOM</a>
</p>
<h4 name="xpcom_obsolete"> xpcom_obsolete </h4>
<h4 name="xpfc"> xpfc </h4>
<h4 name="xpfe"> xpfe </h4>
<h4 name="xpinstall"> xpinstall </h4>
<h4 name="xulrunner"> xulrunner </h4>
<h4 name="zap"> zap </h4>
That's all folks!
Revert to this revision