21
Как готовить свой Chrome? Яковенко Кирилл Менеджер проектов

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

  • Upload
    -

  • View
    33

  • Download
    1

Embed Size (px)

Citation preview

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

Как готовить свой Chrome?

Яковенко КириллМенеджер проектов

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

Что представляет из себя проект Chrome?

chromium.org

Chromium

Chromium OS

Chrome

Chrome OS

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

Принципиальные различия Chromium от Chrome

● Отсутствие синхронизации данных

● Нет автоматических обновлений

● Нет поддержки, не отправляет crashes и нет возможности сообщить об ошибке

● Есть проблемы с проигрыванием видео и аудио

● Отсутствуют некоторые «супер» функции Chrome

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

Chrome

сторонние сервисы

Свой Chrome = Chromium, напильник, добавляем собственную реализацию и стараемся не выстрелить себе в ногу.

Chromium

проприетарные библиотеки

=++

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

Challenge #1. План - это наше все!0. Золотая идея.

1. Платформы

2. Что еще?

○ Синхронизация данных

○ Автоматические обновления

○ Видео & Аудио

○ Chromecast

○ ...

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

Учитывайте желания вашей аудитории

Пользователь Разработчик

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

1. Купить их!Некоторые фичи используют Google APIs:chromium.org/developers/how-tos/api-keys

2. True путь – сделай сам! Это совершенно не страшно и мы сделали это!

Два пути получить недостающие компоненты:

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

Что есть на рынке:

1. Доставка обновлений через магазины

2. Готовые платформы

Нужны автообновления?

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

Собственные автообновления

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

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

Результаты open-source

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

Challenge #2. Стек технологий

● C++

● JavaScript / Html / Css

● Python

● Objective-C

● Java

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

С одной стороны:

● Ручное управление памятью

● Особенности использования исключений

● …

C++ — это не так сложно, как выглядит

С другой Google диктует свои правила

Chromium coding style и Google C++ Style Guide

И не забываем про unit-tests.

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

Новый стандарт C++

chromium-cpp.appspot.com

Whitelist:

● auto● [captures](params) -> ret { body }● for (type var : range)● ...

Blacklist:

● long long ● std::shared_ptr● ...

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

Но свой Chrome – это не поход в магазин

Page 15: 2017-04-08 02 Кирилл Яковенко. Как готовить свой 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 часа, Карл!

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

Continuous integrationGoogle использует buildbot.net

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

И мы тоже, только по-своему

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

C4.4xlarge EC2 instance собирает Chromium за 1,5 часа

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

Чем Chromium отличается от другого проекта?

● code style guides и best practices

● 600 коммитов в Chromium еженедельно - это вам не шутка!

● Вы теперь часть огромного open-source сообщества ;)

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

Итог

1. Анализируйте и планируйте.

2. С С++ можно жить, а не выживать.

3. Правильно подбирайте инструменты для экономии времени.

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

Вопросы