Con la aparición del navegador Google Chrome, basado en WebKit, comenzó nuevamente el debate en torno al motor HTML Gecko, utilizado en Firefox. ¿Seguirá siendo relevante a largo plazo? ¿Debería Firefox adoptar Webkit y dejar de lado Gecko?
A pesar de la popularidad de WebKit, cada vez mayor, quienes comprenden las diferencias entre los dos motores y aprecian las fortalezas de Gecko saben que no tiene sentido especular sobre una futura adopción de Webkit en Firefox.
Las fortalezas de WebKit
WebKit es un motor de render HTML de código abierto, desarrollado por Apple básandose en el código del proyecto KTHML. WebKit es un motor sumamente liviano, reconocido por tener una base de código prolija y limpia, cumplir estríctamente con los estándares, y usar poca memoria para su funcionamiento. Por estos motivos WebKit es una opción muy popular para implementar navegadores, entre otros usos.
WebKit fue usado en principio en el navegador Safari y luego en el iPhone, pero varios proveedores conocidos también lo utilizan: Adobe, Nokia, Trolltech entre otros. WebKit también se usa en una gran cantidad de navegadores menos conocidos, como ser iCab, Omniweb, Shiira, y Epiphany. Más recientemente, Google eligió a WebKit para su plataforma movil Android, y para su navegador de escritorio Chrome.
El consenso entre los desarrolladores es claro: WebKit es un motor excelente que permite utilizarlo en muchos casos prácticos. WebKit está en todos lados, y gana popularidad a pasos agigantados. Y es justamente esta creciente popularidad que, para algunos, comienza a poner en duda la relevancia de Mozilla Gecko como motor HTML.
Por qué Apple rechazó a Gecko
Gecko, creado originalmente por Netscape, suele ser criticado por tener una cantidad de código enorme y no muy prestigiosa. Gecko siempre fue poderoso, pero todas sus impresionantes características eran a costa de tamaño, complejidad y uso (y abuso) de memoria. En consecuencia, Gecko no era apropiado para entornos restringidos, en donde agregar funcionalidad no resulta una prioridad.
Una de los principales motivos que aumentan la complejidad del código de Gecko es que, en realidad, apunta a ser mucho más que un motor HTML. El objetivo inicial de Mozilla era extremadamente ambicioso: la suit original de Mozilla incluía un navegador, un programa de mail y noticias, una herramienta de diseño web, y un cliente de chat. Además de renderizar HTML, Gecko brinda un framework para la creación de interfaces de usuario basadas en XML (llamada XUL), y provee de servicios para soportar extensiones en el navegador, las cuales son una de las características más valiosas de Firefox.
Gecko también utiliza XPCOM, otra de las fuentes de complejidad en su código. XPCOM le permitió a Gecko ser completamente modular. Sin embargo, muchos desarrolladores lo adoptaron con demasiado entusiasmo, y usaron XPCOM en lugares donde no era tan apropiado. Scott Collins, desarrollador de Mozilla, comentó que el uso excesivo de XPCOM fue uno de los mayores errores de Mozilla.
Así, con toda esta complejidad de la mano de XUL y XPCOM, Apple no tuve que pensar mucho al momento de elegir algo más liviano para Safari. Además, es probable que Apple ya estuviera viendo la necesidad de embeber Safari en dispositivos móviles, y Gecko no era una opción en ese momento.
En 2003, cuando Apple anunció que eligiría a KHTML para Safari, Mike Shaver (de Mozilla) respondió en su blog comentando las debilidades de Gecko. Allí predijo que Apple ayudaría a promover los estándares web, y que la decisión de Apple de crear su propio navegador ayudaría a crear varias oportunidades de aprendizaje mutuo.
"Gecko no logró el objetivo de ser 'pequeño y ágil'... Sinceramente espero que Mozilla aprenda de Safari/KTML, porque lograron hacer un trabajo increíble en una décima del código (de Gecko)".
Encaminando a Gecko para Firefox 3
Pero el tiempo pasó, muchas cosas cambiaron desde aquel 2003, y la base de código de Gecko avanzó constantemente. Gecko todavía es complejo, pero se superaron muchas de sus debilidades históricas. Gecko recibió mejoras masivas para Firefox 3, con muchos cambios que mejoran la experiencia de navegación.
Gecko 1.9 utiliza Cairo para mejorar el soporte de SVG (gráficos vectoriales), lo que permite algunas características interesantes, como ser un zoom de todos los componentes de la página. También se mejoraron algoritmos internos, permitiendo a Gecko pasar el test Acid2 . Además, Mozilla logró disminuir drásticamente el uso de memoria, superando a Safari y Opera.
Gecko también soporta algunos elementos de CSS 3 (ya implementados en WebKit), y tiene una mejor rendimiento al renderizar páginas. Por otro lado, Mozilla está preparando a TraceMonkey, su nuevo motor JavaScript que promete grandes mejores de peformance.
Desde un punto de vista técnico, Gecko es una opción muy sólida frente a WebKit. Mozilla además tiene los recursos, la experiencia y el apoyo de la comunidad para llevar a Gecko a nuevos rumbos.
Gecko enamorando a las masas
Por otro lado, es importante destacar que muchas de las características de Gecko están probando resultarle útiles a los proveedores externos. Se están construyendo muchas aplicaciones en XUL, con resultandos impresionantes. Incluso se puede usar a Firefox 3 como un entorno de ejecución XUL, por lo que es posible crear aplicaciones ricas con XUL y Javascript, y distribuirlas directamente por Internet. También estamos viendo aplicaciones complejas para Firefox distribuidas como extensiones.
Gecko está igualando a WebKit en rendimiento y bajo uso de memoria, y a la vez cuenta con algunas ventajas únicas que no se encuentran en ningún otro motor, y que sería dificil agregarlas a WebKit.
Entonces, ¿Mozilla reemplazará a Gecko por WebKit? Ni de cerca.
WebKit no es el futuro de Firefox
Mike Shaver, ingeniero de Mozilla, comenta su punto de vista sobre la discusión Gekco/WebKit:
"Siento mucho respeto por los muchachos de WebKit, y por sus logros. Tenemos una web mejor gracias a que ellos están mejorando, y mismo Mozilla es mejor al tener una competencia con quien se puede también cooperar, desde estándares web hasta las más triviales discusiones de implementación".
A pesar de que respeta los logros técnicos de WebKit, opina que no sería útil para Firefox, debido al modelo de desarrollo de y la fragmentación en el ecosistema de WebKit.
"Si miran al escenario de WebKit hoy en día, verán que hay un montón de proyectos diferentes, y no resulta claro cómo van a converger. Necesitaríamos trabajar intensamente para adaptar WebKit a nuestras necesidades, y agregar otra variante al escenario no ayudaría a nadie, y menos a la gente de WebKit!. Ya aprendimos sobre el mantenimiento e integración de ramas paralelas de desarrollo, y lo aprendimos a los golpes (y más de una vez, para ser sinceros), así que no es un problema que quisieramos volver a tener".
¿Transplante de cerebro? No, gracias
Evidentemente, con todo el apoyo y crecimiento que logró Mozilla, sin dudas Gecko continuará siendo una parte vital en el ecosistema de Mozilla. Que Firefox adopte WebKit es, hoy en día, muy poco factible.
Resultaría sumamente costoso un intento de integración entre WebKit y Firefox , y los beneficios no parecerían ser tantos.
Mike Shaver termina: "Seguimos de cerca el desarrollo de WebKit, y revisamos críticamente nuestra propia tecnología. Pero los transplantes de cerebro no son ni prácticos ni útiles".