XPToolkit Executive Review

Project Overview

What if we could be in a world where we could just write the code once?
Where non-programmers could design the look and feel of a product using W3C standards instead of C++?
Where platform differences could be expressed in stylesheets, not hardcoded with #ifdefs?
Where everyone could contribute UI to an open source?

Do you like that world?

So do we.  Letís build it.

Project Goals

  1. Make cross-platform user interfaces as easy to build as web pages.
  2. Support the common UI needs of applications like Navigator, Ender and Messenger.
  3. Minimize the amount of platform-specific work required to build user interfaces.
  4. Provide support for customizing user interfaces, e.g., via 'downloadable chrome'.
  5. Engage the net to contribute via mozilla.org, bringing massively parallel development to XP UI.
  6. Allow for shipping new products this summer.


  1. Loosely related facilities (pick and choose).
  2. Platform independent API to common UI objects.
  3. Loads and instantiates windows, dialogs, menus and other widgets from an XML-based stream.
  4. Based on existing standards (XML, RDF, HTML, CSS, DOM).
  5. Leverages Gecko to maximize performance, minimize effort and overhead.

New Technology

  1. Application Object Model (AOM)
    1. Provides for XP implementation of the Model-View-Controller design pattern.
    2. Implement UI and core services in C++, C, JavaScript.
  2. Xplatform UI Language (XUL).
    1. Allows for writing portable resource descriptions.
    2. Based on XML, so it is standard, extensible.
    3. Can freely intermix HTML, JavaScript.
    4. Natural syntax for expressing containment.


Nine full-time engineers, one full-time manager, several external developers contributing via mozilla.org.

Netscape XPToolkit team:
Scott Collins Mike Pinkerton
Steve Dagley Chris Saari
David Hyatt Rod Spears
Dan Matejka Peter Trudelle, mgr
Chris McAfee Eric Vaughan


M1: Simple Browsing (achieved)

  1. Load and instantiate basic UI objects from XUL streams.
  2. Toolbars with HTML buttons.
  3. Menus displaying

M2: Usable Dogfood. (in danger)

  1. XUL Loader -- Dan Matejka, David Hyatt
    1. UI discovery
    2. Frame and widget creation
    3. Command Architecture
  2. Command/Event model -- Chris Saari
    1. Menubar menus loading from XUL, no context menus.
  3. Basic Tree Views -- David Hyatt
    1. Basic functionality - display, expand/collapse, scroll, select; no D&D, rollover, cursor changes, cropping, live folders.
  4. Toolbox/Toolbars -- Mike Pinkerton
    1. Basic creation, layout and hooking up to command architecture, no hiding, collapsing, drag & drop, or customization.
  5. Forms Widgets -- Rod Spears, Eric Vaughan, Steve Dagley (blocked)
    1. Button, List, ComboBox
    2. Working in HTML and XML
    3. Loaded from XUL
  6. Status Bar -- Eric Vaughan
  7. Throbber -- Mike Pinkerton

Last updated: 2/9/99 by Peter Trudelle