NGT


FAQ

In this document:

What is NGT?
NGT 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, NGT 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. NGT 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 NGT different from a Web browser?
NGT provides the foundation needed to build a browser interface, including a layout engine and a complementary set of browser components. However, NGT 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 NGT, 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. NGT 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 NGT?
Built as a set of modular, embeddable components, ISVs can integrate NGT 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 NGT offers, and package these components alongside those that are specific to the ISV's application.

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

Are NGT's embedding APIs based on ActiveX? COM? JavaBeans?
NGT 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, NGT'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 NGT's architecture that precludes such development in the future. Source code and documentation for these interfaces is available in our technical documentation area.

Are NGT's embedding APIs compatible with Microsoft's WebBrowser control APIs?
NGT'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 NGT 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 NGT engine.

Which platforms does NGT run on?
NGT 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 NGT?
NGT includes the following components:

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 NGT tree.