You are currently viewing a snapshot of taken on April 21, 2008. Most of this content is highly out of date (some pages haven't been updated since the project began in 1998) and exists for historical purposes only. If there are any pages on this archive site that you think should be added back to, please file a bug.

Mozilla U. Course Roadmap

  • MAD 101: Mozilla Application Development Basics
  • MAD 120: CSS in Mozilla
  • MAD 130: Extending Mozilla Applications
  • MAD 150: XBL
  • MAD 200: RDF in Mozilla
  • MAD 250: Using and Creating XPCOM Components
  • MAD 292: Security
  • MAD 295: Web Standards Content Development & Evangelism
  • MAD 299: Distributed Programming
  • MAD 300: Adding Language Bindings to Mozilla

    Mozilla Application Development (MAD) 101

    This introductory programming course focuses on XUL and its use as a toolkit for doing Mozilla applications and browser extensions. Like all the courses at Mozilla University, this one presumes basic familiarity with XML, HTML, and JavaScript, though the emphasis is on providing a gentle introduction to the Mozilla tools and terminology, and the basic standards "refreshers" at the beginning of many of these courses may be enough for you to get up and running.

    The course begins with a brief and high-level introduction to Mozilla technologies, moves into building several different user interfaces with XUL, and then describes the use of JavaScript to build simple application logic, to hook the UI up to application code via event handlers, and to access C++-based components via the Mozilla scriptability layer (Note: the last item, Accessing Mozilla Components from Your Application, is introductory only. Using and Creating Mozilla components is covered in detail in MAD 250: XPCOM).

  • Introduction to Mozilla and XUL
  • Creating Application Interfaces with XUL
    • XUL syntax
    • Basic XUL Elements
    • XUL and the DOM
  • Creating Application Logic with JS
  • Adding Behavior: The Event Model
  • Accessing Mozilla Components from Your Application
  • MAD 120: CSS in Mozilla

    Cascading style sheets are a technology that web developers are already familiar with, but Mozilla uses CSS in some interesting and powerful new ways, including skins, XBL, and special extensions for using CSS with user interfaces.

    Among other things, Mozilla uses CSS to define the presentation of the entire user interface, and this allows CSS developers to create new skins for application interfaces, including the browser and the other components that make up the Mozilla suite.

    In this course, you'll go over some of the basics of CSS, move quickly into the more advanced use of CSS in Mozilla, including reskinning the browser.

  • Basic CSS
  • Applying CSS styles to Mozilla
  • Skins & the Mozilla Chrome
  • Creating New Skins for Mozilla
  • Using CSS to Bind XBL to Mozilla
  • MAD 130: Extending Your Mozilla Application

    This course follows up on the application programming basics and the CSS and skins work you did in MAD 120 with some additional technologies that provide flexibility and power to you Mozilla applications. The course covers XPInstall, XUL overlays, and localization.

    In addition to these, the Mozilla chrome registry is discussed in detail. The chrome registry manages the installation of new applications, skins, and language packs in Mozilla, as well as the inclusion of overlays and other dynamically loaded UI.

  • XPInstall: Creating an Installer for Your App
    • Basic Installation Scripts
    • The Install Object
    • The XPInstall API
    • XPI: The Installation File Format
    • Installing Non-Mozilla Applications
  • XUL Overlays: Adding Content Dynamically
  • Localizing Your Application: DTDs and Property Sheets
  • MAD 150: XBL

    Though it's most often used in Mozilla to organize XUL into reusable, high-level widgets like the , the Extensible Bindings Language (XBL) is a general purpose XML extension language, and can be used in HTML and XML content in Mozilla as well as the XUL user interface.

    XBL uses cascading style sheets to bind itself to XUL or HTML. In each binding, you can create new interface or new content that is applied dynamically at run-time. In these cases, XBL provides the framework for extending, and the content itself can be written in XUL, JavaScript, HTML, or other XML markup.

    In this section of the course, you'll look at the use of XBL in the Mozilla front end and learn how to create your own XBL.

  • Introduction to XBL
  • XBL Widgets in Mozilla
  • How Bindings Bind: XUL, CSS, and XBL
  • XBL, the DOM, and the Content Model
  • Scripting in XBL
  • Using XBL with HTML
  • Longer Example: Doing Popup Menus in HTML
  • MAD 200: RDF in Mozilla

    The Resource Description Framework is a W3 standard for managing resources, usually on the web. Mozilla uses RDF as a general framework for managing data: bookmarks, mail messages, user configurations, data-driven UI and other perishable data are all defined in this flexible XML-based language.

    RDF can be hard to understand and use effectively, but this course shows you modify and understand the use of RDF in Mozilla, and how to get started building your own Mozilla datasources.

    The emphasis is on the practical use of RDF, though the introduction covers the basic RDF model and syntax.

  • Practical Introduction to RDF
  • Menu Example: Using Data to Create UI
  • The Mozilla Content Model
  • XUL Templates & RDF
  • RDF Tools: RDF Components and RDF Libraries (JSLib)
  • Longer Examples
  • MAD 250: Using and Creating XPCOM Components

    Much of the functionality in Mozilla is available in the form of components. XPCOM, Mozilla's binary component architecture, makes these components acccessible in a platform-independent and blah blah..
  • Accessing Components from Script
  • XPCOM Basics
  • MAD 292: Security

    Security is a hot topic these days, especially in the open source world, where security models are exposed to external review. Security can benefit from so much inspection, blah blah...
  • security practices
  • code review techniques
  • MAD 295: Web Standards Content Development & Evangelism


    As a W3C standards-compliant browser, Mozilla is an extremely useful platform for web developers. But it's also a minority voice, and so advocacy and evangelism of best practices in web design is an important goal of blah blah...

  • What It Is
  • Why It's Important
  • Places to Learn More About It
  • Web Content Debugging
  • Markup: HTML, XHTML, and XML
  • Scripting and DHTML
  • Testing & Test Cases
  • Evangelism Issue Management
  • MAD 299: Distributed Programming


    One of the most important aspects of the Mozilla codebase and organization is the opportunity they afford for doing distributed programming. This course describes the tools and processes at that make it possible for ### programmers in ### different (companies? countries?) to collaborate on a single, massive code base with a minimum of thrashing, redundancy, and strife. Some of these are tools that have been developed at and others have been adapted for use. Bugzilla, for example, is the primary tool for issue management, and has been adopted widely outside of Mozilla, in large and small projects.

    The course covers the following tools and methodologies:

  • issue management & bugs (i.e., bugzilla)
    • querying the database
    • reviews
    • managing bugs (keywords, reports, modules)
  • version control systems (tool)
  • bonsai & tinderbox
  • communication (methodology); IRC, Jabberzilla et al (tools)
  • source code viewing (tool: LXR)
  • design in the open (methodology)
  • MAD 300: Adding Language Bindings to Mozilla


    The XPConnect technology gives you a way to create components in the programming language of your choice and make them available to Mozilla applications. XPConnect provides the bridge between JavaScript in the Mozilla interface and the (largely C++-based) components in the Mozilla core, but developers have already used XPConnect to create similar bindings for Python, Ruby, and (coming soon) Perl.

    MAD 300 describes how to create XPConnect bindings for your own language following the example the PyXPCOM bridge that now exists in the Mozilla source code.

  • Introduction to XPConnect
  • PyXPCOM: Adapting...
  • XPIDL...