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 tenían previamente integrado 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 ).
Los productos descontinuados que usaban Gecko incluyen Swiftfox , Flock , Galeon , Camino , Minimo , Beonex Communicator , Kazehakase , Songbird , Sunbird (calendario) , MicroB , Nightingale , Instantbird y Picasa para Linux. [26]
En Windows y otras plataformas, Gecko depende de compiladores propietarios. [27] Por lo tanto, las distribuciones FOSS de Linux no pueden incluir el paquete Gecko utilizado en la capa de compatibilidad de Windows Wine . [28]
Después de Gecko 2.0, el número de versión se elevó 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 para Firefox como para Thunderbird, [29] para reflejar el hecho de que ya no es una versión separada. componente. [30]
En la era Netscape, una combinación de malas decisiones técnicas y de gestión dio lugar a un exceso de software de Gecko . [12] [31] [32] Así, en 2001 Apple decidió bifurcar KHTML , no Gecko, para crear el motor WebKit para su navegador Safari . [31] [32] Sin embargo, en 2008 Mozilla había solucionado algunos de los problemas de hinchazón, lo que resultó en importantes mejoras de rendimiento para Gecko. [33]
Quantum es un proyecto de Mozilla que abarca varios esfuerzos de desarrollo de software para "construir el motor web de próxima generación para los usuarios de Firefox ". Incluye numerosas mejoras a Gecko, en gran parte incorporadas del proyecto experimental Servo . Quantum también incluye mejoras en la interfaz de usuario y las interacciones. [13] [14]
Firefox 57, lanzado en noviembre de 2017, es la versión inicial con un componente Servo habilitado. Mozilla denomina a este y a varios lanzamientos futuros previstos "Firefox Quantum". [34] [35]
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 y al mismo tiempo reducir 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 mayor seguridad de memoria, concurrencia y paralelismo que el código compilado C++. [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.