# Gecko (moteur de rendu)

Gecko est un logiciel moteur de rendu pour présenter des pages web. Lancé par Mozilla en 1998, open source et libre, il est incorporé dans diverses applications telles que Firefox, Thunderbird, leurs dérivés ou BlueGriffon. Il a propulsé Netscape Communicator, Netscape Navigator, AOL Explorer et Camino.
Gecko offre les fondations nécessaires pour afficher des pages web à l'écran. L'objectif de Gecko est un moteur portable qui respecte les standards du web et les recommandations du W3C. Il fonctionne sur les systèmes d'exploitation Windows, Linux et macOS. Il est écrit dans des langages de programmation comme C++ et Rust. Il est distribué sous les licences MPL, GPL et LGPL.

## Histoire

Gecko est né en 1998, lorsque Netscape publie le code source de son navigateur web Netscape Navigator, le rendant ainsi open source. Netscape crée alors mozilla.org, une organisation non constituée pour gérer le projet et continuer à développer Communicator, dont Gecko est une partie essentielle.
Le projet Gecko (initialement appelé NG Layout et renommé par le marketing de Netscape) vise la réécriture du moteur de Netscape Communicator : les fonctionnalités que devait offrir un navigateur avaient tellement évolué depuis sa naissance que la construction du moteur de Netscape, qui était appropriée au début de son existence, était devenue caduque. La réécriture du moteur a permis d'obtenir un navigateur qui offre les mêmes possibilités avec moins de code source, étant ainsi rapide, plus simple à maintenir et à faire évoluer.
Six mois après la publication en open source, l'objectif de l'organisation Mozilla a alors été de travailler sur des changements en profondeur en vue de faire face à des problèmes qui ne pouvaient pas être contrés par de simples patches. Un des objectifs de Gecko a été dès le départ le strict respect des standards du web et en particulier des recommandations du W3C.
En 2002, Mozilla 1.0, motorisé par Gecko est lancé. Il est reconnu comme celui qui a la meilleure prise en charge du standard CSS. La même année, Netscape Communicator passe de la version 4 à la version 6, motorisée par Gecko.
En 2003, America Online, propriétaire de Netscape, licencie les employés travaillant sur le projet Mozilla et transmet la direction du projet à une fondation sans but lucratif de droit californien : la Mozilla Foundation$^,$.

## Fonctionnalités

Le moteur Gecko est l'ensemble des bibliothèques logicielles que les navigateurs web utilisent pour afficher des pages web. Il s'occupe, à partir du code HTML d'une page web, de faire quelque chose que l'utilisateur peut voir et avec lequel il peut interagir.
Les fonctions offertes par Gecko sont notamment : recevoir les documents selon différents protocoles réseau, analyser le document HTML, disposer le contenu sur la page, le dessiner en respectant les polices et les feuilles de styles, décoder et afficher des images, créer des widgets, assurer des communications chiffrées et certifiées, permettre la manipulation du contenu par programmation en langage Javascript ou Java.
Gecko se charge d'examiner le code HTML d'une page web, en extraire sa structure, permettre sa manipulation par programme via le DOM, puis dessiner la page web, tracer les éléments de formulaire et placer les images au bon endroit. Il calcule l'emplacement ou un élément doit être placé sur la page, puis le dessine. Le moteur Gecko sert non seulement à dessiner le contenu d'une page web, mais également l'interface graphique : les barres de défilement, les barres d'outils et les menus.
Gecko vise le strict respect des standards du web et des recommandations du W3C. Les standards reconnus par Gecko sont notamment HTTP, FTP, SSL, Unicode, JPEG, GIF, HTML, XHTML, XML, CSS, Javascript, ECMAScript, DOM, MathML, RDF, XSLT, SVG, PNG, RSS, Atom, Ajax et XUL.
Gecko est compatible avec les systèmes d'exploitation Windows, Linux et macOS. Des projets sont en cours pour porter Gecko sur d'autres plateformes telles que Solaris, HP/UX, AIX, Irix, OS/2, OpenVMS, BeOS et Amiga.
Gecko est sous la forme d'un composant logiciel XPCOM, une technologie portable similaire à Microsoft COM, et proposée par la fondation Mozilla. Il existe un adaptateur pour l'utiliser comme un composant ActiveX — une autre technologie dérivée de COM.
Conformément à un cahier des charges établi pour Netscape Communicator 6.0, le mot Gecko se retrouve dans la signature (User-Agent) des navigateurs web qui l'utilisent.

## Logiciels utilisant Gecko

Gecko est le cœur de Firefox, SeaMonkey, Thunderbird, Fennec (Firefox pour Android), BlueGriffon et leurs dérivés. Il a été incorporé dans AOL Explorer, Camino, les versions 6 à 8 de Netscape Communicator et Netscape Navigator 9, Mozilla Suite, Galeon, Sunbird, NVU… Symphony OS est une distribution Linux avec un environnement de bureau motorisé par Gecko. Il existe également une version invisible de Gecko, qui transforme des pages web en documents Postscript qui peuvent alors être imprimés.
Des fournisseurs d'accès Internet ou des constructeurs incorporent Gecko dans leurs produits.

### Navigateurs Web

Gecko est d’abord utilisé pour les navigateurs dont Firefox, mais c’est aussi le cas du logiciel d’organisation d’images Picasa pour Linux. Le tableau suivant compare les usages des différentes versions de Gecko.
| Version | Toutes plates-formes | Toutes plates-formes | Toutes plates-formes | Toutes plates-formes | Windows seul | Windows seul | Windows seul | Mac seul | GNU/Linux seul | GNU/Linux seul | GNU/Linux seul | GNU/Linux seul |
| Version | Firefox | Thunderbird | SeaMonkey | Songbird (lecteur multimédia) | Lunascape †‡ | K-Meleon | SmartNet Browser | Camino | Galeon | Epiphany† | Kazehakase† | Skipstone (cs)† |
| 0.6 | | | | | | | | | | | | |
| 0.8 | | | | | | 0.3 | | | | | | |
| 0.9.2 | | | | | | | | | | | | |
| 0.9.4 | | | | | | 0.5 | | | | | | |
| 0.9.4.1 | | | | | | | | | | | | |
| 0.9.5 | | | | | | 0.6 | | | | | | |
| 0.9.7 | | | | | | | | | 1.0.2 | | | |
| 1.0.1 | | | | | | | | | | | | |
| 1.1 | | | | | | | | | | | | 0.8.3 |
| 1.2b | 0.1 | | | | | 0.7 | | | | | | |
| 1.3a | 0.5 | | | | | | | | | | | |
| 1.4 | | | | | | | | | | | | |
| 1.4.1 | | | | | | | | | | 1.0.4 | | |
| 1.5 | 0.7 | | | | | 0.8 | | | | | | |
| 1.7 | 1.0 | 1.0 | | | | | | | 2.0 | | 0.2.8 | |
| 1.7.2 | | | | | | | | | | | | |
| 1.7.5 | | | | | | 0.9 | | | | | | |
| 1.8.0 | 1.5 | 1.5 | 1.0 | 0.2 | | 1.0 | | 1.0 | | | | |
| 1.8.1 | 2.0 | 2.0 | 1.1 | | 4.8 | 1.1, 1.5 | | 1.6.5 | | 2.16 | | 1.0.0 |
| 1.9 | 3.0 | | | 0.5, 1.0 | | | | 2.0 | | 2.22 | | |
| 1.9.1 | 3.5 | 3.0 | 2.0 | | 5.0, 5.1, 6.0, 6.1, 6.2, 6.3, 6.4.4, 6.4.5 | | | | | | | |
| 1.9.2 | 3.6 | 3.1 | | | 6.4 (hors 6.4.4 et 6.4.5), 6.5, 6.6, 6.7 | | | | | | | |
| 2.0 | 4.0 | | 2.1 | | | | | | | | | |
| 5.0 | 5.0 | 5.0 | 2.2 | | | | | | | | | |
| 6.0 | 6.0 | 6.0 | 2.3 | | | | | | | | | |
| 7.0 | 7.0 | 7.0 | 2.4 | | | | | | | | | |
| 8.0 | 8.0 | 8.0 | 2.5 | | | | | | | | | |
| 9.0 | 9.0 | 9.0 | 2.6 | | | | | | | | | |
| 10.0 | 10.0b1 | | 2.7b1 | | | | | | | | | |
| 11.0 | 11.0a2 | | 2.8a2 | | | | | | | | | |
| 12.0 | 12.0a1 | | | | | | | | | | | |
| 24.8 | 24.0 | | | | 6.9.3 | | | | | | | |
| 33.0 | 33.1.1 | | | | | | 0.1 | | | | | |
† – Navigateur utilisant aussi Webkit comme moteur alternatif. ‡ – Navigateur utilisant aussi Trident comme moteur alternatif.