Upload
-
View
33
Download
1
Embed Size (px)
Citation preview
Как готовить свой Chrome?
Яковенко КириллМенеджер проектов
Что представляет из себя проект Chrome?
chromium.org
Chromium
Chromium OS
Chrome
Chrome OS
Принципиальные различия Chromium от Chrome
● Отсутствие синхронизации данных
● Нет автоматических обновлений
● Нет поддержки, не отправляет crashes и нет возможности сообщить об ошибке
● Есть проблемы с проигрыванием видео и аудио
● Отсутствуют некоторые «супер» функции Chrome
Chrome
сторонние сервисы
Свой Chrome = Chromium, напильник, добавляем собственную реализацию и стараемся не выстрелить себе в ногу.
Chromium
проприетарные библиотеки
=++
Challenge #1. План - это наше все!0. Золотая идея.
1. Платформы
2. Что еще?
○ Синхронизация данных
○ Автоматические обновления
○ Видео & Аудио
○ Chromecast
○ ...
Учитывайте желания вашей аудитории
Пользователь Разработчик
1. Купить их!Некоторые фичи используют Google APIs:chromium.org/developers/how-tos/api-keys
2. True путь – сделай сам! Это совершенно не страшно и мы сделали это!
Два пути получить недостающие компоненты:
Что есть на рынке:
1. Доставка обновлений через магазины
2. Готовые платформы
Нужны автообновления?
Собственные автообновления
1. Windows клиент разработанный Google - Omahahttps://github.com/google/omaha
2. Самый популярный клиент для MacOS - Sparklehttps://sparkle-project.org/
3. Omaha-server - open-source платформа управления.https://github.com/Crystalnix/omaha-server
Результаты open-source
Challenge #2. Стек технологий
● C++
● JavaScript / Html / Css
● Python
● Objective-C
● Java
С одной стороны:
● Ручное управление памятью
● Особенности использования исключений
● …
C++ — это не так сложно, как выглядит
С другой Google диктует свои правила
Chromium coding style и Google C++ Style Guide
И не забываем про unit-tests.
Новый стандарт C++
chromium-cpp.appspot.com
Whitelist:
● auto● [captures](params) -> ret { body }● for (type var : range)● ...
Blacklist:
● long long ● std::shared_ptr● ...
Но свой Chrome – это не поход в магазин
Challenge #3. Ад компиляции
Ядро Chromium состоит из ~ 30 000 компилируемых файлов.
Chromium + сторонние библиотеки ~ 57 000 файлов.
Mac OS Chromium без unit-test’ов:
3.41 GHz 6-Core Intel Xeon E5, 500 GB SSD ~ 4,5 часа, Карл!
Continuous integrationGoogle использует buildbot.net
И мы тоже, только по-своему
C4.4xlarge EC2 instance собирает Chromium за 1,5 часа
Чем Chromium отличается от другого проекта?
● code style guides и best practices
● 600 коммитов в Chromium еженедельно - это вам не шутка!
● Вы теперь часть огромного open-source сообщества ;)
Итог
1. Анализируйте и планируйте.
2. С С++ можно жить, а не выживать.
3. Правильно подбирайте инструменты для экономии времени.
Вопросы