Как внести свой вклад в развитие Greengage DB

Команда Greengage26.09.2025
GREENGAGE CONTRIBUTING
В этой статье рассказываем, как можно принять участие в разработке проекта Greengage DB и стать частью сообщества

Привет! Мы — команда разработки open-source проекта Greengage DB. Из этой статьи вы узнаете, как стать контрибьютором Greengage DB и как у нас устроен процесс приема внешних патчей. Вместе с вами мы проследим, что происходит с патчем до и после отправки на ревью, а также познакомимся с основными шагами и правилами, которые помогут ускорить принятие вашего pull request архитектурным комитетом проекта.

Почему вообще стоит участвовать в open-source проектах?

Прежде чем начать разговор о Greengage DB, приведем всего две интересные цифры, которые говорят сами за себя:

  • По данным GitHub до 70% работодателей считают вклад в open-source плюсом при приеме на работу.

  • По данным StackOverflow 85% участников open-source проектов улучшают навыки написания кода.

Соответственно, став контрибьютором, вы получите как минимум открытое портфолио и прокачаете свои навыки решением сложных и интересных задач. Помимо этого, возможными плюсами от участия в open-source могут быть наставничество и нетворкинг в сообществе, а также чувство причастности к большому проекту.

Что такое Greengage DB

Greengage DB — свободно распространяемая массивно-параллельная (MPP) СУБД на базе Greenplum, MPP-форка PostgreSQL, предназначенного для OLAP-нагрузок. Greengage DB подходит для построения хранилищ данных (DWH) и обработки больших объемов информации, исчисляемых терабайтами данных.

Проект Greengage DB был создан в качестве open-source альтернативы проекту Greenplum, репозиторий которого был заархивирован компанией Broadcom в мае 2024 года. Команда контрибьюторов из сообщества, вносивших наибольший вклад в Greenplum, объединилась вокруг независимого форка Greengage DB, доступного под лицензией Apache 2.0. О новом проекте было официально объявлено на конференции "Новое время — новый Greenplum" 19 сентября 2024 года.

Проект Greengage DB на первом этапе существования развивался силами архитектурного комитета и ключевых разработчиков проекта Greenplum. На данный момент в публичном репозитории Greengage DB настроен CI/CD-процесс принятия сторонних патчей от внешних контрибьюторов, а также автоматизирована сборка и публикация Docker-образов со сборкой Greengage DB. Это означает, что вы можете начать участвовать в разработке Greengage DB, помогая нам улучшать проект и расширяя свое open-source портфолио.

Стартовые навыки контрибьютора Greengage DB

Для работы над Greengage DB вам понадобится ряд навыков. В составе проекта есть модули на разных языках программирования, включая Python (он используется для создания утилит управления кластером, его конфигурацией и т.д.). Тем не менее, основная часть Greengage DB — это код на С и C++, поэтому мы подготовили небольшой чек-лист требований именно для C-разработчиков:

  • Навыки работы с Git (проект размещен на GitHub).

  • Опыт системного программирования на языке C, владение стандартами ANSI C.

  • Базовые навыки отладки (gdb) и профилирования (Valgrind, perf, инструменты eBPF).

  • Основы работы в Linux-средах, использование инструментов командной строки.

  • Английский язык для ведения документации (описание pull request и ведение дискуссий).

  • Знание SQL и навыки работы с реляционными СУБД (PostgreSQL, MySQL/MariaDB, MS SQL и т.д.).

Если ваш опыт примерно соответствует этому описанию, самое время попробовать себя в деле!

Документы и подготовка

Выбор задачи. Отлично, если вы уже знаете, какую помощь хотите оказать проекту. В ближайших планах у нас создание открытого баг-трекера и специального списка желаемых изменений, откуда внешний контрибьютор сможет выбирать себе задачи в работу. Как только такой список и баг-трекер станут доступны, мы сообщим об этом в нашем Телеграм-канале.

Ознакомление с требованиями к оформлению pull request. Соблюдение требований к описанию pull request (PR) поможет ускорить принятие вашего PR в проект. Ознакомьтесь с ними заранее, чтобы избежать ошибок при представлении ваших изменений архитектурному комитету Greengage DB. Файл с требованиями доступен в разделе Contributing репозитория проекта.

Принятие соглашения для контрибьюторов. Права контрибьютора и проекта защищает соглашение с индивидуальным контрибьютором (ICLA) или корпоративное соглашение (CCLA). Принятие такого соглашения — стандартная практика в мире open-source. С соглашениями можно ознакомиться на нашем сайте. Подписанные копии соглашений принимаются на адрес secretary@greenagedb.org. В дальнейшем для удобства наших контрибьюторов будут использоваться eSignature-решения.

Ознакомление с Кодексом поведения. Основные принципы развития сообщества Greengage DB и общения между его участниками отражены в Кодексе поведения сообщества. С ним также лучше ознакомиться заранее — он доступен на сайте проекта на русском и английском языках.

Работа с GitHub

  1. Создайте локальный форк репозитория Greengage DB.

    Репозиторий Greengage DB
    Репозиторий Greengage DB
  2. Соберите проект из исходников, как описано в соответствующем руководстве в документации.

  3. Создайте свой патч, отредактировав или добавив новые файлы. Обратите внимание на то, что изменения должны располагаться в ветке, отличной от основной ветки проекта.

  4. Запустите связанные тесты локально. Также обратите внимание, что новая функциональность должна покрываться регрессионными тестами, которые покажут работоспособность ваших изменений. Перед добавлением файлов тестов обратите внимание на соответствующий раздел в Greengage Pull Request Submission Guidelines.

  5. В случае успешного завершения локальных тестов отправьте pull request (PR) в основной репозиторий. После отправки PR появляется в списке Pull requests на стороне организации Greengage. Запускаются автотесты — после аппрува на их запуск по итогам беглого ревью команды. После успешного прохождения автотестов начинается процесс код-ревью.

Сборка и автотесты

После создания PR и подтверждении изменений со стороны проверяющего (на предмет отсутствия злонамеренных или подозрительных изменений) для ветки с изменениями запускаются процессы сборки и автоматического тестирования — до их успешного завершения слияние заблокировано, даже если проверяющий выбрал опцию auto-merge.

За процессом тестирования можно и нужно следить. Общий план тестирования доступен на вкладке Summary, где можно посмотреть, что именно и каким образом проверяется. В случае, если интересно содержание конкретного теста, можно получить артефакты выполнения теста, а также увидеть прогресс по прогону тестов.

Проверка и оценка изменений

Далее представителю архитектурного комитета необходимо проверить PR.

Сроки проверки зависят от сложности и объема патча:

  • Сложный и/или объемный PR — до 8 недель.

  • PR средней сложности — до 4 недель.

  • Простой PR — до 1 недели.

  • Нерелевантные PR игнорируются.

Проверку проходит само описание PR и измененные файлы. Оценивается польза от вносимых изменений и их безопасность для пользователей проекта. В ходе ревью проверяющий может оставить комментарии к предлагаемому в проект коду.

Например, проверяющий может прислать некоторые вопросы и пожелания, как показано здесь.

Пример комментариев к pull request
Пример комментариев к pull request

В данном случае автора попросили доработать патч, чтобы он учитывал всю специфику синтаксиса команды CREATE TABLE.

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

После того, как автор патча и проверяющий соглашаются, что изменения можно принять в проект, выполняется финальная проверка еще одним представителем архитектурного комитета (как правило, еще более опытным).

Статус контрибьютора внутри проекта

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

В Greengage DB у активных контрибьюторов тоже появится возможность определять будущее проекта. Вот список ролей, которые мы планируем ввести с ростом числа контрибьюторов:

  • Участник сообщества — любой контрибьютор, код которого был принят в проект.

  • Технический лид — контрибьютор, отвечающий за контроль и сортировку входящих патчей.

  • Член архитектурного комитета — контрибьютор, голосующий за принятие важных решений.

Пока команда Greengage DB как мейнтейнер проекта (владелец репозитория) назначает членов архитектурного комитета. В дальнейшем архитектурный комитет будет формироваться в том числе и из активных участников сообщества, номинированных техническими лидами, которых будет выбирать архитектурный комитет. Этот процесс показан на схеме ниже.

Роли контрибьюторов Greengage DB
Роли контрибьюторов Greengage DB

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

Заключение

Мы будем рады вашему участию в Greengage DB и предложениям по улучшению проекта и процессов. Если вы хотите обсудить свою идею с нашей командой до написания кода, подробно опишите ее в секции Issues репозитория Greengage. Там же можно оставить запросы на разработку новой функциональности (feature request), если вы уже являетесь пользователем Greengage DB. Путь контрибьютора всегда начинается с личного опыта использования продукта — получить его вам помогут наше обучающее видео и документация Greengage DB. Удачи!