Gecko FAQ

Qu'est-ce que Gecko?

Gecko est un moteur open source de rendu web supportant différents standards d'internet comme le HTML, le CSS, le DOM, XML, javascript et d'autres standards encore.

Gecko est utilisé par de nombreux navigateurs internet, avec bien entendu Mozilla Firefox, mais aussi SeaMonkey, Camino. Gecko est en développement constant par les développeurs de Mozilla. Gecko est le nom final du moteur, il s'appelait aussi "Raptor" et "NGLayout"; mais le nom final du moteur a été choisi suite à un litige.

Pour plus d'informations, visitez l'article Gecko (moteur de rendu) sur Wikipedia.

Qu'est-ce qu'un moteur de rendu?

Un moteur de rendu va aller traduire le contenu des fichiers (les fichiers pouvant être une page internet en HTML, XML, des images...) et s'occupe de formater les informations contenus dans les fichiers, généralement le HTML, qui décrivent l'emplacement des textes, des images etc... afin de faire affiché l'information comme le voulait le webmaster. Il dessine la page web dans la zone de rendu de la fenêtre du navigateur.

Ainsi officiellement, un moteur de rendu définie la politique de placement pour un docuement et fait la mise en page. Gecko est un moteur de rendu trés rapide. Il offre la possibilité de parser de nombreux types de docuements (HTML, XML, SVG, etc...). Il est capable de donné un rendu avancé en incluant les compositions et les transformations. Il supporte aussi le javascript et les plugins.

Gecko est si rapide et puissant qu'il peut être utiliser pour créer des interfaces utilisateurs pour certaines applications ("chrome").  En d'autres termes, Gecko ne fait pas seulement que affiché le contenu d'un document, il peut aussi être utiliser pour dessiner des barres de défilement, des menus à l'écran. Pour plus d'information, reportez-vous à la documentation sur XUL.

How is a layout engine like Gecko different from a Web browser?

Gecko fournit la base nécessaire pour afficher l'information à l'écran, en incluant un moteur de rendu ainsi qu'un ensemble complémentaire de composants du navigateur. Cependant, Gecko ne supporte pas tous les composants aux côtés d'autres modules d'interface dans une application cohérente (y compris les menus, les barres d'outils, etc...) tel que Firefox.

La fondation Mozilla assemble les composants nécessaires dans ses logiciels, comme Firefox, Thunderbird, SeaMonkey, Camino, qui sont disponibles au téléchargement sur le site Netscape a publié sa propre version du navigateur sous la marque Netscape Navigator. D'autres compagnies crée aussi leur propre logiciel et matériel qui utilisent Gecko. Voir la page recensant une liste de logiciel dans lequel Gecko est utilisé via XULRunner.

Les éditeurs tiers comme les éditeurs de logiciels et fournisseurs de matériels vont choisir les composants qu'ils souhaitent utiliser dans leurs logiciels ou matériels. Certains composants du navigateur ne sont pas fournis dans les fonctionnalités de Gecko, comme les marque page, l'historique de navigation, les faboris.... Cependant, la source de tous ces composants sont disponibles au téléchargement sur le portail

Why was Gecko built?

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. Now that the web has evolved, a new generation layout engine was needed upon which future products could be built. 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 using Gecko? will assemble the Gecko layout engine and other browser components into the Mozilla browser application.

How does Mozilla use Gecko?

Gecko lies at the heart of Mozilla and Firefox browsers, as well as others, powering all of the individual components. Gecko technologies will also power the display of the portal site, speedily delivering more exciting content and services. Gecko's architecture will serve Mozilla 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
  • DOM
    • 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
  • JavaScript 1.5, including ECMA-262 Edition 3 (ECMAscript) compliance, except for Date.toDateString and Date.toTimeString, which are not implemented
  • Transfer protocols: HTTP 1.1 (including gzip compression), FTP
  • SSL
  • Unicode
  • OJI (Open Java Interface)
  • Image formats
    • PNG
    • GIF

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 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, unreproducible, invalid, and incorrectly tagged reports:

The links themselves are probably outdated too.

For information about the known bugs of a specific commercial product based on Gecko, see that product's release notes.

How does Gecko format XML documents?

Gecko supports the use of CSS and XSLT to format XML documents.

For XML documents without associated CSS or XSLT, Gecko displays the pretty-printed source of the document.

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 open 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 these standards makes 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

For future embedding API plans, see wikimo:Mozilla 2:Embedding APIs.

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 created a partial compatibility layer that may enable developers to more easily migrate from Microsoft's engine to the Gecko engine.

Which platforms does Gecko run on?

Gecko runs today on Win32 (Windows XP Service Pack 2, Windows Vista, Windows 7, Windows 8, Windows 8.1), Mac OS X 10.5 and later, and Linux. OEMs and contributors from the Net participating in 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.

Older versions of Gecko supported earlier versions of Win32 and Mac OS X.

What are the components of Gecko?

Gecko includes the following components:

  • Document parser (handles HTML and XML)
  • Layout engine with content model
  • Style system (handles CSS, etc.)
  • JavaScript runtime (SpiderMonkey)
  • Image library
  • Networking library (Necko)
  • Platform-specific graphics rendering and widget sets for Win32, X, and Mac
  • User preferences library
  • Mozilla Plug-in API (NPAPI) to support the Navigator plug-in interface
  • Open Java Interface (OJI), with Sun Java 1.2 JVM
  • RDF back end
  • Font library
  • Security library (NSS)

Original Document Information

  • Author(s): Angus
  • Other Contributors: Ekrock, Vidur, Hidday, Drunclear
  • Copyright Information: Portions of this content are © 1998–2006 by individual contributors; content available under a Creative Commons license