Gecko (estilizado como ɢecko) es un motor de navegador desarrollado por Mozilla . Se utiliza en el navegador Firefox , el cliente de correo electrónico Thunderbird y muchos otros proyectos.
Gecko está diseñado para soportar estándares abiertos de Internet y es utilizado por diferentes aplicaciones para mostrar páginas web y, en algunos casos, la propia interfaz de usuario de una aplicación (mediante la representación de XUL ). Gecko ofrece una rica API de programación que lo hace adecuado para una amplia variedad de funciones en aplicaciones habilitadas para Internet, como navegadores web , presentación de contenido y cliente/servidor . [3]
Gecko está escrito en C++ y JavaScript , [4] [5] y, desde 2016, adicionalmente en Rust . [6] [7] Es un software gratuito y de código abierto sujeto a los términos de la Licencia Pública de Mozilla versión 2. [8] Mozilla admite oficialmente su uso en Android , [4] Linux , macOS y Windows . [9]
El desarrollo del motor de diseño ahora conocido como Gecko comenzó en Netscape en 1997, después de que la compañía adquiriera DigitalStyle . El motor de renderizado existente de Netscape, escrito originalmente para Netscape Navigator 1.0 y actualizado a lo largo de los años, era lento, no cumplía bien con los estándares del W3C, tenía un soporte limitado para HTML dinámico y carecía de características como el reflujo incremental (cuando el motor de diseño reorganiza los elementos en la pantalla a medida que se descargan y agregan nuevos datos a la página). El nuevo motor de diseño se desarrolló en paralelo con el antiguo, con la intención de integrarlo en Netscape Communicator cuando estuviera maduro y estable. Se esperaba que se lanzara al menos una revisión importante más de Netscape con el antiguo motor de diseño antes del cambio.
Tras el lanzamiento del proyecto Mozilla a principios de 1998, el nuevo código del motor de diseño se publicó bajo una licencia de código abierto. Originalmente presentado como Raptor , el nombre tuvo que cambiarse a NGLayout (next generation layout) debido a problemas de marca registrada . Netscape luego renombró NGLayout como Gecko . Si bien Mozilla Organization (la precursora de Mozilla Foundation ) inicialmente continuó usando el nombre NGLayout (Gecko era una marca registrada de Netscape), [10] finalmente la marca Gecko triunfó. [ cita requerida ]
En octubre de 1998, Netscape anunció que su próximo navegador utilizaría Gecko (que en ese momento todavía se llamaba NGLayout) en lugar del antiguo motor de diseño, lo que requirió que se reescribieran grandes partes de la aplicación. Si bien esta decisión fue popular entre los defensores de los estándares web, fue en gran medida impopular entre los desarrolladores de Netscape, quienes no estaban contentos con los seis meses que se les dio para la reescritura. [11] También significó que la mayor parte del trabajo realizado para Netscape Communicator 5.0 (incluido el desarrollo de las mejoras de Mariner para el antiguo motor de diseño) tuvo que abandonarse. Netscape 6, la primera versión de Netscape que incorporó Gecko, se lanzó en noviembre de 2000 (el nombre Netscape 5 nunca se usó). [ cita requerida ]
A medida que el desarrollo de Gecko continuó, otras aplicaciones e integradores comenzaron a utilizarlo. America Online , en ese momento la empresa matriz de Netscape, finalmente lo adoptó para su uso en CompuServe 7.0 y AOL para Mac OS X (estos productos ya tenían Internet Explorer integrado). Sin embargo, con la excepción de unas pocas versiones beta , Gecko nunca se utilizó en el cliente principal de AOL para Microsoft Windows . [ cita requerida ]
El 15 de julio de 2003, AOL despidió a los desarrolladores restantes de Gecko y la Fundación Mozilla (formada el mismo día) se convirtió en la principal administradora del desarrollo de Gecko. Hoy, Gecko es desarrollado por empleados de Mozilla Corporation , empleados de empresas que contribuyen al proyecto Mozilla y voluntarios. [ cita requerida ]
En la era de Netscape, una combinación de malas decisiones técnicas y de gestión dieron como resultado la hinchazón del software Gecko . [11] [12] [13] Por lo tanto, en 2001, Apple decidió bifurcar KHTML , no Gecko, para crear el motor WebKit para su navegador Safari . [12] [13] Sin embargo, en 2008 Mozilla había abordado algunos de los problemas de hinchazón, lo que resultó en importantes mejoras de rendimiento para Gecko. [14]
En octubre de 2016, Mozilla anunció Quantum, un proyecto en curso que abarca varios esfuerzos de desarrollo de software para "construir el motor web de próxima generación para los usuarios de Firefox ". Incluía numerosas mejoras para Gecko, tomadas del proyecto experimental Servo . [15] [16] Firefox 57, también conocido como "Firefox Quantum", que se lanzó por primera vez en noviembre de 2017, es la versión inicial con los principales componentes de los proyectos Quantum/Servo habilitados. Estos incluyen un mayor rendimiento en los componentes de renderizado de CSS y GPU . Se fusionarán componentes adicionales de Servo a Gecko de forma incremental en futuras versiones. [15]
En septiembre de 2018, Mozilla anunció GeckoView, la base de la próxima generación de productos móviles de Mozilla basada en una biblioteca de software que hace que Gecko sea reutilizable para Android, abarcando los esfuerzos de desarrollo de software más nuevos para "desacoplar el motor en sí de su interfaz de usuario y hacer que sea fácil de integrar en otras aplicaciones". Firefox Focus 7.0, enviado en el mismo mes, [17] es la versión inicial que introdujo GeckoView, con un mayor rendimiento en la carga de páginas media. [18] [19] Firefox Reality también se creó con GeckoView. [18] En junio de 2019, Mozilla anunció Firefox Preview como un proyecto en curso que se centra en la creación de un navegador web para Android con GeckoView. [20] Firefox para Android 79, también conocido como "Firefox Daylight", que se envió por primera vez en agosto de 2020, es la primera versión estable de este con componentes principales impulsados por el motor GeckoView. [21]
Desde el principio, Gecko fue diseñado para admitir estándares abiertos de Internet. Algunos de los estándares que Gecko admite son:
Gecko también soporta SVG . [23]
Para poder ofrecer compatibilidad con páginas web diseñadas para versiones anteriores de Netscape e Internet Explorer, Gecko admite el cambio de DOCTYPE . Los documentos con un DOCTYPE moderno se representan en modo de cumplimiento de estándares, que sigue estrictamente los estándares del W3C . Los documentos que no tienen DOCTYPE o que tienen un DOCTYPE más antiguo se representan en modo peculiar , que emula algunas de las rarezas no estándar de Netscape Communicator 4.x; sin embargo, algunas de las características de 4.x (como las capas ) no son compatibles.
Gecko también tiene soporte limitado para algunas características no estándar de Internet Explorer, como el elemento marquee y la document.all
propiedad (aunque a las páginas que lo prueben explícitamente document.all
se les informará que no es compatible). [24]
Gecko se utiliza principalmente en navegadores web , siendo los primeros Netscape 6 y Mozilla Suite (posteriormente rebautizado como SeaMonkey ). También se utiliza en otros derivados de navegadores web de Mozilla, como Firefox y Firefox para dispositivos móviles , y en la implementación del clon de Internet Explorer que forma parte de Wine . [25] Mozilla también lo utiliza en su cliente de correo electrónico Thunderbird .
Otros navegadores web que utilizan Gecko incluyen GNU IceCat , [26] Waterfox , K-Meleon , Lunascape , Portable Firefox , Conkeror , Classilla y TenFourFox .
Gecko también es utilizado por Sugar para la computadora OLPC XO-1 , [27] y se utiliza como una implementación completa del XUL ( lenguaje de interfaz de usuario XML ). Gecko actualmente define la especificación XUL. [ necesita actualización ] Gecko también es utilizado por el sistema operativo móvil KaiOS , que se basa en el discontinuado Firefox OS . [28]
Los productos que anteriormente usaban Gecko incluyen Pale Moon (ahora usa Goanna ), Epiphany (ahora conocido como GNOME Web y usa WebKitGTK ) y GNOME DevHelp (ahora usa WebKitGTK ).
Los productos discontinuados que usaban Gecko incluyen Swiftfox , Flock , Galeon , Camino , Minimo , Beonex Communicator , Kazehakase , Songbird , Sunbird (calendario) , MicroB , Nightingale , Instantbird y Picasa para Linux. [29]
En Windows y otras plataformas, Gecko depende de compiladores propietarios. [30]
Después de Gecko 2.0, el número de versión se aumentó a 5.0 para que coincida con Firefox 5, y desde entonces se ha mantenido sincronizado con el número de versión principal tanto de Firefox como de Thunderbird, [31] para reflejar el hecho de que ya no es un componente separado. [32]
Quantum es un proyecto de Mozilla que engloba varios esfuerzos de desarrollo de software para "construir el motor web de próxima generación para los usuarios de Firefox ". Incluye numerosas mejoras para Gecko, en gran parte incorporadas desde el proyecto experimental Servo . Quantum también incluye mejoras en la interfaz de usuario y las interacciones. [15] [16]
Firefox 57, lanzado en noviembre de 2017, es la versión inicial con un componente Servo habilitado. Mozilla llama a esta y a varias versiones futuras "Firefox Quantum". [33] [34]
En 2012, Mozilla inició el proyecto experimental Servo , que es un motor diseñado desde cero con el objetivo de mejorar la concurrencia y el paralelismo, al mismo tiempo que reduce las vulnerabilidades de seguridad de la memoria . Servo está escrito en el lenguaje de programación Rust , también creado por Mozilla, que está diseñado para generar código compilado con mejor seguridad de memoria, concurrencia y paralelismo que el código C++ compilado. [5]
En abril de 2016, Servo necesitaba al menos varios años de desarrollo para convertirse en un motor de navegador con todas las funciones, [35] de ahí la decisión de iniciar el proyecto Quantum para incorporar partes estables de Servo a Firefox. Mozilla despidió a todos los desarrolladores de Servo en agosto de 2020. [36]
El proyecto Quantum se compone de varios subproyectos. [15]
El proyecto Mozilla Azure es una API de abstracción de gráficos de bajo nivel sin estado que se utiliza en Firefox . [49]
El proyecto tiene varios objetivos, entre ellos:
Azure proporcionará aceleración de hardware 2D sobre backends de gráficos 3D. Firefox comenzó a utilizar Azure en lugar de Cairo en 2012. [50] [51] Está escrito en C++ y lo utiliza Servo . [52] El nombre Azure es una oda al fundador de Netscape, James H. Clark, y su trabajo anterior en Silicon Graphics, donde las estaciones de trabajo a menudo se nombraban con colores. [53]
se implementa utilizando C++ y JavaScript.