Группа развития Open Source-технологий
Язык буткемпа: C++, Go, Python
Команды Яндекса создают множество продуктов для миллионов пользователей. Для этого мы интегрируем к себе известные качественные open-source-решения. А ещё мы сами делимся своими наработками с миром, выводя их в open-source. Группа развития Open Source-технологий отвечает за оба этих направления.
Первая наша активность — сохранять к себе в монорепозиторий нужные проверенные внешние open-source библиотеки и тулчейны. Более шести тысяч разработчиков Яндекса работают в огромном монорепозитории, мы следуем принципам trunk-based development и связности по коду. Это возможно благодаря своей системе сборки и CI в масштабах всего репозитория. И это делает задачу интересной — мы адаптируем свежие библиотеки под существующие зависимости и системы. Мы знаем особенности популярных библиотек, регулярно приносим в upstream улучшения для них. Мы стремимся к тому, чтобы библиотеки вносились и обновлялись в монорепозитории автоматически, просто и быстро, своевременно, консистентно, в соответствии с лицензиями на использование.
Вторая активность — экспорт кода из нашего монорепозитория на GitHub в open-source. Для этого мы разрабатываем сервисы синхронизации и общие гайдлайны. Нашей автоматизацией пользуются известные open-source проекты Яндекса, например: YDB, YTSaurus, CatBoost, DivKit, Yandex.Tank, uservices и другие.
Стек
C++, Python, Go | Основные языки |
---|---|
clang, llvm, libcxx, openssl, protobuf, libunwind, grpc, … и десятки других | Основные библиотеки |
YDB, YTSaurus, CatBoost, DivKit, AppMetrica, Yandex.Tank, uservices и другие | Основные продуктовые команды, с которыми плотно работаем над open-source |
Команда
Такие активности развивают опыт широкого профиля и создают разработчиков-универсалов. Ведь Яндекс держит в постоянной работоспособности исходный код на десятки гигабайт с тысячами изменений в сутки, и почти каждый продукт использует open-source-решения.
Команда состоит из экспертов высокого уровня. Мы решаем самые сложные проблемы. После обновления версии clang программа падает в корку под PGO? Это к нам... Нужно обновить версию libcxx, на которую ссылаются десятки тысяч зависимостей от сотен внутренних проектов? Это тоже к нам. Обновить версию protobuf, который тянет клубок зависимостей и который использует почти каждый проект Яндекса? Без нас тоже никак. Как правило, каждый из ребят у нас — серьезный специалист в каком-то основном языке, и неплохо разрабатывает как минимум ещё на одном, а то и двух. Это позволяет нам быть взаимозаменяемыми, а также не простаивать при неравномерной загрузке по языкам.
Основные наши продукты делаются на С++, Python, Go, но также мы работаем с библиотеками на самых разных технологиях.
Команда небольшая, четыре человека, распределённая (в основном, Москва, а также Белград, Минск). Иногда мы собираемся все вместе в Москве на тимбилдинг.
Особенности
- Работа с open-source — это технические задачи, которые прокачивают навыки в языках, тулчейнах, подходах к разработке, в использовании открытого ПО для самых разных программных продуктов, в работе с зависимостями и CI/CD.
- Это не просто один-два языка программирования, но опыт, которым в обычной продуктовой команде могут похвастаться только разработчики с богатым стажем. Мы решаем сложные проблемы и обмениваемся знаниями. А раз часть команды — эксперты высокого уровня, то и все члены команды получают возможность развиваться быстро.
- Здесь ты, как разработчик, сможешь получить опыт интеграции множества популярных в мире библиотек. Мы важны в масштабе всей компании: влияем прямо или косвенно на большую часть исходного кода и на подходы компании к open-source.
- У нас не скучно: вчера ты обновлял TensorFlow, сегодня решаешь проблему динамической линковки с CUDA, а завтра будешь синкать YDB в open-source.
Что нужно принять во внимание
Отметим, что у команды нет сложной архитектуры или массовых продуктов. Разрабатывать только на одном языке не получится, придётся постепенно доучить С++, Go или Python. В команде есть недельные дежурства, но они происходят в рабочее время и развивают навыки поддержки рабочих окружений.
Дополнительные материалы
Доклад о реализации подхода open-source в Яндексе.