SlideShare a Scribd company logo
1 of 21
Download to read offline
Как готовить свой 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 - Omaha
https://github.com/google/omaha
2. Самый популярный клиент для MacOS - Sparkle
https://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 integration
Google использует buildbot.net
И мы тоже, только по-своему
C4.4xlarge EC2 instance собирает Chromium за 1,5 часа
Чем Chromium отличается от другого проекта?
● code style guides и best practices
● 600 коммитов в Chromium еженедельно - это вам не шутка!
● Вы теперь часть огромного open-source сообщества ;)
Итог
1. Анализируйте и планируйте.
2. С С++ можно жить, а не выживать.
3. Правильно подбирайте инструменты для экономии времени.
Вопросы

More Related Content

More from Омские ИТ-субботники

2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
Омские ИТ-субботники
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
Омские ИТ-субботники
 

More from Омские ИТ-субботники (20)

2017-02-04 02 Яков Лило. Решение задач
2017-02-04 02 Яков Лило. Решение задач2017-02-04 02 Яков Лило. Решение задач
2017-02-04 02 Яков Лило. Решение задач
 
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
 
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
 
2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке
 
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
 
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность 2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
 
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
 
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
 
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
 
2016-09-17 03 Василий Полозов. WebRTC
2016-09-17 03 Василий Полозов. WebRTC2016-09-17 03 Василий Полозов. WebRTC
2016-09-17 03 Василий Полозов. WebRTC
 
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
 
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
 
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
 
2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS
2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS
2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS
 
2016-08-20 03 Сергей Горбачев. Planning poker в Scrum
2016-08-20 03 Сергей Горбачев. Planning poker в Scrum2016-08-20 03 Сергей Горбачев. Planning poker в Scrum
2016-08-20 03 Сергей Горбачев. Planning poker в Scrum
 
2016 06-11 Елена Гальцина. Дизайнер и разработчик. От неловких встреч к долго...
2016 06-11 Елена Гальцина. Дизайнер и разработчик. От неловких встреч к долго...2016 06-11 Елена Гальцина. Дизайнер и разработчик. От неловких встреч к долго...
2016 06-11 Елена Гальцина. Дизайнер и разработчик. От неловких встреч к долго...
 
2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...
2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...
2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...
 
2016 06-11 Дмитрий Алексеенков. Android Data Binding
2016 06-11 Дмитрий Алексеенков. Android Data Binding2016 06-11 Дмитрий Алексеенков. Android Data Binding
2016 06-11 Дмитрий Алексеенков. Android Data Binding
 

2017-04-08 02 Кирилл Яковенко. Как готовить свой Chrome

  • 1. Как готовить свой Chrome? Яковенко Кирилл Менеджер проектов
  • 2. Что представляет из себя проект Chrome? chromium.org Chromium Chromium OS Chrome Chrome OS
  • 3. Принципиальные различия Chromium от Chrome ● Отсутствие синхронизации данных ● Нет автоматических обновлений ● Нет поддержки, не отправляет crashes и нет возможности сообщить об ошибке ● Есть проблемы с проигрыванием видео и аудио ● Отсутствуют некоторые «супер» функции Chrome
  • 4. Chrome сторонние сервисы Свой Chrome = Chromium, напильник, добавляем собственную реализацию и стараемся не выстрелить себе в ногу. Chromium проприетарные библиотеки = + +
  • 5. Challenge #1. План - это наше все! 0. Золотая идея. 1. Платформы 2. Что еще? ○ Синхронизация данных ○ Автоматические обновления ○ Видео & Аудио ○ Chromecast ○ ...
  • 6. Учитывайте желания вашей аудитории Пользователь Разработчик
  • 7. 1. Купить их! Некоторые фичи используют Google APIs: chromium.org/developers/how-tos/api-keys 2. True путь – сделай сам! Это совершенно не страшно и мы сделали это! Два пути получить недостающие компоненты:
  • 8. Что есть на рынке: 1. Доставка обновлений через магазины 2. Готовые платформы Нужны автообновления?
  • 9. Собственные автообновления 1. Windows клиент разработанный Google - Omaha https://github.com/google/omaha 2. Самый популярный клиент для MacOS - Sparkle https://sparkle-project.org/ 3. Omaha-server - open-source платформа управления. https://github.com/Crystalnix/omaha-server
  • 11. Challenge #2. Стек технологий ● C++ ● JavaScript / Html / Css ● Python ● Objective-C ● Java
  • 12. С одной стороны: ● Ручное управление памятью ● Особенности использования исключений ● … C++ — это не так сложно, как выглядит С другой Google диктует свои правила Chromium coding style и Google C++ Style Guide И не забываем про unit-tests.
  • 13. Новый стандарт C++ chromium-cpp.appspot.com Whitelist: ● auto ● [captures](params) -> ret { body } ● for (type var : range) ● ... Blacklist: ● long long ● std::shared_ptr ● ...
  • 14. Но свой Chrome – это не поход в магазин
  • 15. 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 часа, Карл!
  • 17. И мы тоже, только по-своему
  • 18. C4.4xlarge EC2 instance собирает Chromium за 1,5 часа
  • 19. Чем Chromium отличается от другого проекта? ● code style guides и best practices ● 600 коммитов в Chromium еженедельно - это вам не шутка! ● Вы теперь часть огромного open-source сообщества ;)
  • 20. Итог 1. Анализируйте и планируйте. 2. С С++ можно жить, а не выживать. 3. Правильно подбирайте инструменты для экономии времени.