The Mozilla
Organization
Our Mission
Who We Are
Getting Involved
Community
Editorials
What's New
Development
Roadmap
Module Owners
Blue Sky
Projects
Status
Tools
Products
Source Code
Binaries
Documentation
License Terms
Bug Reports
Search
Feedback


nglayout project


FAQ



For the good of the code...
Are you a JavaScript hacker interested in writing some test cases for NGLayout's W3C DOM implementation? Let us know.

In this document:

What is NGLayout?
NGLayout is Mozilla's next generation, high performance layout engine based on open Internet standards such as HTML 4.0, CSS 1/2, XML 1.0, and the Document Object Model. Built using a modular, XPCOM-based architecture, NGLayout is an embeddable component.

What is a layout engine?
A layout engine defines the placement policy for a document and places content on a page. NGLayout also offers the ability to parse various document types (HTML, XML, CSS, etc), advanced rendering capabilities including compositing and tranforms, and it supports embedded JavaScript and Java applets.

How is a NGLayout different from a Web browser?
NGLayout provides the foundation needed to build a browser interface, including a layout engine and a complementary set of browser components. However, NGLayout does not package all of these components alongside other interface modules in a coherent, user friendly Web browser application, such as Navigator. The Mozilla team will assemble the necessary components into a user friendly application. Third party ISVs will pick and choose the components they want to embed in their applications. Certain components are not provided as part of NGLayout, such as bookmarks, history, address book, etc.

Why are we building a new layout engine?
Mozilla was developed rapidly by a small team that was passionate about creating the next killer app -- and they succeeded wildly. Now that the web has evolved, we have assembled the finest team available to redesign and redevelop the next generation layout engine. NGLayout enables a pioneering new class of dynamic content that is more interactive and offers greater presentation control to Web developers, using open and recommended Internet standards. You are encouraged to join this team by getting involved.

How can independent software developers use NGLayout?
Built as a set of modular, embeddable components, ISVs can integrate NGLayout into their applications with a high degree of control. Many software developers want to include Web browsing capability in their applications, but don't want to independently develop browser software. These developers can pick and choose the browser components they want from among those that NGLayout offers, and package these components alongside those that are specific to the ISV's application.

Which open standards does NGLayout support, and to what extent does it support them?
NGLayout supports the following recommended open Internet standards completely (100%) unless specifically noted:

  • HTML 4.0
  • Style Sheets
    • CSS 1
    • CSS 2 (partial support)
  • DOM
    • Level 0
    • Level 1 Core
    • Level 1 HTML
    • Level 1 XML
  • XML 1.0
  • JavaScript 1.(4? 5?), including ECMA-262 compliance
  • Transfer protocols: HTTP, FTP, Gopher (also File, Resource)
  • SSL
  • Unicode
  • OJI (Open Java Interface)
  • Image formats
    • PNG
    • GIF
    • JPEG, PJPEG
    • ART
    • XBM

Are NGLayout's embedding APIs based on ActiveX? COM? JavaBeans?
NGLayout is embeddable on all platforms using XPCOM, a subset of COM that works across platforms. On the Windows platform, thanks to Adam Lock's contributions, NGLayout's XPCOM interfaces are wrapped in an ActiveX control that VB developers can utilize A JavaBean wrapper is not currently under development, but there shouldn't be anything in NGLayout's architecture that precludes such development in the future. Source code and documentation for these interfaces is available in our technical documentation area.

Are NGLayout's embedding APIs compatible with Microsoft's WebBrowser control APIs?
NGLayout's XPCOM embedding interfaces are different than Microsoft's. One difference between the two models involves reflection of the Document Object Model (DOM) in the interfaces. Microsoft's interfaces reflect the DOM in a proprietary API, whereas NGLayout exposes the DOM according to the W3C's recommended standard. Other incompatibilities exist. Adam Lock is creating a partial compatibility layer that may enable developers to easily migrate from Microsoft's engine to the NGLayout engine.

Which platforms does NGLayout run on?
NGLayout runs today on Windows 95, Windows 98, Windows NT 4, Windows NT 5, Linux, Irix and Mac PPC. Porting projects for other platforms (OS/2, Rhapsody, Be, etc.) are reportedly underway.

What are the components of NGLayout?
NGLayout includes the following components:

  • Document parser (handles HTML, XML, and arbitrary document types)
  • Layout engine with content model
  • Style system (handles CSS, XSL, etc.)
  • JavaScript runtime
  • Image rendering library
  • Networking library
  • Platform-specific graphics rendering and widget sets for Win32, X, and Mac
  • User preferences library
  • Navigator plug-in interface
  • Open Java Interface (OJI)
  • Font library *
  • Security library *
  • RDF hypertree back end *
  • Cache management system *
  • (More)

Components marked with an asterisk are currently being modularized out of the 5.0 codebase with XPCOM interfaces, and haven't yet landed in the NGLayout tree.



Copyright © 1998 The Mozilla Organization.