What is Gecko?
What is the relationship between the mozilla.org "NGLayout Project" and the "Gecko layout engine"?
mozilla.org's "NGLayout Project" is creating the "Gecko layout engine." Although the layout engine's name has been changed to Gecko, the project's name has remained "NGLayout Project" for historical reasons.
What is a layout engine?
Basically, a layout engine takes content (such as HTML, XML, image files, applets, and so on) and formatting information (such as Cascading Style Sheets, hard-code HTML tags, etc.) and displays the formatted content on the screen. It "paints" the browser's content area, which is the blank area inside the browser window's "chrome."
Note: Gecko is so fast and so powerful that it's being used to create the browser's user interface ("chrome") as well. In other words, Gecko will not only be displaying the document's content, but it will also be painting the scroll bars, tool bars, and menus on the screen as well.
How is a layout engine like Gecko different from a Web browser?
Gecko provides the foundation needed to display content on the screen, including a layout engine and a complementary set of browser components. However, Gecko does not package all of these components alongside other interface modules in a coherent, user friendly Web browser application (including menus, tool bars, etc.), such as Mozilla or Netscape Navigator.
mozilla.org will assemble the necessary components into an application called the Mozilla browser, which will be available for free download from mozilla.org. Netscape will release its own version of the browser branded as Netscape Navigator, which will be available for free download from netscape.com. Other companies will release their own software and hardware products that embed Gecko.
Third parties such as ISVs and hardware vendors will pick and choose the components they want to use in their applications or hardware devices. Certain browser components are not provided as part of Gecko, such as bookmarks, history, address book, etc. However, the source for all those components is available for free download from mozilla.org.
Why are we building a new layout engine?
The original Mozilla browser, first released as Navigator 1.0, 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, Netscape has assembed the finest team available to redesign and redevelop the next generation layout engine upon which it will build future products. Gecko 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 instead of proprietary APIs. You are encouraged to join this team by getting involved.
How is mozilla.org using Gecko?
mozilla.org will assemble the Gecko layout engine and other browser components into the Mozilla browser application.
How is Netscape planning to use Gecko?
Gecko lies at the heart of the Netscape 6 browser suite, powering all of the individual components including Navigator and Messenger. Gecko technologies will also power the display of the Netscape.com portal site, speedily delivering more exciting content and services. Gecko's architecture will serve Netscape well into the future, enabling faster time to market, more innovation, less costly development, easier distribution and updating, and better cross platform support.
How can other companies and organizations use Gecko?
Because Gecko is small, lightweight, and open source, other companies and organizations can easily reuse it. Many hardware vendors are creating devices with network access and wish to include web browsing functionality. Likewise, 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 Gecko offers, and package these components alongside their own within their finished products.
Which open standards is the Gecko development project working to support, and to what extent does it support them?
By the end of calendar year 2000, Gecko is expected to support the following recommended open Internet standards fully except for the areas noted below and open bugs documented in Bugzilla:
- HTML 4.0 - full support except for:
- elements: BDO, BASEFONT
- attributes: shape attribute on the A element, abbr, axis, headers, scope-row, scope-col, scope-rowgroup, scope-colgroup, charoff, datasrc, datafld, dataformat, datapagesize, summary, event, dir, align on table columns, label attribute of OPTION, alternate text of AREA elements, longdesc
- various metadata attributes: cite, datetime, lang, hreflang
- bidirectional text layout, which is only used in Hebrew and Arabic (IBM has begun work to add bidi support in a future release)
- Style Sheets
- CSS 1 - full support, except for:
- the application of styles to HTML column elements
- the ability to turn off author styles
- the names of certain Mozilla extension pseudo-classes lack the moz- prefix
- CSS 2 - partial support is expected and has already been built into Gecko, including support for CSS2 positioning, but no commitment has been made to achieve a specific level of support
- CSS 1 - full support, except for:
- Level 0
- Level 1 Core: full support
- making EntityReferences available through DOM1; per a provision of the DOM1 spec for XML implementations, Entities will be automatically expanded inline and therefore not available through DOM1; our implementation extrapolates this provision to apply to EntityReferences as well
- For more information, see the DOM in Mozilla
- Level 1 HTML
- DOM 2 - Most of it has already been implemented in Gecko, including support for DOM 2 events, the DOM 2 Style, and the DOM2 Core. DOM 3 support is also planned for a future release.
- XML 1.0: full support, except for processing to manipulate default attributes
- RDF: full support, except for aboutEach, aboutEachPrefix, and parseType
- Transfer protocols: HTTP 1.1 (including gzip compression), FTP
- OJI (Open Java Interface)
- Image formats
- JPEG, PJPEG
Does "full support" mean that Gecko has zero bugs today or will have zero bugs at some point in the future?
Of course not. As Robert O'Callahan notes in Bugzilla Bug 25707, "Full HTML4/CSS1 compliance can't mean '100% bug free'. If it does, no-one will ever ship a fully compliant browser." Because web pages can be arbitrarily long and complex and have arbitrarily deeply nested markup, it will always be possible to construct web pages that do not display in a given browser the way the specifications would recommend. So long as QA testing and test case development continues, there will always be known bugs at any given point in time in the open-source Gecko codebase, and it follows that every commercial product that has ever shipped and ever will ship based on Gecko will have known bugs at the time of its release. (The same principle of course applies to other browser engine development projects and products based upon them as well.) Known bugs in the open-source Gecko codebase are documented in Bugzilla. Here are some links to lists of reported bugs related to the standards mentioned above; be aware that these raw lists of open in-process bugs will inevitably include some duplicate, out of date, unreproduceable, invalid, and incorrectly tagged reports:
- Layout component tracks content layout bugs that may be related to a variety of specifications
- HTML 4.0
- Elements, Form Controls, Frames, Tables, and Form Submission
- bug reports marked with the html4 keyword
- "meta bug" for tracking outstanding issues with HTML 4.01 compliance
- CSS: Style System component (see also bug reports marked with the css1, css2, and css3 keywords)
- DOM: see DOM0, DOM1, DOM2 and Event Handling components
- HTTP 1.1 compliance bugs should generally be found on the Networking, Networking - General, and Networking: Cache components
- Imagelib image library (see also JPEG Image Handling and PNG Image Handling)
- SSL-related bugs are filed on the Crypto component
For information about the known bugs of a specific commercial product based on Gecko, see that product's release notes. If you're interested in the general topic of evaluating standards compliance, you may be interested in an essay on the topic posted separately by Eric Krock of Netscape.
How will Gecko format XML documents?
Gecko will support the use of CSS1 to format XML documents.
For XML formatting, why is the Gecko development project initially focusing on CSS rather than XSL?
CSS1 was completed in December of 1996. It is a finished, mature standard that is now nearly four years old, and it can be used to format both HTML and XML documents. For this reason, developers concerned with standards compliance such as WebStandards.org have made full support for HTML 4.0, CSS1, DOM1, and XML their first request.
XSLT 1.0 and XPath 1.0 only became W3C Recommendations in November of 1999, and XSL Formatting Language is still under development. Work is already underway on mozilla.org to enable the integration of an XSLT engine into Gecko and browsers based upon it.
How does Gecko help content developers?
Content developers are sick and tired of developing and testing every single web page multiple times in order to support the different, incompatible, proprietary DOMs of browsers from different vendors. They have been demanding that all vendors fully support the W3C DOM and the other standards listed above so that they can (1) have a rich, powerful formatting system and object model at their disposal, and (2) "write once, view anywhere." Gecko's robust support for HTML 4.0, CSS1, DOM1, XML, XML+CSS1, and RDF will make Gecko the platform of choice for web content and web application developers worldwide.
Are Gecko's APIs based on ActiveX? COM? JavaBeans?
Gecko is reusable on all platforms thanks to XPCOM, a subset of COM that works across platforms. COM, developed by Digital and later adopted by Microsoft, is the de facto standard for modular interfaces on Windows platforms. Additionally, on the Windows platform, Gecko's XPCOM interfaces are wrapped in an ActiveX control that VB developers can utilize (ActiveX wrappers are not available on other platforms because ActiveX is a Windows-only technology). A JavaBean wrapper is not currently under development, but there is nothing in Gecko's architecture that precludes such development in the future. Source code and documentation for these interfaces are available through mozilla.org.
Are Gecko's APIs compatible with Microsoft's Trident APIs?
Gecko's XPCOM interfaces are different than Microsoft's. The most important differences between the two models involve reflection of the Document Object Model (DOM) in the interfaces. Microsoft's Trident interfaces reflect the DOM in a proprietary API, whereas Gecko 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 more easily migrate from Microsoft's engine to the NGLayout engine.
Which platforms does Gecko run on?
Gecko runs today on Win32 (Windows 95, Windows 98, Windows NT 4, Windows 2000), PowerMac, and Linux. OEMs and contributors from the Net participating in mozilla.org are porting Gecko to other platforms. Such porting efforts are underway for Solaris, HP/UX, AIX, Irix, OS/2, OpenVMS, BeOS, and Amiga, among others.
What are the components of Gecko?
Gecko includes the following components:
- Document parser (handles HTML, XML, and arbitrary document types)
- Layout engine with content model
- Style system (handles CSS, etc.)
- Image rendering library
- Networking library "Necko"
- Platform-specific graphics rendering and widget sets for Win32, X, and Mac
- User preferences library
- Mozilla Plug-in API to support the Navigator plug-in interface
- Open Java Interface (OJI), with Sun Java 1.2 JVM
- RDF hypertree back end
- Font library
- Security library
- Cache management system
Original Document Information
- Author(s): Angus
- Other Contributors: Ekrock, Vidur, Hidday, Drunclear
- Last Updated Date: August 21, 2006
- Copyright Information: Portions of this content are © 1998–2006 by individual mozilla.org contributors; content available under a Creative Commons license