Chromium es un proyecto de navegador web gratuito y de código abierto , desarrollado y mantenido principalmente por Google . [8] Es una base de código ampliamente utilizada , que proporciona la gran mayoría del código para Google Chrome y muchos otros navegadores, incluidos Microsoft Edge , Samsung Internet y Opera . El código también es utilizado por varios marcos de aplicaciones .
Chromium es un proyecto de software gratuito y de código abierto . La parte creada por Google se comparte bajo la licencia BSD de 3 cláusulas . [6] Las dependencias de terceros están sujetas a una variedad de licencias, incluidas MIT , LGPL , Ms-PL y una triple licencia MPL / GPL / LGPL . [7]
Esta licencia permite a cualquier parte crear el código base y compartir el ejecutable del navegador resultante con el nombre y el logotipo de Chromium. Por eso, muchas distribuciones de Linux hacen esto, así como FreeBSD y OpenBSD . [9]
Chromium proporciona la gran mayoría del código fuente de Google Chrome , pero existen diferencias importantes.
Chromium carece de las siguientes características de Chrome: [9]
Google eligió por primera vez el nombre "Chrome" para su navegador. [11] Luego, la versión de código abierto se denominó "Chromium" porque el cromo metálico se utiliza para fabricar cromado . [1]
Si bien Chrome tiene la misma funcionalidad de interfaz de usuario que Chromium, cambia la combinación de colores a la de la marca Google. A diferencia de Chromium, Chrome no es de código abierto, por lo que sus archivos binarios tienen licencia como software gratuito según los Términos de servicio de Google Chrome . [12]
El código base del navegador Chromium contiene alrededor de 31 millones de líneas de código fuente , excluyendo comentarios y líneas en blanco . [3]
Chromium ha sido un proyecto de Google desde sus inicios, [1] [8] y los empleados de Google han realizado la mayor parte del trabajo de desarrollo . [13]
Google se refiere a este proyecto y a la rama ChromiumOS como "los proyectos Chromium", [2] y sus empleados utilizan direcciones de correo electrónico @chromium.org para este trabajo de desarrollo. Sin embargo, en términos de gobernanza, los proyectos Chromium no son entidades independientes; Google mantiene un firme control sobre ellos. [8]
El código base del navegador Chromium se utiliza ampliamente, por lo que otros han hecho contribuciones importantes, en particular Microsoft , Igalia , Yandex , Intel , Samsung , LG , Opera , Vivaldi y Brave . [13] [8] Algunos empleados de estas empresas también tienen direcciones de correo electrónico @chromium.org.
Google diseñó el primer navegador multiproceso . [14] [15] En comparación con los diseños de proceso único, esta arquitectura tiene una mejor capacidad de respuesta con muchas pestañas del navegador abiertas y beneficios de seguridad del aislamiento de procesos , pero con la contrapartida de un mayor uso de memoria. [16] [17] Esto luego se perfeccionó como aislamiento de sitios web por proceso, lo que proporciona seguridad adicional. [dieciséis]
Otra decisión de diseño importante fue que la interfaz de usuario del navegador fuera minimalista . [15] [18] [19]
El motor del navegador se basó originalmente en WebKit de Apple , que Google consideró la "elección obvia" de las opciones disponibles. [20] Sin embargo, el novedoso diseño multiproceso de Google requirió cambios en el motor. Esta divergencia con la versión de Apple aumentó con el tiempo, por lo que en 2013 Google bifurcó oficialmente su versión como motor Blink . [20] [21]
C++ es el lenguaje principal y comprende más de la mitad del código base. [3] Esto incluye los motores Blink y V8 , la implementación de HTTP y otros protocolos , el sistema de almacenamiento en caché interno , la extensión API y la mayor parte de la interfaz de usuario . [22]
El resto de la interfaz de usuario, denominada WebUI, se implementa en HTML , CSS y JavaScript (normalmente mediante transpilación de TypeScript ). [22] [4] También está escrita una extensa colección de pruebas de plataformas web en estos lenguajes además de XML . [5] [3]
Las bibliotecas de terceros que brindan funcionalidad esencial, [23] como SQLite y numerosos códecs , están escritas en C , C++ o, a partir de 2023, [24] [25] el lenguaje Rust más nuevo. [3]
El soporte para sistemas operativos móviles requiere lenguajes especiales: para Android tanto Java como Kotlin , y para iOS tanto Objective-C como Swift . [4] [3]
Python es el lenguaje principal del sistema de compilación, [3] que también tiene archivos de configuración especiales para la herramienta GN de Google. [26]
El sistema de seguimiento de errores es un sitio web de acceso público. [27] Los participantes se identifican por sus direcciones de correo electrónico .
El sistema de integración continua Chromium crea y prueba automáticamente el código base varias veces al día. [28]
Las compilaciones se identifican mediante un número de versión de cuatro partes : mayor.menor.construcción.patch. [29] Este esquema de versiones y los puntos de ramificación que ocurren cada seis o siete semanas provienen de Google Chrome y su ciclo de desarrollo . [30]
Google Chrome debutó en septiembre de 2008 y, junto con su lanzamiento, el código fuente de Chromium también estuvo disponible, lo que permitió construir compilaciones a partir de él. [1] [31] [32]
Tras su lanzamiento, Chrome fue criticado por almacenar las contraseñas de un usuario sin la protección de una contraseña maestra. Google ha insistido en que una contraseña maestra no proporciona seguridad real contra piratas informáticos expertos , pero los usuarios argumentaron que protegería contra compañeros de trabajo o familiares que toman prestada una computadora y pueden ver las contraseñas almacenadas como texto sin formato . [33] En diciembre de 2009, el desarrollador de Chromium, P. Kasting, declaró: "Una contraseña maestra era el problema 1397. Ese problema está cerrado. No implementaremos una contraseña maestra. Ni ahora ni nunca. Argumentar a favor de ello no hará que suceda "A un grupo de personas le gustaría" no hará que esto suceda. Nuestras decisiones de diseño no son democráticas. No siempre puedes tener lo que quieres". [34]
La versión 3 fue la primera alfa disponible para Linux . Chromium pronto incorporó temas nativos para Linux, utilizando el kit de herramientas GTK+ para permitirle adaptarse al entorno de escritorio GNOME . [35] [36] [37] [38] La versión 3 también introdujo optimizaciones del motor JavaScript y temas seleccionables por el usuario. [39]
La versión 6 introdujo características para el minimalismo de la interfaz de usuario , ya que uno de los objetivos de Google era hacer que el navegador "se sintiera liviano (cognitiva y físicamente) y rápido". [19] Los cambios fueron un menú de herramientas unificado, sin botón de inicio de forma predeterminada (aunque configurable por el usuario), un botón combinado de recarga/detención y la barra de marcadores desactivada de forma predeterminada. También introdujo un lector de PDF integrado , compatibilidad con WebM y VP8 para usar con video HTML5 y una barra de URL más inteligente . [40] [41]
La versión 7 aumentó el rendimiento de HTML5 al doble que el de las versiones anteriores mediante aceleración de hardware . [42] [43] [44]
La versión 8 se centró en una integración mejorada en ChromeOS y funciones mejoradas en la nube . Estas incluyen aplicaciones web en segundo plano , host remoto (que permite a los usuarios controlar de forma centralizada las funciones y configuraciones en otras computadoras) e impresión en la nube. [44]
La versión 9 introdujo una serie de funciones, incluida una función de barra de URL para exponer ataques de phishing y zona de pruebas para el complemento Adobe Flash . Otras adiciones fueron la biblioteca WebGL y el acceso a la nueva Chrome Web Store . [45] [46] [47]
En febrero, Google anunció que estaba considerando cambios a gran escala en la interfaz de usuario (UI), incluida la eliminación al menos parcial de la barra de URL , que había sido un pilar de los navegadores desde los primeros años de la Web . La interfaz de usuario propuesta iba a ser una consolidación de la fila de pestañas y la fila de botones de navegación, el menú y la barra de URL en una sola fila. La justificación fue liberar más espacio en pantalla para el contenido de la página web . Google reconoció que esto daría como resultado que las URL no siempre fueran visibles para el usuario, que los controles y menús de navegación podrían perder su contexto y que la única línea resultante podría estar bastante abarrotada. [49] Sin embargo, en agosto, Google decidió que estos cambios eran demasiado arriesgados y descartó la idea. [50]
En marzo, Google anunció otras direcciones para el proyecto. Las prioridades de desarrollo se centraron en reducir el tamaño del ejecutable , integrar aplicaciones y complementos web , computación en la nube y soporte de interfaz táctil . [51] [52] Por lo tanto, se introdujo un botón de múltiples perfiles en la interfaz de usuario, lo que permite a los usuarios iniciar sesión en múltiples cuentas de Google y otras cuentas en la misma instancia del navegador. Otras adiciones fueron la detección de malware y la compatibilidad con transformaciones CSS aceleradas por hardware . [53] [54]
En mayo, ya se estaban notando los resultados de los intentos de Google de reducir el tamaño de los archivos de Chromium. Gran parte del trabajo inicial en esta área se concentró en reducir el tamaño de WebKit , el redimensionador de imágenes y el sistema de compilación de Android . [55] El trabajo posterior introdujo una versión móvil más compacta que redujo el espacio vertical de la interfaz de usuario. [56] [57]
Otros cambios en 2011 fueron la aceleración de GPU en todas las páginas, agregando soporte para la nueva Web Audio API y Google Native Client (NaCl), que permite que el código nativo proporcionado por terceros como binarios neutrales para la plataforma se ejecute de forma segura dentro del navegador. [58] [59] La biblioteca de gráficos Skia de Google también estuvo disponible para todas las versiones de Chromium. [60] [61]
El servicio de sincronización agregado para Google Chrome en 2012 también podría usarse en las compilaciones de Chromium. [62] [63] El mismo año, se agregó una nueva API para comunicación de audio y video de alta calidad, lo que permite que las aplicaciones web accedan a la cámara web y al micrófono del usuario después de pedir permiso para hacerlo. [64] [65] Luego se agregó decodificación de video acelerada por GPU para Windows y soporte para el protocolo QUIC . [66] [67]
En 2013, el motor de renderizado WebKit modificado de Chromium se bifurcó oficialmente como motor Blink . [20] [21]
Otros cambios en 2013 fueron la capacidad de restablecer perfiles de usuario y nuevas API de extensión del navegador . [68] También se agregaron indicadores de pestañas para el uso de audio y cámara web, al igual que el bloqueo automático de archivos detectados como malware . [69]
La versión 67 agregó el beneficio de seguridad del aislamiento del sitio web por proceso . [16] Luego, la versión 69 introdujo un nuevo tema de navegador, como parte del décimo aniversario de Google Chrome. [70] El mismo año, se agregaron nuevas medidas para limitar la publicidad abusiva. [71]
Desde 2021, las compilaciones de Chromium ya no pueden utilizar el servicio de sincronización de Google Chrome. [72] [10]
A partir de la versión 110, solo se admite Windows 10 y versiones posteriores para los usuarios de Windows. [73]
Además de Google Chrome , muchos otros navegadores desarrollados activamente se basan en el código Chromium.
Principalmente no inglés
Estos notables marcos de aplicaciones incorporan un navegador Chromium como núcleo funcional de las aplicaciones personalizadas :
Los dos componentes destacados de WebView basados en Chromium también proporcionan una forma similar de crear aplicaciones:
Con cualquiera de los enfoques, la aplicación personalizada se implementa con HTML , CSS , JavaScript y otras tecnologías web. Además, la aplicación se puede implementar fácilmente en los sistemas operativos compatibles con Chromium. Desde la década de 2010, muchas aplicaciones se han creado de esta manera. (Dos ejemplos son Spotify y Slack ). [77] [78]
Chrome fue el primer navegador con arquitectura multiproceso.
Aquí están las fuentes del excelente Chromium Embedded Framework que utiliza el cliente de escritorio Spotify.