mozilla-firefox-quantum

El motor de renderizado es un componente crucial de cualquier navegador ya que es lo que nos permite visualizar las páginas web. Gecko, desarrollado originalmente por Netscape y ahora gestionado por Mozilla, es el nombre del motor que emplea Firefox desde sus inicios. Pero esos inicios ya quedan muy lejos y en Mozilla pensaron que ya es hora de afrontar una renovación completa.

Esta renovación ha sido bautizada con el nombre de Project Quantum y es la forma en la que desde la fundación pretenden adaptarse a la nueva era que vivimos. Y es que cuando Gecko fue desarrollado, las páginas web eran principalmente estáticas y los procesadores de las computadoras tan solo tenían un núcleo; además, la aceleración por GPU solo se usaba cuando se jugaba o se usaba alguna aplicación 3D. Pero hoy en día, las páginas son dinámicas y cada vez más complejas, las computadoras tienen varios núcleos y manejan hilos simultáneos y las GPU se usan en todas partes, también para acelerar contenido 2D.

Para algunas partes de Quantum, Mozilla está usando Rust, su lenguaje de programación. Con él, ha escrito un motor experimental de renderizado al que han llamado Servo y partes de él ya se están integrando en Firefox. El enfoque inicial es actualizar aquellas partes de Gecko que necesitan mejora para hacer uso de computación en paralelo.

La última versión de Firefox que está disponible al escribir estas líneas, Firefox 53, ya contiene el primer elemento de este enfoque. Esta versión crea un proceso de GPU separado que se utiliza para realizar la composición: toma los diferentes elementos de la página y la ventana de Firefox y los fusiona para crear el producto terminado.

Esta característica no solamente es una pieza importante de Quantum, sino que le ha permitido a Mozilla darse cuenta de ha mejorado la estabilidad. Aunque el proceso de la GPU sigue fallando más de lo que a cualquiera le gustaría, ahora se puede bloquear sin que afecte al resto del navegador.

Otra de las preocupaciones del Project Quantum es el DOM. Para explicarlo rápidamente, diremos que el DOM (document object model), un elemento central del navegador, es la interfaz programática que sirve para tener un puente entre el HTML (las etiquetas y los elementos que conforman la página) y JavaScript. El código en JavaScript manipula la página manipulando el DOM.

Reemplazar el DOM es algo que conlleva mucho trabajo y que no se puede hacer tan solo en un ciclo de los de seis semanas que usa Mozilla para liberar cada nueva versión de Firefox. Así que lo que han hecho ha sido trocear todo en pequeñas piezas distintas que son implementadas en el canal Beta antes de implementarlas en el canal estable. Incluso en ese canal, el Beta, los cambios son probados por usuarios al azar. Así, al usar unos el nuevo código y otros el viejo, la estabilidad y el desempeño se puede medir mejor y compararlo para comprobar los avances realizados.

Chrome fue uno de los primeros navegadores en adoptar el sistema de ciclos de desarrollo rápido. Firefox tardó un poco, pero al final también lo hizo, recibiendo en su momento bastantes críticas por ello. Sin embargo, al final se ha comprobado que este sistema es efectivo, y no solamente a efectos publicitarios. Antes, se pensaba que para realizar grandes cambios en la arquitectura había que seguir un proceso de liberaciones muy espaciadas en el tiempo. Sin embargo, con procesos de trabajo como el que está siguiendo Mozilla (y también Microsoft, pero a su manera) se está probando que el desarrollo incremental y los lanzamientos regulares son compatibles con esos grandes cambios.

Por lo tanto, si eres usuario de Firefox, ten en cuenta que al navegar por la red con él estás usando ya mismo un pedacito del futuro de este importante navegador. Todavía queda bastante trabajo por delante, pero en cada nueva versión, ese futuro está más cerca.