These articles are archived, obsolete documents about Mozilla, Gecko, and the process of building Mozilla projects.
- ActiveX Control for Hosting Netscape Plug-ins in IE
- Microsoft has removed support for Netscape plug-ins from IE 5.5 SP 2 and beyond. If you are a plug-in author, you may find this project saves you a lot of work!
- ant script to assemble an extension
- This ant script helps to package an extension
- Archived SpiderMonkey docs
- This section contains old SpiderMonkey documentation.
- Autodial for Windows NT
- This document is intended to explain how the autodial helper feature implemented for bug 93002 works and why it works that way.
- Automated testing tips and tricks
- Automatic Mozilla Configurator
- Automatically Handle Failed Asserts in Debug Builds
- As of 2004-12-8, it is now possible to automatically handle failed asserts in debug builds of Mozilla for Windows.
- It is a tool that lets you perform queries on the contents of a CVS archive; you can: get a list of checkins, see what checkins have been made by a given person, or on a given CVS branch, or in a particular time period. It also includes tools for looking at checkin logs (and comments); doing diffs between various versions of a file; and finding out which person is responsible for changing a particular line of code ("cvsblame").
- Bookmark Keywords
- Practically every Web surfer has bookmarks, of course, and power surfers usually have hundreds stuffed into folders within folders. In addition to being handy pointers to useful resources, bookmarks in Mozilla can be used to make the address bar itself a power tool. Searches, lookups, package tracking, and even word definitions can all be retrieved from user-customized bookmarks.
- Building TransforMiiX standalone
- An object implementing
calICalendarView is generally intended to serve as a way of manipulating a set of DOM nodes corresonding to a visual representation of calIEvent and calITodo objects. Because of this close association between methods and attributes on the one hand, and content on the other,
calICalendarViewController provides a way for a calICalendarView to create, modify, and delete items. Implementing a
calICalendarViewController allows for these actions to be performed in a manner consistent with the rest of the application in which the calICalendarView is included.
calIFileType interface provides information about a specific file type.
- [This project may not be active — check Github https://github.com/mozilla/chromeless]
- Creating a Firefox sidebar extension
- This article describes how to create a registered sidebar for Firefox 2 or greater. See the references section for information on creating extension in earlier browsers.
- Creating a hybrid CD
- Creating a Microsummary
- A microsummary generator is a set of instructions for creating a microsummary from the content of a page. Web pages can reference generators via
<link rel="microsummary"> elements in their
<head> elements. Generators can also be independently downloaded and installed by users if they include a list of pages to which they apply.
- Creating a Mozilla Extension
- A Mozilla extension is an installable enhancement to the Mozilla browser that provides additional functionality (for example Linky, which adds an item to the context menu for opening multiple links in a document or selection). This tutorial walks you through the process of building a Mozilla extension that adds an icon to Mozilla's status bar showing the current status of the Mozilla source code (i.e. whether or not the latest version of the code is compiling successfully and passing tests). The extension will access Tinderbox, mozilla.org's webtool for tracking source code status, to get the status of the code.
- Creating a Skin for Firefox/Getting Started
- Download the latest version of Firefox and install it. Be sure to install the DOM Inspector extension as well.
- Creating a Skin for Mozilla
- In order to create a skin for mozilla, you will need to know three things. How to edit images, extract zip files, and how to modify CSS. Mozilla uses standard gif, png, and jpeg images for the buttons and CSS to style everything else in the interface.
- Creating a Skin for SeaMonkey 2.x
- You're going to make a theme for SeaMonkey 2, but don't know how? I hope this manual will help you.
- Creating regular expressions for a microsummary generator
- A regular expression is a special kind of string (i.e. a sequence of characters) that matches patterns of characters in other strings. Microsummary generators use them to identify the pages that the generators know how to summarize by matching patterns in those pages' URLs.
- The development focus switched to DXR (where the "D" comes from "Dehydra"), which is based on clang instead of gcc. Try DXR instead, or else try the gcc python plugin: https://fedorahosted.org/gcc-python-plugin/.
- Developing New Mozilla Features
- Tips For Contributing New Features To Mozilla.
- Devmo 1.0 Launch Roadmap
- Comments, ideas, questions and other discussion should be added on the Devmo talk:1.0 Launch Roadmap page. Further details on smaller tasks being done are available at User:Dria:TODO page. See also Current Events.
- Download Manager improvements in Firefox 3
- Firefox 3 offers improvements to the Download Manager that allow multiple progress listeners, use of the Storage API for data management, download resuming, and more. In addition, you can augment or replace the Download Manager's user interface by implementing the new
- Download Manager preferences
- There are several preferences used by the Download Manager. This article provides a list of them.
- Drag and Drop
- This section describes how to implement objects that can be dragged around and dropped onto other objects.
- DTrace is Sun Microsystem's dynamic tracing framework that allows developers to instrument a program with probes that have little to no effect on performance when not in use and very little when active. Probe data can be collected with scripts written in D (no, not that one). Mozilla DTrace support has been added by the Sun DTrace team and can be used on Solaris 10 and Mac OS X 10.5.
- Embedding FAQ
- Embedding Mozilla in a Java Application using JavaXPCOM
- XULRunner ships with the JavaXPCOM component, which allows Java code to interact with XPCOM objects. As you will see in this article, working with XPCOM objects in Java is not that much different than doing so in C++.
- Error Console
- Technical review completed.
- Existing Content
- This is a list of existing mozilla.org documentation. It needs to be checked, prioritized, and migrated.
- Extension Frequently Asked Questions
- This is quick set of answers to the most common issues with extension development. They are currently written with mostly Firefox in mind, but most if not all should easily translate to SeaMonkey, Thunderbird or any of the other applications. For Thunderbird, you may also find the extension HowTo or FAQ pages helpful.
- Fighting Junk Mail with Netscape 7.1
- Firefox Sync
- Sync refers to a family of related components and services which provide synchronization of data between Mozilla application instances. These components and services include:
- Force RTL
- (This is a temporary placeholder/stub for the Force RTL page)
- Gecko Coding Help Wanted
- Take a look through LXR, and you'll realize that Mozilla's source code is a big place.
- Hacking wiki
- To be able to hack the MDC wiki software, you'll need a local webserver install, which can run MediaWiki.
- Help Viewer
- Help Viewer: Allows information to be shown to the user inside Mozilla.
- Helper Apps (and a bit of Save As)
- Hidden prefs
- How to Write and Land Nanojit Patches
- Adobe and Mozilla share a copy of Nanojit. This means that landing nanojit patches is a bit complicated, but experience has taught us that this is much better than having separate versions of nanojit.
- HTTP Class Overview
- This document provides an overview of the classes used by the Mozilla HTTP implementation. It's meant as a guide to developers wishing to understand or extend the Mozilla HTTP implementation.
- Introducing the Audio API extension
- The Audio Data API extension extends the HTML5 specification of the
<video> media elements by exposing audio metadata and raw audio data. This enables users to visualize audio data, to process this audio data and to create new audio data.
- Java in Firefox Extensions
Packages (note that per this thread, although the new documentation for the LiveConnect reimplementation states that these globals will be deprecated (in the context of applets), "Firefox and the Java Plug-In will continue to support the global java/Packages keywords, in particular in the context of Firefox extensions."). These 2 objects let you make use of the standard JDK classes, e.g.,
window object as
- Litmus tests
- Litmus tests are (non-automated) tests that are documented in the litmus database. See http://litmus.mozilla.org.
- This Makefile is a modification of the
Makefile.mozextention, found in Makefile for packaging an extension - MozillaZine Knowledge Base (2005).
- Microsummary topics
- To programmatically install a microsummary generator -- for example, in an extension that helps users create custom generators for their favorite sites -- obtain a reference to the
nsIMicrosummaryService interface implemented by the
nsIMicrosummaryService component, then call its
installGenerator() method, passing it an XML document containing the generator.
- Migrate apps from Internet Explorer to Mozilla
- When Netscape started the Mozilla browser, it made the conscious decision to support W3C standards. As a result, Mozilla is not fully backwards-compatible with Netscape Navigator 4.x and Microsoft Internet Explorer legacy code; for example, Mozilla does not support
<layer> as I will discuss later. Browsers, like Internet Explorer 4, that were built before the conception of W3C standards inherited many quirks. In this article, I will describe Mozilla's quirks mode, which provides strong backwards HTML compatibility with Internet Explorer and other legacy browsers.
- Monitoring downloads
- Firefox 3 makes it easier than ever to monitor the status of downloads. Although it was possible to do so in previous versions of Firefox, it was previously only possible for one observer to do so at a time. Firefox 3 introduces new API that allows any number of listeners to observe downloads.
- Mozilla Application Framework
- The Mozilla Application Framework: for powerful, easy to develop cross-platform applications
- Mozilla Crypto FAQ
- In this document I try to answer some frequently asked questions about the Mozilla web browser and mail/news client and its support for SSL, S/MIME, and related features based on cryptographic technology. Note that this document is for your information only and is not intended as legal advice. If you wish to develop and distribute cryptographic software, particularly for commercial sale or distribution, then you should consult an attorney with expertise in the particular laws and regulations that apply in your jurisdiction.
- Mozilla Modules and Module Ownership
- REDIRECT http://www.mozilla.org/hacking/module-ownership.html
- mozprocess provides python process management via an operating system and platform transparent interface to Mozilla platforms of interest. Mozprocess aims to provide the ability to robustly terminate a process (by timeout or otherwise), along with any child processes, on Windows, OS X, and Linux. Mozprocess utilizes and extends
subprocess.Popen to these ends.
- Nanojit is a small, cross-platform C++ library that emits machine code. Both the Tamarin JIT and the SpiderMonkey JIT (a.k.a. TraceMonkey) use Nanojit as their back end.
- New Skin Notes
- Devmo has a new skin that is ready for testing. If you go to your user preferences, you can change the skin to "Devmo". This is currently just a preview, but we would appreciate help with testing.
- 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.
- Plug-n-Hack (PnH) is a proposed standard from the Mozilla security team for defining how security tools can interact with browsers in a more useful and usable way.
- Plugin Architecture
- This page contains some notes on how plugins work internally in Gecko. It is mainly of interest to Gecko developers.
- Porting NSPR to Unix Platforms
- Last modified 16 July 1998
- Priority Content
- Update: I've removed documents from this list that have been migrated into the wiki. The list of completed documents is available through the DevEdge page.
- Prism is a simple XULRunner-based browser that hosts web applications without the normal web browser user interface. Prism is based on a concept called Site-Specific Browsers (SSB). An SSB is designed to work exclusively with a single web application. It doesn’t have the menus, toolbars and other accoutrements of a traditional web browser. An SSB also offers tighter integration with the operating system and desktop than a typical web application running through a web browser. Applications running in an SSB are therefore able to benefit from many of the advantages of the desktop and of the web at the same time.
- Proxy UI
- (Recently Added - some support for reading OS and account settings.)
- Remote XUL
- How to use XUL delivered from a webserver, not as part of chrome.
- Space Manager Detailed Design
- The Space Manager and related classes and structures are an important of the Gecko Layout system, specifically Block Layout. See the High Level Design document for an overview of the Space Manager, and as an introduction to the classes, structures and algorithms container in this, the Detailed Design Document.
- Space Manager High Level Design
- The Space Manager and associated classes and structures are used by Block and Line layout to manage rectangular regions that are occupied and available, for correct handling of floated elements and the elements that flow around them. When elements are floated to the left or right in a layout, they take up space and influence where other elements can be placed. The Space Manager is responsible for keeping track of where space is taken up and where it is available. This information is used by block layout to correctly compute where other floated elements should be placed, and how much space is available to normal in-flow elements that flow around the floated bits.
- Standalone XPCOM
- Standalone XPCOM is a tree configuration that builds a minimal set of libraries (shared mostly) that can be used to get all features of XPCOM. The contents of this standalone XPCOM in general are:
- Stress testing
- Consume.exe from the Windows Server 2003 Resource Kit Tools can consume various resources: physical memory, CPU time, page file, disk space and even the kernel pool. Although for Win2003, it should install into WinXP fine (Win2000 compatibility is unknown). The only downside is you can't specify how much of the resource to use, only which one to consume. Also be warned: always remember the -time option, or you may be hitting that physical reset button sooner than you would have liked!
- Structure of an installable bundle
- XULRunner applications, extensions, and themes all share a common directory structure, and in some cases the same bundle can be used as a standalone XULRunner application as well as an installable application extension.
- Supporting private browsing mode
- Firefox 3.5 introduced private browsing mode, in which potentially private information is not recorded. This includes cookies, history information, download information, and so forth.
- SXSW 2007 presentations
- Presentations about the Mozilla project given at the SXSW 2007 event in Austin, Texas.
- Table Cellmap
- The table layout use the cellmap for two purposes:
- Table Cellmap - Border Collapse
- This document describes the additional information that is stored for border collapse tables in the cellmap.
- Table Layout Regression Tests
- Changes in layout, parser and content code can have unintended side effects, also known as regressions. It is good style to check for these unwanted regressions and fixing them before checkin rather than causing Bugzilla avalanches.
- Table Layout Strategy
- The table layout algorithm is based on two W3C recommendations: HTML 4.01 (Chapter 11) and CSS2.1 (Chapter 17).In CSS2 a distinction between fixed and auto layout of tables has been introduced. The auto-layout mechanism is implemented in
BasicTableLayoutStrategy.cpp the fixed-layout in
FixedTableLayoutStrategy.cpp. All these files are in the
- The Download Manager schema
- The Download Manager uses an SQLite table to keep track of downloads in progress as well as queued and past downloads.
- The life of an HTML HTTP request
- The new nsString class implementation (1999)
- This document is intended to briefly describe the new nsString class architecture, and discuss the implications on memory management, optimizations, internationalization and usage patterns.
- TraceVis is a performance visualization system for TraceMonkey. If TraceMonkey is built with TraceVis, and run with TraceVis enabled, then TraceMonkey will output a log of all its activity transitions. The log can be postprocessed into a visualization that can be used to rapidly diagnose many tracing-related performance issues.
- Try the gcc python plugin instead: https://fedorahosted.org/gcc-python-plugin/.
- URIs and URLs
- Handling network and locally retrievable resources is a central part of Necko. Resources are identified by URI "Uniform Resource Identifier" (Taken from RFC 2396):
- List of Mozilla supported URI schemes
- Using addresses of stack variables with NSPR threads on win16
- This is a cautionary note that may be old information for some of you. However, since it affects the portability of code, it was deemed prudent to include a short memo describing the issue.
- Using Monotone With Mozilla CVS
- Using SVK With Mozilla CVS
- When working with Mozilla, you tend to accumulate patches which need to be reviewed, super-reviewed, and/or approved before they can be committed to the trunk. When you have only a few uncommitted patches, you can get by using cvs diff, and just editing the output to remove other patches before submitting. However, this approach quickly becomes unscalable, especially when you have different fixes in the same tree. Using a distributed versioning system like SVK takes out much of the hassle of managing your patches.
- Video presentations
- Mozilla is actively working to produce video presentations that can help you learn how the Mozilla codebase works and how to take advantage of its technology in your own applications and extensions. This article is a jumping-off point to help you find those presentations.
- Why Embed Gecko
- Gecko - the Smart Embedding Choice
- XML in Mozilla
- Mozilla has a relatively good support for XML. Several World Wide Web Consortium (W3C) Recommendations and drafts from the XML family of specifications are supported, as well as other related technologies.
- XPJS Components Proposal
- Draft 1.0
- XTech 2005 Presentations
- XTech 2006 Presentations
- XUL Explorer
- XULRunner is a Mozilla runtime package that can be used to bootstrap XUL+XPCOM applications that are as rich as Firefox and Thunderbird. It provides mechanisms for installing, upgrading, and uninstalling these applications.