Motor Chromium
WebKit es un motor de renderizado ligero pero potente que surgió de KHTML en 2001. Su flexibilidad, rendimiento y diseño inteligente lo convirtieron en la elección obvia para el motor de renderizado de Chromium cuando empezamos. Gracias al duro trabajo de toda la comunidad, WebKit ha prosperado y se ha mantenido al ritmo de las crecientes capacidades de la plataforma web desde entonces.
Sin embargo, Chromium utiliza una arquitectura multiproceso diferente a la de otros navegadores basados en WebKit, y el hecho de soportar múltiples arquitecturas a lo largo de los años ha provocado un aumento de la complejidad tanto para el proyecto WebKit como para Chromium. Esto ha ralentizado el ritmo colectivo de innovación, por lo que hoy presentamos Blink, un nuevo motor de renderizado de código abierto basado en WebKit.
No ha sido una decisión fácil. Sabemos que la introducción de un nuevo motor de renderizado puede tener importantes implicaciones para la web. Sin embargo, creemos que tener varios motores de renderizado -al igual que tener varios navegadores- estimulará la innovación y, con el tiempo, mejorará la salud de todo el ecosistema de la web abierta.
Webkit
Trabajar en Blink no es fácil. No es fácil para los nuevos desarrolladores de Blink porque hay muchos conceptos específicos de Blink y convenciones de codificación que se han introducido para implementar un motor de renderizado muy rápido. No es fácil ni siquiera para los desarrolladores de Blink con experiencia, porque Blink es enorme y extremadamente sensible al rendimiento, la memoria y la seguridad.
Desde la perspectiva de la base de código, “Blink” normalmente significa //tercera_parte/blink/. Desde la perspectiva del proyecto, “Blink” normalmente significa proyectos que implementan características de la plataforma web. El código que implementa las características de la plataforma web abarca //third_party/blink/, //content/renderer/, //content/browser/ y otros lugares.
¿Cuántos procesos de renderización se crean? Por razones de seguridad, es importante aislar las regiones de direcciones de memoria entre los documentos de varios sitios (esto se llama aislamiento de sitios). Conceptualmente, cada proceso de renderizado debería estar dedicado a un solo sitio como máximo. Sin embargo, siendo realistas, a veces es demasiado pesado limitar cada proceso de renderizado a un solo sitio cuando los usuarios abren demasiadas pestañas o el dispositivo no tiene suficiente RAM. Entonces un proceso de renderizado puede ser compartido por múltiples iframes o pestañas cargadas desde diferentes sitios. Esto significa que los iframes de una pestaña pueden estar alojados en diferentes procesos de renderización y que los iframes de diferentes pestañas pueden estar alojados en el mismo proceso de renderización. No hay una correspondencia 1:1 entre los procesos de renderización, los iframes y las pestañas.
Parpadeo de Google
Los desarrolladores web siempre han tenido que hacer pruebas tanto con Safari como con Chrome, y tanto en versión móvil como en versión de escritorio, ya que tienen conjuntos de características completamente diferentes, prefijos css distintos y están construidos a partir de versiones diferentes de Webkit.
Decir que Webkit2 es sólo para Safari no se acerca mucho a la verdad: Aparte de Chromium no puedo pensar en un solo puerto mantenido activamente que todavía esté basado en Webkit1, mientras que hay múltiples puertos de Webkit2 que están muy vivos (incluso si están teniendo problemas para colaborar con Apple de manera eficiente).
Estás leyendo demasiado en esto. Estas cosas no suceden de la noche a la mañana. La decisión de crear un fork probablemente se gestó durante mucho tiempo – de hecho ya era una situación de facto (Chromium utiliza WebKit1 mientras que la mayoría de los otros usuarios directos de WebKit utilizan WebKit2) – por lo que cuando Opera decidió unirse al mundo de Chromium probablemente ya estaba más o menos decidido. Lo que significa que Opera fue notificada de la creación del fork con antelación, pero probablemente no tuvo nada que ver con la decisión en sí.
Motor de renderizado blink online
Lo primero que hicimos fue eliminar la mitad de nuestra fuente, que no necesitábamos necesariamente. Todavía no hemos terminado. Y no estamos haciendo esto a ciegas: la eliminación de código se basa en estadísticas agregadas y anónimas de los usuarios de Chrome que optan por los informes.
Un gran cambio que hicimos cuando nos bifurcamos de Blink fue añadir un sistema de intenciones: cada vez que vamos a cambiar la plataforma web, enviamos un anuncio público a Blink dev anunciando nuestra intención de añadir o eliminar una característica. Entonces nos ponemos en marcha y lo codificamos. Y luego, al día siguiente de que la característica se registre, ya está allí enviando en nuestras construcciones de Canarias. Esta función está desactivada por defecto, pero puedes activarla utilizando about:flags.
En chromestatus.com puedes ver las características en las que hemos trabajado, las que hemos enviado y las que tenemos previsto eliminar. También puedes consultar el blog Chromium Releases, que tiene enlaces a los errores y a nuestro panel de seguimiento.
Android WebView ha sido un gran desafío – pero HTML5Test muestra que las cosas están mejorando. Estamos mucho más cerca del escritorio en términos de tener un conjunto de APIs de plataforma web en todas partes (¡el audio web es un gran ejemplo de esto!)