Собираем все наши опенсорс-продукты на сайте Yandex Open Source. А здесь разработчики рассказывают, как публиковали YDB, DivKit и userver.
Подробнее о YDB можно узнать на странице системы и на Хабре, а посмотреть исходники на GitHub.
Почему для YDB выход в опенсорс был так важен? 20–30 лет назад ещё можно было эффективно развивать СУБД с закрытым исходным кодом, просто продавая лицензии, как поступали Oracle, Microsoft и IBM. Сейчас это совершенно невозможно: CTO любой компании в первую очередь смотрит на доступные открытые системы. В результате я бы сказал, что современные и популярные решения в области баз данных попадают в одну из следующих категорий:
Ознакомиться с DivKit можно на странице фреймворка, почитать историю создания — на Хабре, а посмотреть исходники — на GitHub.
Руководители поддержали нас и сказали готовить проект. Пару раз, правда, пришлось его доработать, прежде чем получить окончательное ОК. Но оно того стоило.
Вся информация есть на странице фреймворка, а историю о том, как возникла идея userver, можно прочитать на Хабре.
Мы начали готовиться к выходу в опенсорс в августе 2021 года. Завели тикеты и страничку, на которой цветом отмечали, какие задачи уже сделали, а какие нет. До ревью работали вполсилы, так как планы на текущий период не предусматривали работ над опенсорсом, а дальше подготовка закипела по полной.
Главное, что надо было сделать, — подготовить исходники и убрать из кода зависимости YDB с внутренними проектами Яндекса. Кажется, кто-то из команды не очень верил, что мы успеем за полгода, ведь параллельно шла разработка новой функциональности. Но где-то к концу ноября стало понятно, что у нас точно всё получится.
Для начала надо было причесать код, потому что наш API был не готов к публичному пользованию и зависел от других сервисов Яндекса. Его переделкой занимались 3 команды: Android, iOS и веб. По паре человек в отдельной ветке в течение полугода убирали зависимости.
Раньше код у нас хранился в пяти репозиториях, а надо было переехать в один — Аркадию. Где-то переезд прошёл легко, а где-то исходник приходилось вырезать, не сломав текущие процессы, потому что продолжалась разработка фич и шли релизы.
Когда код был готов, стали разом мёржить его. Частями сделать это было нельзя, потому что внутри Яндекса у DivKit много пользователей, и постоянно бы что-то ломалось. А так мы один раз внесли изменения и пошли помогать коллегам всё чинить.
Пока команда в отдельной ветке причёсывала код API, я занималась бюрократией. И это выматывало. Только регистрацию торговой марки мы обсуждали целый месяц. Ещё надо было убедиться в безопасности кода, поэтому мы проходили аудиты системы информационной безопасности.
Вытянуть выход в опенсорс мне помогла наша деврел. Она буквально подхватывала задачи, просто чтобы разгрузить меня.
Параллельно с синхронизацией двух систем мы создали чат. Сейчас в нём уже более 600 человек, которые обсуждают userver и задают вопросы. И это помимо нашего внутреннего чата в Яндексе на 800 специалистов. Вопросов стало приходить больше, но мы стараемся всем отвечать.
Ещё мы столкнулись с кучей юридических процессов. Так, пришлось просить контрибьюторов подписать CLA — специальное соглашение, чтобы люди могли предлагать улучшения, а мы — внедрять.
Внешние разработчики заинтересовались, сразу появился поток фидбэка и пул-реквестов, прежде всего в документацию.
Выход в опенсорс сместил мой фокус: задачи стали более бизнес-ориентированными, появился международный трек. Например, мы рассказали про YDB на FOSSASIA Singapore, HighLoad++ Serbia, HighLoad++ Armenia. И благодаря тому, что это опенсорс-проект, люди могут не просто познакомиться через цифры на слайде, а поработать с ним.
Комьюнити тепло нас приняло. Больше всего запомнился отзыв Алексея Гладкова — не последнего человека в мобильной разработке. Он записал ролик на тему, стоит ли идти в low-code-разработку. Тема байтовая, потому что он сильно ругал эту технологию. Но в конце сказал, что если есть желание поработать в этом направлении, то берите DivKit, потому что ребята из Яндекса сделали крутую штуку — этим стоит пользоваться.
Чтобы привлекать внимание к userver, мы стараемся чаще рассказывать о нём на конференциях. Продвигать фреймворк помогает и Яндекс. Компания запустила Школу бэкенд-разработки, где студенты сразу взяли небольшие проекты с использованием userver. Некоторые ребята после этого даже пришли к нам стажироваться.
А ещё компания сделала нам мерч. Мы даём его разработчикам, которые помогают развивать userver.