Mozilla Source Code Directory Structure

  • Revision slug: Mozilla_Source_Code_Directory_Structure
  • Revision title: Mozilla Source Code Directory Structure
  • Revision id: 40184
  • Created:
  • Creator: DBaron
  • Is current revision? No
  • Comment /* The Source Code Directory Structure */ fix many of the definitions, A-G

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.

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.

Someone should merge into this doc, and remove the notes of "empty directories", which are to be considered removed (which CVS doesn't support). Also, maybe this should limit itself to those things that are actually part of mozilla as checked out by client.mk, although maybe not.

README/

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

accessible/

Provides the hooks (connections to system APIs, such as MSAA) to enable support for hearing and sight impaired users.

apache

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


browser/

Contains the front end code (in XUL, Javascript, and XBL) for the Firefox browser. Many of these files started off as a copy of files in #xpfe/.

build/

Files related to the build process. (See also #config/.)

calendar/

This directory contains the code for the Sunbird application and Lightning extension. More up-to-date information about the subdirectory structure can be found in the relevant section of the draft Developer's Guide.

camino/

Contains the code to build camino which is a mozilla based browser customized for the MacOS look & feel. It is a native Mac application, i.e., not written in XUL.

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

Netscape's Client Customization Kit. See http://www.mozilla.org/projects/cck/. Superseded by {{template.Source("extensions/cck")}} (for Firefox).


chrome/

Chrome registry and chrome:// protocol handler, toolkit version. These files were originally copies of files in #rdf/.

composer/

The front end code (XUL and Javascript) for the standalone composer application.

config/

Files related to the build process. (See also #build/.)

content/

The data structures that represent the structure of Web pages (documents, elements, text nodes, etc.). These objects contain the implementation of many DOM interfaces and also implement some behaviors associated with those objects, such as link handling, form control behavior and form submission.

This also contains the code for XUL templates, XBL, XSLT, XTF, and other related standards.

db/

Contains the code of database libraries used by Mozilla:

  • Mork (the mdb and mork directories) (used to store mail box data, news data and global history data.)
  • sqlite (used for newer projects, with the goal of replacing Mork uses)

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 code that deals with LDAP directory servers.

docshell/

Contains the outermost layer of the embedding API used to embed a Gecko browser into an application. See also #webshell/.

dom/

Contains:

  • IDL definitions of the interfaces defined by the DOM specifications and Mozilla extensions to those interfaces
  • The parts of the connection between JavaScript and the implementations of DOM objects that are specific both to JavaScript and to the DOM. (The parts that are not DOM-specific, i.e., the generic binding between XPCOM and Javascript, live in #xpconnect/.)
  • implementations of a few of the core "DOM Level 0" objects, such as window, navigator, location, etc.

editor/

The backend C++ code for HTML and text editing in Mozilla, and also the frontend code for the SeaMonkey 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.

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/

Contains a cross-platform graphics API and its implementation on a number of platforms, and some simple classes (e.g., nsPoint, nsRect) for dealing with that API.

Also contains cairo and thebes, which are intended to replace the older API here.

gfx2/

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

grendel/

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

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/

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

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."

netwerk/

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

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). For full documentation see the NSPR API Reference

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).

*/

security/

A bunch of different things related to security.

storage

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

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.

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!)

uriloader/

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

view/

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

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 XPCOM

xpfe

Lots of things in several directories:

AppCores  Makefile.in         apprunner  bootstrap  communicator  global    main  tools    xpfe.pkg
CVS       appfilelocprovider  appshell   browser    components    macbuild  test  widgets  xpviewer

xpinstall/

Code/tools/scripts related to packaging & installing mozilla plugins.

xulrunner/

setup/nsXULAppInstall.js says it's the original "Mozilla XULrunner". Don't know what this is. Something related to themes or something?

zap

Obsolete & Empty Directories

There are many old directories laying around: base/ admin/ chimera/ cmd/ expat/ htmlparser/ include/ l10n/ mozilla/ mzlu/ nav-java network/ nglayout nunet registry shell silentdl string timer tripledb wallet/ xpcom_obsolete xpfc

That's all folks!

Revision Source

<h3 name="Overview"> Overview </h3>
<p>The mozilla source code for all projects (<a class="external" href="http://www.mozilla.org/projects/firefox/">Firefox</a>, <a class="external" href="http://www.mozilla.org/projects/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 <a href="en/Download_Mozilla_Source_Code">compressed file of a snapshot</a> of the sources or you can <a href="en/Mozilla_Source_Code_Via_CVS">check out the current sources from cvs</a>.
</p>
<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><p>Someone should merge <a class="external" href="http://stud4.tuwien.ac.at/~e0225227/tree_structure.txt"> into this doc, and remove the notes of "empty directories", which are to be considered removed (which CVS doesn't support). Also, maybe this should limit itself to those things that are actually part of mozilla as checked out by client.mk, although maybe not.
</a></p><a class="external" href="http://stud4.tuwien.ac.at/~e0225227/tree_structure.txt">
<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 (connections to system APIs, such as MSAA) to enable support for hearing and sight impaired users.
</p>
<h4 name="apache"> apache </h4>
<p>Contains apache/gzip/src/modules/do_gzip/mod_gzip_content.c
</p><p><br>
</p>
<h4 name="browser.2F"> browser/ </h4>
</a><p><a class="external" href="http://stud4.tuwien.ac.at/~e0225227/tree_structure.txt">Contains the front end code (in XUL, Javascript, and XBL) for the Firefox browser.  Many of these files started off as a copy of files in </a><a href="#xpfe.2F">#xpfe/</a>.
</p>
<h4 name="build.2F"> build/ </h4>
<p>Files related to the build process.  (See also <a href="#config.2F">#config/</a>.)
</p>
<h4 name="calendar.2F"> calendar/ </h4>
<p>This directory contains the code for the Sunbird application and Lightning extension.  More up-to-date information about the subdirectory structure can be found in the <a class="external" href="http://wiki.mozilla.org/Calendar:Dev_Guide#Folder_Structure">relevant section</a> of the <a class="external" href="http://wiki.mozilla.org/Calendar:Dev_Guide">draft Developer's Guide</a>.
</p>
<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.  It is a native Mac application, i.e., not written in XUL.
</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>Netscape's Client Customization Kit. See http://www.mozilla.org/projects/cck/. Superseded by {{template.Source("extensions/cck")}} (for Firefox).
</p><p><br>
</p>
<h4 name="chrome.2F"> chrome/ </h4>
<p>Chrome registry and <code>chrome://</code> protocol handler, toolkit version.  These files were originally copies of files in <a href="#rdf.2F">#rdf/</a>.
</p>
<h4 name="composer.2F"> composer/ </h4>
<p>The front end code (XUL and Javascript) for the standalone composer application.
</p>
<h4 name="config.2F"> config/ </h4>
<p>Files related to the build process.  (See also <a href="#build.2F">#build/</a>.)
</p>
<h4 name="content.2F"> content/ </h4>
<p>The data structures that represent the structure of Web pages (documents, elements, text nodes, etc.).  These objects contain the implementation of many DOM interfaces and also implement some behaviors associated with those objects, such as link handling, form control behavior and form submission.
</p><p>This also contains the code for XUL templates, XBL, XSLT, XTF, and other related standards.
</p>
<h4 name="db.2F"> db/ </h4>
<p>Contains the code of database libraries used by Mozilla:
</p>
<ul><li> Mork (the mdb and mork directories) (used to store mail box data, news data and global history data.)
</li><li> sqlite (used for newer projects, with the goal of replacing Mork uses)
</li></ul>
<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 code that deals with LDAP directory servers.
</p>
<h4 name="docshell.2F"> docshell/ </h4>
<p>Contains the outermost layer of the embedding API used to embed a Gecko browser into an application.  See also <a href="#webshell.2F">#webshell/</a>.
</p>
<h4 name="dom.2F"> dom/ </h4>
<p>Contains:
</p>
<ul><li> IDL definitions of the interfaces defined by the DOM specifications and Mozilla extensions to those interfaces
</li><li> The parts of the connection between JavaScript and the implementations of DOM objects that are specific both to JavaScript and to the DOM.  (The parts that are not DOM-specific, i.e., the generic binding between XPCOM and Javascript, live in <a href="#xpconnect.2F">#xpconnect/</a>.)
</li><li> implementations of a few of the core "DOM Level 0" objects, such as window, navigator, location, etc.
</li></ul>
<h4 name="editor.2F"> editor/ </h4>
<p>The backend C++ code for HTML and text editing in Mozilla, and also the frontend code for the SeaMonkey 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="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>Contains a cross-platform graphics API and its implementation on a number of platforms, and some simple classes (e.g., nsPoint, nsRect) for dealing with that API.
</p><p>Also contains cairo and thebes, which are intended to replace the older API here.
</p>
<h4 name="gfx2.2F"> gfx2/ </h4>
<p>Contains "GFX2: The widget/gfx redesign" from 2002 in proposal.html.  Obsolete.
</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="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="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="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="netwerk.2F"> netwerk/ </h4>
<p>This seems to be where the network support code is for mozilla.
</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). For full documentation see the <a class="external" href="http://developer.mozilla.org/en/docs/NSPR_API_Reference">NSPR API Reference</a>
</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="security.2F"> security/ </h4>
<p>A bunch of different things related to security.
</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="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="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="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="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">XPCOM</a>
</p>
<h4 name="xpfe"> xpfe </h4>
<p>Lots of things in several directories:
</p>
<pre class="eval">AppCores  Makefile.in         apprunner  bootstrap  communicator  global    main  tools    xpfe.pkg
CVS       appfilelocprovider  appshell   browser    components    macbuild  test  widgets  xpviewer
</pre>
<h4 name="xpinstall.2F"> xpinstall/ </h4>
<p>Code/tools/scripts related to packaging &amp; installing mozilla plugins.
</p>
<h4 name="xulrunner.2F"> xulrunner/ </h4>
<p>setup/nsXULAppInstall.js says it's the original "Mozilla XULrunner". Don't know what this is. Something related to themes or something?
</p>
<h4 name="zap"> zap </h4>
<h4 name="Obsolete_&amp;_Empty_Directories"> Obsolete &amp; Empty Directories </h4>
<p>There are many old directories laying around: base/ admin/  chimera/  cmd/  expat/  htmlparser/  include/  l10n/  mozilla/ mzlu/ nav-java network/ nglayout nunet registry shell silentdl string timer tripledb wallet/ xpcom_obsolete xpfc
</p><p>That's all folks!
</p>
Revert to this revision