Что скрывается за звёздами на GitHub: как команды Яндекса выкладывают проекты в опенсорс
9 ноября 2023
Когда команда выкладывает код в открытый доступ, то в основном рассказывает, зачем нужен продукт и как им воспользоваться. Внутренние процессы обычно остаются за кадром, поэтому сложно представить, какой объём работы выполнили разработчики, чтобы опубликовать код.

Собираем все наши опенсорс-продукты на сайте Yandex Open Source. А здесь разработчики рассказывают, как публиковали YDB, DivKit и userver.

Посмотреть и откликнуться на вакансии
Наступает момент, когда хочется поделиться своим продуктом, и компания помогает реализовать эту идею

Андрей Фомичев: «Убедились, что внутренний продукт будет полезен и интересен аудитории, и открыли к нему доступ»

Яндекс начал разрабатывать YDB в 2014 году: количество сервисов росло, объёмы данных увеличивались, и нужно было решать проблемы масштабируемости и отказоустойчивости. Система развивалась, росла, и в какой-то момент стало понятно, что с её помощью свои задачи могут решать разные компании в мире.
YDB — система управления базами данных, одна из ключевых частей инфраструктуры всего Яндекса
Технология помогает создавать масштабируемые отказоустойчивые сервисы, которые выдерживают большую операционную нагрузку. В настоящее время система также развивается в сторону поддержки аналитических сценариев.

Подробнее о YDB можно узнать на странице системы и на Хабре, а посмотреть исходники на GitHub.

Выйти в опенсорс было моей инициативой, потому что я почувствовал, что это будет следующим этапом развития YDB. В современном мире люди распробовали опенсорс: Linux, nginx и PostgreSQL — без этих продуктов сложно представить современный интернет.

Почему для YDB выход в опенсорс был так важен? 20–30 лет назад ещё можно было эффективно развивать СУБД с закрытым исходным кодом, просто продавая лицензии, как поступали Oracle, Microsoft и IBM. Сейчас это совершенно невозможно: CTO любой компании в первую очередь смотрит на доступные открытые системы. В результате я бы сказал, что современные и популярные решения в области баз данных попадают в одну из следующих категорий:

  • опенсорс или доступный код (source available);
  • проприетарное решение от большого облачного вендора.
На мой взгляд, стоит брать лучшее из обеих категорий. YDB стал доступен миру сначала как управляемый сервис в Yandex Cloud. Оставался второй шаг — открыть исходный код YDB. Наше руководство прислушалось к вышеприведённым аргументам, потому что тоже хотело, чтобы YDB вырос в большой проект.
Оля Ким: «Люди интересовались DivKit, но без опенсорса попробовать его в деле никто не мог»
Первая версия DivKit была сильно заточена под мобильное приложение Яндекса. Она плохо масштабировалась даже внутри компании: параметры текста, изображений и других встроенных элементов нельзя было менять. Поэтому во второй версии мы решили сделать систему, которую можно настраивать гибко.
DivKit — фреймворк для отрисовки интерфейсов для Android, iOS и веба
Его главный плюс в том, что обновлять экраны можно с сервера. Бизнесу не надо ждать, когда пользователь скачает новую версию приложения в сторе. А это сокращает time-to-market.

Ознакомиться с DivKit можно на странице фреймворка, почитать историю создания — на Хабре, а посмотреть исходники — на GitHub.

Разработка второй версии фреймворка заняла больше полугода. Мы долго запускались: сначала внутри приложения Яндекса, а потом среди других сервисов компании. Потихоньку стали рассказывать о DivKit на конференциях. И когда пошли вопросы, как этим воспользоваться, стало ясно: пора выкладывать код в открытый доступ.

Дима Судаков: «Когда поняли, что сделали хороший инструмент, решили им поделиться»

Разработкой userver занимается команда общих компонент технологической платформы бизнес-группы e-com и райдтеха. Я пришёл в неё в 2021 году, а где-то через полгода мы закрывали финальные вопросы перед выходом в опенсорс. Антон Полухин, руководитель группы, давно рассказывал в своих статьях о фреймворке, и многие разработчики хотели посмотреть и поработать с userver.

Руководители поддержали нас и сказали готовить проект. Пару раз, правда, пришлось его доработать, прежде чем получить окончательное ОК. Но оно того стоило.

userver — фреймворк, который помогает создавать высоконагруженные приложения на C++
Разработку протестировали команды Яндекс Go, Лавки, Доставки и других сервисов компании, а её исходный код и документация лежат на GitHub.

Вся информация есть на странице фреймворка, а историю о том, как возникла идея userver, можно прочитать на Хабре.

С переделкой кода и согласованием всех процессов работы стало как минимум в полтора раза больше

Андрей Фомичев: «Надо было преобразовать код так, чтобы вытащить в опенсорс только нужное»

Мы живём в монорепозитории Яндекса под названием Аркадия. С момента начала разработки YDB мы обросли зависимостями: от нас зависели проекты, а мы от них. Надо было преобразовать код и при этом не остановить активную работу над новой функциональностью.

Мы начали готовиться к выходу в опенсорс в августе 2021 года. Завели тикеты и страничку, на которой цветом отмечали, какие задачи уже сделали, а какие нет. До ревью работали вполсилы, так как планы на текущий период не предусматривали работ над опенсорсом, а дальше подготовка закипела по полной.

Главное, что надо было сделать, — подготовить исходники и убрать из кода зависимости YDB с внутренними проектами Яндекса. Кажется, кто-то из команды не очень верил, что мы успеем за полгода, ведь параллельно шла разработка новой функциональности. Но где-то к концу ноября стало понятно, что у нас точно всё получится.

Оля Ким: «Бюрократические штуки я взяла на себя, а команда занималась переделкой API»
Мы хотели выйти в опенсорс за полгода. Многим кажется, что это просто: типа взял и выложил код в GitHub. А по факту получилась гора работы.

Для начала надо было причесать код, потому что наш API был не готов к публичному пользованию и зависел от других сервисов Яндекса. Его переделкой занимались 3 команды: Android, iOS и веб. По паре человек в отдельной ветке в течение полугода убирали зависимости.

Раньше код у нас хранился в пяти репозиториях, а надо было переехать в один — Аркадию. Где-то переезд прошёл легко, а где-то исходник приходилось вырезать, не сломав текущие процессы, потому что продолжалась разработка фич и шли релизы.

Когда код был готов, стали разом мёржить его. Частями сделать это было нельзя, потому что внутри Яндекса у DivKit много пользователей, и постоянно бы что-то ломалось. А так мы один раз внесли изменения и пошли помогать коллегам всё чинить.

Пока команда в отдельной ветке причёсывала код API, я занималась бюрократией. И это выматывало. Только регистрацию торговой марки мы обсуждали целый месяц. Ещё надо было убедиться в безопасности кода, поэтому мы проходили аудиты системы информационной безопасности.

Вытянуть выход в опенсорс мне помогла наша деврел. Она буквально подхватывала задачи, просто чтобы разгрузить меня.

Дима Судаков: «Когда выходили в опенсорс, опирались на опыт команд ClickHouse и CatBoost»
Чтобы внешние разработчики могли пользоваться userver, мы поддерживаем и синхронизируем две системы сборки: внутри Яндекса и для внешних пользователей. Было так, что пользователи делали что-то внутри GitHub, мы это переносили себе в Аркадию, но фича не работала. Приходилось исправлять. Здесь нам помог опыт CatBoost: они тоже сталкивались с этой проблемой, когда выходили в опенсорс.

Параллельно с синхронизацией двух систем мы создали чат. Сейчас в нём уже более 600 человек, которые обсуждают userver и задают вопросы. И это помимо нашего внутреннего чата в Яндексе на 800 специалистов. Вопросов стало приходить больше, но мы стараемся всем отвечать.

Ещё мы столкнулись с кучей юридических процессов. Так, пришлось просить контрибьюторов подписать CLA — специальное соглашение, чтобы люди могли предлагать улучшения, а мы — внедрять.

Когда видишь отклик опенсорс-комьюнити, это вдохновляет, хоть и понимаешь, что работы предстоит ещё много

Андрей Фомичев: «Хочется, наверное, ещё быстрее набирать популярность, но это уже зависит от нас»

Когда анонсировали запуск, было ощущение, что событие может пройти тихо: в комьюнити не ожидали, что вот прямо сейчас Яндекс выложит YDB в опенсорс. Но благодаря команде PR и нашей подготовке получился очень масштабный анонс.

Внешние разработчики заинтересовались, сразу появился поток фидбэка и пул-реквестов, прежде всего в документацию.

Выход в опенсорс сместил мой фокус: задачи стали более бизнес-ориентированными, появился международный трек. Например, мы рассказали про YDB на FOSSASIA Singapore, HighLoad++ Serbia, HighLoad++ Armenia. И благодаря тому, что это опенсорс-проект, люди могут не просто познакомиться через цифры на слайде, а поработать с ним.

Оля Ким: «Планировали набрать на GitHub 500 звёзд, а в итоге почти сразу получили 1000»
Анонсировать запуск мы запланировали в 10 утра. Перед этим нам надо было открыть код, разместить сайт, выложить всё в публичные репозитории. Чтобы новость об этом не утекла раньше времени, решили начать в 12 ночи и работали до 5 утра. Было много проблем, но мы успели всё сделать вовремя.

Комьюнити тепло нас приняло. Больше всего запомнился отзыв Алексея Гладкова — не последнего человека в мобильной разработке. Он записал ролик на тему, стоит ли идти в low-code-разработку. Тема байтовая, потому что он сильно ругал эту технологию. Но в конце сказал, что если есть желание поработать в этом направлении, то берите DivKit, потому что ребята из Яндекса сделали крутую штуку — этим стоит пользоваться.

Дима Судаков: «Пользователи помогают нам с поддержкой userver на MacOS и разных дистрибутивах ОС Linux»
Мы заранее выложили исходники на GitHub, чтобы не было проблем с анонсом. Их практически сразу же заметили и в первые недели принесли несколько пул-реквестов и идей для оптимизации. В основном пользователи помогают нам исправлять документацию, улучшать безопасность и поддерживать userver для MacOS.

Чтобы привлекать внимание к userver, мы стараемся чаще рассказывать о нём на конференциях. Продвигать фреймворк помогает и Яндекс. Компания запустила Школу бэкенд-разработки, где студенты сразу взяли небольшие проекты с использованием userver. Некоторые ребята после этого даже пришли к нам стажироваться.

А ещё компания сделала нам мерч. Мы даём его разработчикам, которые помогают развивать userver.

Недавно я был на конференции, как раз в нашем мерче. Ко мне подошли и поинтересовались, откуда он у меня. Было приятно сказать, что я разработчик фреймворка.
Читать ещё
Мыши в Музее: история про коллекционирование (и самописных роботов)
Миша собирает компьютерные мышки больше 10 лет. Он рассказывает, как находит редкие экземпляры для своей коллекции
«Две недели вместо рабочих задач мы кодили свои идеи»: как в Яндексе проводят хакатоны
Старший разработчик рассказывает, как нашёл способ разобрать техдолг и попробовать идеи, до которых не доходили руки
Начать с начала и прийти в Яндекс: как меняют карьерный трек
Маша и Женя рассказывают, почему решились уйти в новую сферу, как это сделали и чем теперь занимаются в Яндексе

Посмотреть и откликнуться на вакансии

Wed Apr 17 2024 04:35:57 GMT+0300 (Moscow Standard Time)