Chromium — это бесплатный и открытый проект веб-браузера , в первую очередь разработанный и поддерживаемый Google . [3] Это широко используемая кодовая база , предоставляющая большую часть кода для Google Chrome и многих других браузеров, включая Microsoft Edge , Samsung Internet и Opera . Код также используется несколькими фреймворками приложений .
Chromium — это бесплатный и открытый программный проект. Часть, созданная Google, распространяется по лицензии BSD с тремя пунктами . [8] Зависимости третьих лиц подпадают под действие различных лицензий, включая MIT , LGPL , Ms-PL и тройную лицензию MPL / GPL / LGPL . [9]
Это лицензирование позволяет любой стороне создавать кодовую базу и делиться полученным исполняемым файлом браузера с именем и логотипом Chromium. Таким образом, многие дистрибутивы Linux делают это, а также FreeBSD и OpenBSD . [10]
Chromium предоставляет большую часть исходного кода для Google Chrome , но есть и важные различия.
В Chromium отсутствуют следующие функции Chrome : [10]
Google сначала выбрал название «Chrome» для своего браузера. [12] [13] Затем версия с открытым исходным кодом была названа «Chromium», поскольку металл хром используется для хромирования . [1]
Chrome имеет ту же функциональность пользовательского интерфейса , что и Chromium, но с фирменной цветовой схемой Google. В отличие от Chromium, Chrome не является программным обеспечением с открытым исходным кодом; его двоичные файлы лицензируются как бесплатное программное обеспечение в соответствии с Условиями обслуживания Google Chrome. [14]
Кодовая база браузера Chromium содержит более 32 миллионов исходных строк кода , не считая комментариев и пустых строк . [4]
Chromium был проектом Google с момента его создания, [1] [3] и сотрудники Google выполнили большую часть работы по разработке . [15]
Google называет этот проект и ответвление ChromiumOS «проектами Chromium» [2], а его сотрудники используют адреса электронной почты @chromium.org для этой разработки. Однако с точки зрения управления проекты Chromium не являются независимыми организациями; Google сохраняет за собой полный контроль над ними. [3]
Кодовая база браузера Chromium широко используется, поэтому другие компании внесли важный вклад, в частности Microsoft , Igalia , Yandex , Intel , Samsung , LG , Opera , Vivaldi и Brave . [15] [3] Некоторые сотрудники этих компаний также имеют адреса электронной почты @chromium.org.
Google разработала первый многопроцессный браузер . [16] [17] По сравнению с однопроцессными проектами эта архитектура обеспечивает лучшую отзывчивость при открытии большого количества вкладок браузера и преимущества безопасности изоляции процессов , но с компромиссом в виде более высокого использования памяти. [18] [19] Позднее это было усовершенствовано как изоляция веб-сайта на уровне процессов, что обеспечивает дополнительную безопасность. [18]
Другим важным дизайнерским решением было сделать пользовательский интерфейс браузера минималистичным . [17] [20] [21]
Первоначально браузерный движок был основан на WebKit от Apple , который Google посчитал «очевидным выбором» из доступных вариантов. [22] Однако новый многопроцессный дизайн Google потребовал изменений движка. Это расхождение с версией Apple со временем увеличивалось, поэтому в 2013 году Google официально разветвил свою версию как движок Blink . [22] [23]
C++ является основным языком , охватывающим более половины кодовой базы. [4] Сюда входят движки Blink и V8 , реализация HTTP и других протоколов , внутренняя система кэширования , API расширений и большая часть пользовательского интерфейса . [24]
Остальная часть пользовательского интерфейса, называемая WebUI, реализована на HTML , CSS и JavaScript (обычно с помощью транспиляции TypeScript ). [24] [5] Обширная коллекция тестов веб-платформы также написана на этих языках и XML . [6] [4]
Сторонние библиотеки , которые предоставляют необходимую функциональность, [25] такие как SQLite и многочисленные кодеки , написаны на C , C++ или, начиная с 2023 года, [26] [27] на более новом языке Rust . [4]
Поддержка мобильных операционных систем требует специальных языков: для Android — Java и Kotlin , а для iOS — Objective-C и Swift . [5] [4]
Python является основным языком системы сборки [4] , которая также имеет специальные файлы конфигурации для инструмента GN от Google. [28]
Система отслеживания ошибок — это общедоступный веб-сайт. [29] Участники идентифицируются по адресам электронной почты .
Система непрерывной интеграции Chromium автоматически создает и тестирует кодовую базу несколько раз в день. [30]
Сборки идентифицируются по четырехкомпонентному номеру версии : major.minor.build.patch. [31] Эта схема управления версиями и точки ветвления , которые появляются каждые шесть-семь недель, взяты из Google Chrome и его цикла разработки . [32]
Google Chrome дебютировал в сентябре 2008 года, и вместе с его выпуском стал доступен исходный код Chromium, что позволило создавать на его основе сборки. [1] [33] [34]
После выпуска Chrome подвергся критике за хранение паролей пользователя без защиты мастер-пароля. Google настаивал на том, что мастер-пароль не обеспечивает реальной защиты от знающих хакеров , но пользователи утверждали, что он защитит от коллег или членов семьи, которые одолжат компьютер и смогут просмотреть сохраненные пароли в виде открытого текста . [35] В декабре 2009 года разработчик Chromium П. Кастинг заявил: «Мастер-пароль был проблемой 1397. Эта проблема закрыта. Мы не будем внедрять мастер-пароль. Ни сейчас, ни когда-либо. Спорить об этом не заставит этого произойти. «Группа людей хотела бы этого» не заставит этого произойти. Наши решения по проектированию недемократичны. Вы не всегда можете иметь то, что хотите». [36]
Версия 3 была первой альфа-версией , доступной для Linux . Вскоре Chromium включил собственную тему для Linux, используя набор инструментов GTK+ , чтобы вписаться в среду рабочего стола GNOME . [37] [38] [39] [40] Версия 3 также представила оптимизацию движка JavaScript и выбираемые пользователем темы. [41]
Версия 6 представила функции для минимализма пользовательского интерфейса , поскольку одной из целей Google было сделать браузер «ощущающимся легким (когнитивно и физически) и быстрым». [21] Изменения включали унифицированное меню инструментов, отсутствие кнопки «Домой» по умолчанию (хотя пользователь может ее настраивать), комбинированную кнопку перезагрузки/остановки и отключенную по умолчанию панель закладок. Также был представлен интегрированный PDF- ридер, поддержка WebM и VP8 для использования с HTML-видео и более умная строка URL . [42] [43]
Версия 7 увеличила производительность вдвое по сравнению с предыдущими версиями за счет аппаратного ускорения . [44] [45] [46]
Версия 8 была сосредоточена на улучшенной интеграции в ChromeOS и улучшенных облачных функциях. К ним относятся фоновые веб-приложения , удаленное управление хостом (позволяющее пользователям централизованно управлять функциями и настройками на других компьютерах) и облачная печать. [46]
Версия 9 представила ряд функций, включая функцию URL-бара для разоблачения фишинговых атак и песочницу для плагина Adobe Flash . Другими дополнениями стали библиотека WebGL и доступ к новому Chrome Web Store . [47] [48] [49]
В феврале Google объявила, что рассматривает масштабные изменения пользовательского интерфейса (UI), включая по крайней мере частичное устранение строки URL , которая была основой браузеров с первых лет существования Интернета . Предлагаемый UI должен был представлять собой объединение ряда вкладок и ряда кнопок навигации, меню и строки URL в один ряд. Обоснованием было освобождение большего пространства на экране для содержимого веб-страницы . Google признала, что это приведет к тому, что URL-адреса не всегда будут видны пользователю, что элементы управления навигацией и меню могут потерять свой контекст, и что полученная в результате одна строка может быть довольно переполнена. [51] Однако к августу Google решила, что эти изменения слишком рискованны, и отложила идею. [52]
В марте Google объявила о других направлениях проекта. Приоритеты разработки были сосредоточены на уменьшении размера исполняемого файла , интеграции веб-приложений и подключаемых модулей , облачных вычислениях и поддержке сенсорного интерфейса. [53] [54] Таким образом, в пользовательский интерфейс была введена кнопка многопрофильного доступа, позволяющая пользователям входить в несколько учетных записей Google и других служб в одном и том же экземпляре браузера. Другими дополнениями стали обнаружение вредоносных программ и поддержка аппаратно-ускоренных преобразований CSS . [55] [56]
К маю результаты попыток Google уменьшить размер файла Chromium уже были отмечены. Большая часть ранних работ в этой области была сосредоточена на уменьшении размера WebKit , средства изменения размера изображений и системы сборки Android . [57] Последующие работы представили более компактную мобильную версию, которая уменьшила вертикальное пространство пользовательского интерфейса. [58] [59]
Другие изменения в 2011 году включали ускорение графического процессора на всех страницах, добавление поддержки нового API веб-аудио и Google Native Client (NaCl), который позволяет безопасно выполнять собственный код, предоставленный третьими лицами в виде платформенно-нейтральных двоичных файлов, в самом браузере. [60] [61] Графическая библиотека Skia от Google также стала доступна для всех версий Chromium. [62] [63]
Служба синхронизации, добавленная для Google Chrome в 2012 году, также могла использоваться сборками Chromium. [64] [65] В том же году был добавлен новый API для высококачественной видео- и аудиосвязи, позволяющий веб-приложениям получать доступ к веб-камере и микрофону пользователя после запроса на это разрешения. [66] [67] Затем были добавлены ускоренное декодирование видео для Windows и поддержка протокола QUIC . [68] [69]
В 2013 году модифицированный движок рендеринга WebKit от Chromium был официально разделен на движок Blink . [22] [23]
Другие изменения в 2013 году включали возможность сброса профилей пользователей и новые API-интерфейсы расширений браузера . [70] Также были добавлены индикаторы вкладок для аудио и использования веб-камеры, а также автоматическая блокировка файлов, определенных как вредоносное ПО . [71]
В версии 67 было добавлено преимущество безопасности в виде изоляции веб-сайта на уровне процесса . [18] Затем в версии 69 была представлена новая тема браузера в рамках десятой годовщины Google Chrome. [72] В том же году были добавлены новые меры по ограничению оскорбительной рекламы. [73]
С 2021 года служба синхронизации Google Chrome больше не может использоваться сборками Chromium. [74] [11]
Начиная с версии 110, для пользователей Windows поддерживаются только Windows 10 и более поздние версии. [75]
В дополнение к Google Chrome , многие другие активно разрабатываемые браузеры основаны на коде Chromium. Большинство из них являются проприетарными , как Chrome, но некоторые остаются FOSS , как Chromium. [76] [77] [78] [79]
В основном неанглийский
Эти известные фреймворки приложений встраивают браузер Chromium в качестве функционального ядра пользовательских приложений :
Два известных компонента WebView на базе Chromium также предоставляют схожий способ создания приложений:
При любом подходе пользовательское приложение реализуется с помощью HTML , CSS , JavaScript и других веб-технологий. Более того, приложение можно легко развернуть на операционных системах, поддерживаемых Chromium. С 2010-х годов многие приложения были созданы таким образом. (Два примера — Spotify и Slack .) [83] [84]
Из-за ограничений платформы iOS все браузеры должны быть построены на основе движка рендеринга WebKit.
, когда мы создавали Chrome, мы минимизировали все, что связано с Chrome, чтобы все, на что вы тратили время, было на веб-сайте, который вас интересовал в данный момент. Мы хотели, чтобы пользователи сосредоточились на контенте, который они использовали. Причина, по которой продукт был назван «Chrome», заключалась в том, что мы хотели минимизировать хром браузера. Вот как мы думали об этом.
был первым браузером с многопроцессной архитектурой.
Вот исходники великолепного Chromium Embedded Framework, который используется клиентом Spotify Desktop.