Gecko 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 admitir 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 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 . [4]
Gecko está escrito en C++ y JavaScript , [5] [6] y, desde 2016, adicionalmente en Rust . [7] [8] Es un software gratuito y de código abierto sujeto a los términos de la Licencia pública de Mozilla versión 2. [9] Mozilla admite oficialmente su uso en Android , [5] Linux , macOS y Windows . [10]
El desarrollo del motor de diseño ahora conocido como Gecko comenzó en Netscape en 1997, tras la compra de DigitalStyle por parte de la empresa . El motor de renderizado Netscape existente, 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 W3C, tenía soporte limitado para HTML dinámico y carecía de funciones como el reflujo incremental (cuando el motor de diseño reorganiza 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 al anterior, 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.
Después del 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. Presentado originalmente como Raptor , el nombre tuvo que cambiarse a NGLayout (diseño de próxima generación) debido a problemas de marca registrada . Más tarde, Netscape cambió el nombre de NGLayout a Gecko . Si bien la Organización Mozilla (la precursora de la Fundación Mozilla ) inicialmente continuó usando el nombre NGLayout (Gecko era una marca registrada de Netscape), [11] finalmente ganó la marca Gecko. [ cita necesaria ]
En octubre de 1998, Netscape anunció que su próximo navegador usaría Gecko (que todavía se llamaba NGLayout en ese momento) en lugar del antiguo motor de diseño, lo que requería reescribir 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 dados para la reescritura. [12] También significó que la mayor parte del trabajo realizado para Netscape Communicator 5.0 (incluido el desarrollo de las mejoras de Mariner en el antiguo motor de diseño) tuvo que abandonarse. Netscape 6, la primera versión de Netscape que incorpora Gecko, se lanzó en noviembre de 2000 (el nombre Netscape 5 nunca se utilizó). [ cita necesaria ]
A medida que continuó el desarrollo de Gecko, 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 previamente incluían Internet Explorer). Sin embargo, con la excepción de algunas versiones beta , Gecko nunca se usó en el cliente principal de Microsoft Windows AOL. [ cita necesaria ]
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 el principal administrador del desarrollo de Gecko. Hoy en día, Gecko es desarrollado por empleados de Mozilla Corporation , empleados de empresas que contribuyen al proyecto Mozilla y voluntarios. [ cita necesaria ]
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 a Gecko, tomadas del proyecto experimental Servo . [13] [14] 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 CSS y GPU . Se fusionarán componentes adicionales de Servo a Gecko de forma incremental en versiones futuras. [13]
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, que abarca nuevos esfuerzos de desarrollo de software para "desacoplar el motor de su interfaz de usuario y facilitar su incrustar en otras aplicaciones". Firefox Focus 7.0, lanzado el mismo mes, [15] es la versión inicial presentada por GeckoView, con mayor rendimiento en la carga de páginas media. [16] [17] Firefox Reality también se creó con GeckoView. [16] 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. [18] Firefox para Android 79, también conocido como "Firefox Daylight", que se lanzó por primera vez en agosto de 2020, es la primera versión estable con componentes principales impulsados por el motor GeckoView. [19]
Desde el principio, Gecko fue diseñado para soportar estándares abiertos de Internet. Algunos de los estándares que admite Gecko incluyen:
Gecko también es compatible con SVG . [21]
Para admitir páginas web diseñadas para versiones heredadas de Netscape e Internet Explorer, Gecko admite la conmutación 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 tienen un DOCTYPE más antiguo se representan en modo peculiares , que emula algunas de las rarezas no estándar de Netscape Communicator 4.x; sin embargo, algunas de las funciones 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 de marquesina y la document.all
propiedad (aunque a las páginas que prueban explícitamente document.all
se les informará que no es compatible). [22]
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 del navegador web de Mozilla como Firefox y Firefox para móviles y en la implementación del clon de Internet Explorer que forma parte de Wine . [23] Mozilla también lo utiliza en su cliente de correo electrónico Thunderbird .
Otros navegadores web que utilizan Gecko incluyen GNU IceCat , [24] Waterfox , K-Meleon , Lunascape , Portable Firefox , Conkeror , Classilla , TenFourFox .
Sugar también utiliza Gecko para la computadora OLPC XO-1 . [25] Gecko se utiliza como una implementación completa de XUL ( lenguaje de interfaz de usuario XML ). Gecko define actualmente la especificación XUL.
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 ).
Discontinued products that used Gecko include Swiftfox, Flock, Galeon, Camino, Minimo, Beonex Communicator, Kazehakase, Songbird, Sunbird (calendar), MicroB, Nightingale, Instantbird, and Picasa for Linux.[26]
On Windows and other platforms, Gecko depends on proprietary compilers.[27] Thus, FOSS distributions of Linux cannot include the Gecko package used in the Windows compatibility layer Wine.[28]
After Gecko 2.0, the version number was bumped to 5.0 to match Firefox 5, and from then on has been kept in sync with the major version number for both Firefox and Thunderbird,[29] to reflect the fact that it is no longer a separate component.[30]
In the Netscape era, a combination of poor technical and management decisions resulted in Gecko software bloat.[12][31][32] Thus in 2001 Apple chose to fork KHTML, not Gecko, to create the WebKit engine for its Safari browser.[31][32] However, by 2008 Mozilla had addressed some of the bloat problems, resulting in significant performance improvements for Gecko.[33]
Quantum is a Mozilla project encompassing several software development efforts to "build the next-generation web engine for Firefox users". It includes numerous improvements to Gecko, largely incorporated from the experimental Servo project. Quantum also includes refinements to the user interface and interactions.[13][14]
Firefox 57, released in November 2017, is the initial version with a Servo component enabled. Mozilla dubs this and several planned future releases "Firefox Quantum".[34][35]
In 2012, Mozilla began the experimental Servo project, which is an engine designed from scratch with the goals of improving concurrency and parallelism while also reducing memory safety vulnerabilities. Servo is written in the Rust programming language, also created by Mozilla, which is designed to generate compiled code with better memory safety, concurrency, and parallelism than compiled C++ code.[6]
En abril de 2016, Servo necesitaba al menos varios años de desarrollo para convertirse en un motor de navegador con todas las funciones, [36] de ahí la decisión de iniciar el proyecto Quantum para llevar partes estables de Servo a Firefox. Mozilla despidió a todos los desarrolladores de Servo en agosto de 2020. [37]
El proyecto Quantum se compone de varios subproyectos. [13]
El proyecto Mozilla Azure es una API de abstracción de gráficos de bajo nivel sin estado utilizada en Firefox . [50] El proyecto tiene varios objetivos que incluyen una compatibilidad Direct2D más precisa, una interoperabilidad de estado optimizada y un control mejorado sobre las características de rendimiento y los errores. Azure proporcionará aceleración de hardware 2D además de backends de gráficos 3D. Firefox comenzó a usar Azure en lugar de Cairo en 2012. [51] [52] Está escrito en C++ y lo utiliza Servo . [53] 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 recibían nombres de colores. [54]
Gecko se implementa utilizando C++ y JavaScript.