De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

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 de XUL ). Gecko ofrece una API de programación rica que la hace adecuada para una amplia variedad de roles 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]

Historia [ editar ]

El desarrollo del motor de diseño ahora conocido como Gecko comenzó en Netscape en 1997, luego de la compra de DigitalStyle por parte de la compañía . El motor de renderizado de Netscape existente, originalmente escrito 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 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 anterior, con la intención de integrarlo en Netscape Communicator cuando estuviera maduro y estable. Se esperaba que se publicara 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, se lanzó el nuevo código del motor de diseño bajo una licencia de código abierto. Originalmente presentado como Raptor , el nombre tuvo que cambiarse a NGLayout (diseño de próxima generación) debido a problemas de marca registrada . Netscape luego renombró NGLayout como Gecko . Si bien la Organización Mozilla (precursora de la Fundación Mozilla ) inicialmente continuó usando el nombre NGLayout (Gecko era una marca registrada de Netscape), [10] eventualmente ganó la marca Gecko.

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 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, que no estaban contentos con los seis meses previstos 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 al antiguo motor de diseño) tuvo que abandonarse. Netscape 6, la primera versión de Netscape que incorpora Gecko, fue lanzada en noviembre de 2000 (el nombre Netscape 5 nunca se usó).

A medida que continuaba 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 habían incorporado anteriormente Internet Explorer). Sin embargo, con la excepción de algunas versiones beta , Gecko nunca se usó en el cliente principal de Microsoft Windows AOL.

El 15 de julio de 2003, AOL despidió a los desarrolladores de Gecko restantes y la Fundación Mozilla (formada el mismo día) se convirtió en el administrador principal 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.

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 ". Incluye numerosas mejoras a Gecko, tomadas del proyecto experimental Servo . [12] [13] Firefox 57, también conocido como "Firefox Quantum", se envió por primera vez en noviembre de 2017, es la versión inicial con los componentes principales de los proyectos Quantum / Servo habilitados. Estos incluyen un mayor rendimiento en los componentes de renderizado de CSS y GPU . Los componentes adicionales se fusionarán de Servo a Gecko de forma incremental en versiones futuras. [12]

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 los nuevos esfuerzos de desarrollo de software para "desacoplar el motor en sí de su interfaz de usuario y facilitar la incrustar en otras aplicaciones ". Firefox Focus 7.0, enviado el mismo mes, [14] es la versión inicial introducida en GeckoView, con un mayor rendimiento en la carga media de páginas. [15] [16] Firefox Reality también se creó con GeckoView. [15] En junio de 2019, Mozilla anunció Firefox Preview como un proyecto en curso que se centra en la construcción de un navegador web Android con GeckoView. [17]Firefox para Android 79, también conocido como "Firefox Daylight", se envió por primera vez en agosto de 2020, es la primera versión estable de eso con componentes principales impulsados ​​por el motor GeckoView. [18]

Soporte de estándares [ editar ]

Desde el principio, Gecko fue diseñado para soportar estándares abiertos de Internet. Algunos de los estándares que admite Gecko incluyen:

  • CSS Nivel 2.1 (compatibilidad parcial con CSS 3) [19]
  • DOM Nivel 1 y 2 (soporte parcial para DOM 3)
  • HTML 4 (compatibilidad parcial con HTML5; consulte Comparación de motores de diseño (HTML5) )
  • JavaScript 1.8.5 ( compatibilidad completa con ECMAScript 5.1), [20] implementado en SpiderMonkey
  • MathML
  • RDF
  • XForms (a través de una extensión oficial)
  • XHTML 1.0
  • XML 1.0
  • XSLT y XPath , implementados en TransforMiiX

Gecko también admite parcialmente SVG 1.1. [21] Los módulos de fuente SVG, perfil de color, animación, vista y cursor aún no se han implementado y los módulos de filtro y texto solo se implementaron parcialmente. El módulo de extensibilidad también está implementado pero actualmente está deshabilitado.

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 procesan en modo de cumplimiento de estándares, que sigue estrictamente los estándares del W3C . Los documentos que no tienen DOCTYPE o un DOCTYPE anterior se procesan en modo peculiar , que emula algunas de las rarezas no estándar de Netscape Communicator 4.x; sin embargo, algunas de las funciones 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.allpropiedad (aunque a las páginas que se prueban explícitamente document.allse les dirá que no es compatible). [22]

Uso [ editar ]

Gecko se utiliza principalmente en navegadores web , siendo los primeros Netscape 6 y Mozilla Suite (más tarde rebautizados como SeaMonkey ). También se utiliza en otros navegadores web derivados de Mozilla como Firefox y Firefox para móviles y en la implementación del clon Internet Explorer que forma parte de Wine . [23] Mozilla también lo usa 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 .

Otros productos que utilizan Gecko incluyen Nightingale , Instantbird y el software de organización de imágenes de Google, Picasa (para Linux). [25]

Sugar también usa Gecko para la computadora OLPC XO-1 . [26] Gecko se utiliza como una implementación completa de XUL ( XML User Interface Language). Gecko actualmente define la especificación XUL.

Usuarios anteriores [ editar ]

Los productos que antes usaban Gecko incluyen Pale Moon (ahora usando Goanna ), Epiphany (ahora conocido como GNOME Web y usando WebKitGTK ) y GNOME DevHelp (ahora usando WebKitGTK ).

Los productos descontinuados que usaban Gecko incluyen Swiftfox , Flock , Galeon , Camino , Minimo , Beonex Communicator , Kazehakase , Songbird , Sunbird (calendario) y MicroB .

Dependencia propietaria [ editar ]

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 usado 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 coincidir 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]

Hinchar [ editar ]

En la era de Netscape, una combinación de malas decisiones técnicas y de gestión dio como resultado la hinchazón del software Gecko . [11] [31] [32] Así, en 2001, Apple eligió bifurcar KHTML , no Gecko, para crear el motor WebKit para su navegador Safari . [31] [32] Sin embargo, en 2008 Mozilla había abordado algunos de los problemas de hinchazón, lo que resultó en grandes mejoras de rendimiento para Gecko. [33]

Quantum [ editar ]

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. [12] [34]

Firefox 57, lanzado en noviembre de 2017, es la versión inicial con un componente Servo habilitado. Mozilla denomina este y varios lanzamientos futuros planeados "Firefox Quantum". [35] [36]

Antecedentes [ editar ]

En 2013, Mozilla comenzó 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 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, [37] de ahí la decisión de iniciar el proyecto Quantum para traer partes estables de Servo a Firefox.

Componentes [ editar ]

El proyecto Quantum se compone de varios subproyectos. [12]

  • CSS : sistema de hojas de estilo paralelo de Servo integrado en Gecko . Los puntos de referencia sugieren que el rendimiento se escala linealmente con la cantidad de núcleos de CPU . [38] Esto se publicó en Firefox 57. [36]
  • Render : Arquitectura de renderizado de Servo , llamada WebRender, integrada en Gecko. WebRender reemplaza el modelo de dibujo de modo inmediato con un modelo de modo retenido que la GPU acelera más fácilmente al aprovechar la similitud de CSS / DOM con un gráfico de escena . La representación en el peor de los casos en las pruebas supera los 60 fotogramas por segundo. [39] Mozilla comenzó a habilitar el nuevo renderizador para determinadas combinaciones de hardware / sistema operativo en Firefox 67. [40]
  • Compositor : el compositor existente de Gecko se movió a su propio proceso, aislando las pestañas del navegador de los bloqueos relacionados con el controlador de gráficos. Dado que las fallas del compositor no reducirán el proceso de contenido del navegador, el proceso del compositor se puede reiniciar de forma transparente sin perder los datos del usuario. Esto fue lanzado en Firefox 53. [41]
  • DOM : Vagamente inspirado en la arquitectura Constellation de Servo [42] y el motor Presto de Opera , [43] Quantum DOM utiliza hilos programados cooperativamente dentro del DOM para aumentar la capacidad de respuesta sin aumentar el número de procesos y, por tanto, el uso de memoria. El núcleo de esto se envió en Firefox 57. [44]
  • Flujo : un paraguas para las mejoras de rendimiento visibles para el usuario impulsadas por un equipo que trabaja en todos los componentes de Gecko. Centrado en mejoras reales del rendimiento del usuario en las principales aplicaciones web , principalmente G Suite y Facebook . [45] Este trabajo se completó y envió para Firefox 57. [46]
  • Photon : una actualización de la interfaz de usuario de toda la aplicación, con un fuerte enfoque en mejorar el rendimiento de la interfaz de usuario. Tratado como un proyecto hermano de Quantum Flow. [47] Esto se publicó en Firefox 57. [35]
  • Red : mejore el rendimiento de Necko , la capa de red de Gecko, al mover más actividad de la red fuera del hilo principal, la priorización dependiente del contexto de los flujos de red y la capa de caché con la red. [48] Esta función se lanzó en Firefox 59. [49]

Azure [ editar ]

El proyecto de Mozilla Azure es una API de abstracción de gráficos de bajo nivel sin estado que se utiliza en Firefox . [50] El proyecto tiene varios objetivos, incluida 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 utilizado por 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 llevaban nombres de colores. [54]

Referencias [ editar ]

  1. ^ "Acuerdos de licencia de usuario final de la Fundación Mozilla" . Mozilla .
  2. ^ "Políticas de licencias de Mozilla" . mozilla.org . Consultado el 26 de marzo de 2013 .
  3. ^ "Incrustación de Mozilla" . Mozilla.org. 2012-10-25 . Consultado el 31 de octubre de 2012 .
  4. ^ a b "Compilación simple de Firefox para Android" . Gecko se implementa usando C ++ y JavaScript.
  5. ^ a b Bergstrom, Lars; et al. (Mayo de 2016). "Ingeniería del motor del navegador web Servo usando Rust" (PDF) . Actas de la Conferencia Internacional sobre Ingeniería de Software .
  6. ^ "Grupos de Google" . groups.google.com .
  7. ^ Yegulalp, Serdar (3 de febrero de 2017). "Mozilla vincula el destino de Firefox al lenguaje Rust" . InfoWorld .
  8. ^ "Actualización de MPL 2" . Consultado el 18 de agosto de 2012 .
  9. ^ "Preguntas frecuentes de Gecko" . Documentos web de MDN .
  10. ^ "proyecto nglayout: crisis de identidad" . Mozilla.org. Archivado desde el original el 29 de junio de 2011 . Consultado el 31 de octubre de 2012 .
  11. ↑ a b Jorge O. Castro (15 de junio de 2004). "Ars Technica se sienta con Scott Collins de Mozilla.org" . Ars Technica . Consultado el 16 de febrero de 2017 .
  12. ^ a b c d "Cuántica" . Wiki de Mozilla . Consultado el 20 de abril de 2017 .
  13. ^ Cimpanu, Catalin. "Mozilla anuncia Quantum, un nuevo motor de navegador para Firefox" . softpedia . Consultado el 7 de noviembre de 2016 .
  14. ^ "Firefox Focus 7.0 entra en beta, cambia a GeckoView (Gecko Engine)" .
  15. ^ a b "Firefox Focus con GeckoView" . Hacks de Mozilla . 13 de septiembre de 2018 . Consultado el 4 de septiembre de 2019 .
  16. ^ "Novedades de Firefox Focus para Android (versión 7) | Ayuda de Firefox Focus" . support.mozilla.org . Consultado el 4 de septiembre de 2019 .
  17. ^ "GeckoView en 2019" . Hacks de Mozilla . 27 de junio de 2019 . Consultado el 4 de septiembre de 2019 .
  18. ^ Vesta Zare (25 de agosto de 2020). "Rápido, personalizado y privado por diseño en todas las plataformas: presentamos una nueva experiencia de Firefox para Android" . Blog de Mozilla . Consultado el 22 de septiembre de 2020 .
  19. ^ "Gráfico de soporte de CSS de Mozilla" . Developer.mozilla.org. 2012-08-04. Archivado desde el original el 5 de abril de 2014 . Consultado el 31 de octubre de 2012 .
  20. ^ "Soporte de ECMAScript 5 en Mozilla" . Developer.mozilla.org. 2013-11-14 . Consultado el 2 de diciembre de 2013 .
  21. ^ "Estado de Mozilla SVG" . Mozilla.org. 2012-08-25 . Consultado el 31 de octubre de 2012 .
  22. ^ "Mozilla agrega compatibilidad con document.all indetectable, parte de la nueva distribución de Linux de Novell?" . Developer.mozilla.org. 2004-07-23 . Consultado el 7 de febrero de 2018 .
  23. ^ "IE usa Gecko Under Wine" . Wine Wiki . Consultado el 14 de septiembre de 2009 .
  24. ^ sdubois (24 de junio de 2010). "Gecko" . Fundación de Software Libre . Consultado el 23 de mayo de 2019 .
  25. ^ "Picasa 3.0 para Linux" . Archivado desde el original el 7 de enero de 2009 . Consultado el 28 de diciembre de 2008 .
  26. Martens, China (3 de enero de 2007). "Una computadora portátil por niño prepara la interfaz 'Sugar'" . Servicio de noticias IDG. Archivado desde el original el 18 de enero de 2008 . Consultado el 28 de diciembre de 2007 .
  27. ^ "Construyendo Firefox para Windows" . Documentos web de MDN .
  28. ^ http://wiki.jswindle.com/index.php/Fedora#Working_Wine Archivado el 11 de junio de 2012 en Wayback Machine
  29. ^ "Versiones de Gecko y versiones de la aplicación" . MDN . Consultado el 18 de noviembre de 2013 .
  30. ^ "No hay mucho en el nuevo Thunderbird 5, pero la hoja de ruta parece prometedora" . Ars Technica . Consultado el 7 de febrero de 2018 .
  31. ↑ a b Paul Festa (14 de enero de 2003). "Apple desaire pica a Mozilla" . Redes CNET . Archivado desde el original el 25 de octubre de 2012 . Consultado el 16 de febrero de 2017 .
  32. ↑ a b David Baron (9 de enero de 2003). "Jueves 2003-01-09" . Weblog de David Baron . autoeditado. Archivado desde el original el 28 de julio de 2009 . Consultado el 16 de febrero de 2017 .
  33. Ryan Paul (9 de septiembre de 2008). "Por qué Mozilla está comprometido con Gecko a medida que crece la popularidad de WebKit" . Consultado el 16 de febrero de 2017 .
  34. ^ Cimpanu, Catalin. "Mozilla anuncia Quantum, un nuevo motor de navegador para Firefox" . softpedia . Consultado el 17 de febrero de 2017 .
  35. ^ a b "Firefox 57.0, vea todas las funciones nuevas, actualizaciones y correcciones" . Mozilla . Consultado el 30 de octubre de 2018 .
  36. ^ a b "Presentación del nuevo Firefox: Firefox Quantum - El blog de Mozilla" . El blog de Mozilla . Consultado el 30 de octubre de 2018 .
  37. ^ "Trabajo restante del servo" . GitHub . Consultado el 17 de febrero de 2017 .
  38. ^ "El registro de cambios" . El registro de cambios . Consultado el 28 de marzo de 2017 .
  39. ^ "Bay Area Rust Meetup febrero de 2016" . Air Mozilla . Consultado el 28 de marzo de 2017 .
  40. ^ "Webrender donde" . Wiki de Mozilla . Consultado el 14 de julio de 2020 .
  41. ^ "Firefox más rápido y estable con los primeros bytes grandes de Project Quantum, más simple con temas compactos y rediseño de permisos" . Blog de Mozilla . Consultado el 27 de abril de 2017 .
  42. ^ "Arquitectura de servo" . YouTube . Consultado el 28 de marzo de 2017 .
  43. ^ "Proyecto cuántico de Mozilla" . Blog de Bill McCloskey . 2016-10-27 . Consultado el 28 de marzo de 2017 .
  44. ^ "Entrar en la era cuántica" . Hacks de Mozilla . 2017-11-13 . Consultado el 14 de julio de 2020 .
  45. ^ "Flujo cuántico" . Wiki de Mozilla . Consultado el 28 de marzo de 2017 .
  46. ^ "Boletín de ingeniería de flujo cuántico # 25" . ehsanakhgari.org . 2017-09-17 . Consultado el 14 de julio de 2020 .
  47. dolske (18 de mayo de 2017). "Boletín de ingeniería de fotones n. ° 1" . Blog de Dolske . Consultado el 4 de julio de 2017 .
  48. ^ "TPE Necko / Proyectos - MozillaWiki" . wiki.mozilla.org . Consultado el 4 de julio de 2017 .
  49. ^ "Notas de la versión de Firefox 59" . www.mozilla.org . Consultado el 16 de enero de 2019 .
  50. ^ "Plataforma / GFX / Moz2D - MozillaWiki" .
  51. Parfeni, Lucian. "Firefox ahora usa la API de gráficos de Azure para Canvas en todas las plataformas" .
  52. ^ "Azure que reemplaza a El Cairo en Mozilla Firefox - Phoronix" .
  53. ^ Willis, Nathan (17 de junio de 2015). "Renderizado de páginas en paralelo con Mozilla Servo" . LWN.net . Consultado el 27 de junio de 2015 .
  54. ^ "Presentamos el proyecto Azure - JOEDREW!" . Archivado desde el original el 8 de septiembre de 2016 . Consultado el 22 de septiembre de 2019 .

Enlaces externos [ editar ]

  • Gecko - Red de desarrolladores de Mozilla
  • Wiki de desarrollo de Gecko (wiki.mozilla.org)
  • Propuesta de estrategia de producto de Mozilla (BORRADOR)
  • Compatibilidad con los estándares del navegador web
  • JRex ( API de Java para Gecko)