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

Post on 12-Apr-2017

33 views 1 download

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

Как готовить свой 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. Правильно подбирайте инструменты для экономии времени.

Вопросы