Вклад в код
Вклад в пакеты dbt
Обзор
dbt Packages — это самый простой способ для аналитических инженеров поучаствовать в контрибьютинге кода в сообщество dbt, поскольку dbt Packages по сути являются обычными dbt Projects. Если вы умеете создавать dbt Project, писать macro и делать ref на model, значит, вы можете создать dbt Package. Пакеты работают примерно так же, как библиотеки в других языках программирования. Они позволяют использовать заранее написанный, модульный код для решения типовых задач аналитической инженерии. Посмотреть все dbt Packages можно на dbt Package Hub.
Возможности для вклада
- Создайте новый пакет для dbt Package Hub. Это может быть новый набор макросов или тестов, которые были полезны вам в ваших проектах, набор моделей для работы с часто используемым источником данных или что-то еще, что можно сделать в рамках проекта dbt.
- Улучшите существующий пакет: вы также можете помочь улучшить существующий пакет. Это можно сделать, создавая и участвуя в обсуждении Issues или добавляя функциональность для решения существующей проблемы через открытие PR.
Примеры вкладов
Начало работы
- Используйте пакеты в своих собственных проектах! Лучший способ понять, как улучшить пакет, — это применять его в production‑среде, а затем искать способы его доработки или улучшения.
- Ознакомьтесь со следующими материалами по разработке пакетов:
- Нужна помощь: посетите #package-ecosystem в Slack-сообществе dbt
Участвуйте в развитии open source или source-available программного обеспечения dbt
Обзор
dbt Core и dbt Fusion Engine, адаптеры, инструменты, а также сайты, на которых работают Package Hub и Developer Hub, — всё это активные проекты, развиваемые сообществом. В отличие от dbt Packages, вклад в код этих проектов обычно требует некоторого рабочего знания языков программирования, отличных от SQL и Jinja, однако поддерживающее сообщество вокруг этих репозиториев может помочь вам развить соответствующие навыки. Даже не внося изменения в код, существует множество способов участвовать в коллективной разработке этих проектов — они описаны ниже. Подборку самых активных OSS/SA‑проектов, которые поддерживает dbt Labs, вы можете найти здесь.
Возможности для вклада
Существует три основных способа внести вклад в проекты dbt. В качестве примера мы будем использовать dbt Fusion Engine — это своего рода «входная точка» в экосистему dbt и отличное место для начала для новичков:
- Открыть issue, чтобы предложить улучшение или оставить обратную связь.
- Комментировать и участвовать в существующих issues или discussions. Это может быть, например, голосование за issue, которые были бы полезны вашей организации, комментарии с уточнениями к запросу на новую функциональность или описание того, как та или иная возможность повлияет на использование dbt в вашей работе.
- Создать pull request, который решает открытую Issue. Это предполагает написание кода и тестов, добавляющих новую функциональность или исправляющих баг, описанный в Issue, а затем асинхронное прохождение процесса code review с инженером dbt Labs. Обратите внимание, что при внесении вклада в dbt Core требуются подписанные коммиты. Инструкции о том, как подписывать коммиты, см. в разделе Signing commits.
Примеры вкладов
- Посмотрите этот issue, посвящённый улучшению сообщений об ошибках, а также PR, который сообщество внесло для его исправления.
- На основе указанного выше issue был создан ещё один issue — уже не только для изменения текста ошибки, но и для улучшения поведения в целом. Это и есть добродетельный цикл разработки, движимой сообществом! Шаг за шагом мы, сообщество, формируем инструмент так, чтобы он лучше соответствовал нашим потребностям.
Начало работы
- Ознакомьтесь с руководством по внесению вкладов для dbt Core и с разделом Contributor Expectations.
- Если вы хотите внести вклад в dbt Fusion Engine, найдите задачу с меткой “good first issue” или поищите аналогичные метки в других репозиториях. Если есть сомнения, не стесняйтесь спросить у мейнтейнеров, с какой задачи лучше начать — они с радостью помогут и будут рады вашему участию!
Нужна помощь?
Следующие каналы в Slack-сообществе dbt — отличное место для вопросов:
- #dbt-core-development
- #adapter-ecosystem