Как принять активное участие в разработке Apache Superset
В этой статье будет описан процесс, как начать контрибьютить код в опенсоурс Superset.
Зачем? Как минимум вы познаете технологию разработки опенсорс проектов, а как максимум — внесете улучшения в проект для визуализации данных.
Данная статья дополнит ранее написанный материал «Описание файлов репозитория Superset версии 2.0.1»
Если понравится материал — делитесь статьей и подписывайтесь на телеграм канал Apache Superset BI
Обзор архитектуры Apache Superset
apache/superset — это основной монорепозиторий, содержащий apache-superset пакет Python, распространяемый на pypi. Этот репозиторий также включает в себя основные пакеты TypeScript/JavaScript Superset bundles и react apps в директории superset-frontend.
Проект Superset состоит из нескольких разных разделов:
- superset/superset: содержит кодовую базу бэкенда.
- superset/superset-frontend: содержит основные TypeScript/JavaScript bundles и react apps.
- superset/docs: содержимое, ресурсы и код веб-сайта Apache Superset. Окончательно созданные ресурсы для веб-сайта хранятся в apache/superset-site, но вам нужно только отредактировать файлы, apache/superset/docs и изменения будут внесены apache/superset-site после слияния.
- superset/superset-websocket: содержит сервер WebSocket, написанный на Node. js, который используется для отправки асинхронных данных внешнему интерфейсу веб-приложения Superset.
- tests: содержит тесты для различных компонентов приложения, включая интеграционные и модульные тесты.
Если грубо представить схему Apache Superset, то выглядит это примерно следующим образом:
Superset Backend
- Python
- Flask
- Gunicorn (workers)
Superset FrontEnd
- Node.JS
- React App
- TypeScript
- Webpack
Superset Plugins
- Apache Echarts
- npm build
- npmjs publish (или другой репозиторий)
Участники проекта Apache Superset
В версии Apache с открытым исходным кодом существует три уровня участников:
- Участник (Contributor): любой, кто внес какой-либо вклад в проект (код, документацию, отзывы, ответил на вопрос сообщества и т.д.).
- Коммиттер (Committer): участники, официально приглашенные PMC или комитетом по управлению проектом (PMC — project management committee) для получения признания за их постоянный вклад в проект.
- Член PMC: член комитета по управлению проектом, ответственный за руководство проектом, назначение и голосование за новых коммиттеров, а также голосование по предложениям по улучшению (Superset Improvement Proposals или SIP).
Только коммиттеры Apache Superset и члены комитета управления проектами (PMC) имеют необходимые привилегии Github для:
- создавать pull requests непосредственно в репозитории apache/superset или apache/superset-site
- запустить или перезапустить CI pipelines в Github
- одобрять pull requests
- merge pull requests в базу кода
Чтобы вносить код в качестве начинающего участника, вам необходимо поддерживать свой собственный fork кодовой базы apache/superset, чтобы использовать ее в качестве основы для создания PR в отношении основного apache/superset репозитория. Даже если вы станете коммиттером, поддержание собственного fork дает множество преимуществ, и это по-прежнему рекомендуемый рабочий процесс для людей, которые хотят внести свой вклад в открытый исходный код в целом!
Зачем вообще контрибьютить в Open Source?
Контрибуция в open source проекты может быть выгодной как для отдельного разработчика, так и для широкого сообщества разработчиков и пользователей. Вот несколько причин, почему контрибутирование в open source выгодно:
Профессиональное развитие:
- Опыт и навыки: Вкладываясь в проекты с открытым исходным кодом, вы получаете ценный опыт и улучшаете свои навыки. Работа с реальными проектами помогает развиваться как программисту.
- Расширение знаний: Вы узнаете о различных технологиях, архитектурных решениях и лучших практиках, которые могут быть недоступны в коммерческих проектах.
Социальные преимущества:
- Сообщество: Open Source – это огромное сообщество разработчиков, готовых помочь и поделиться знаниями. Вы можете общаться с экспертами, задавать вопросы и учиться.
- Профессиональные связи: Ваш вклад может привести к знакомству с другими разработчиками, работодателями или заказчиками.
Репутация и видимость:
- GitHub-профиль: Ваш профиль на GitHub становится вашим портфолио. Работодатели часто смотрят на активность в Open Source при найме.
- Благодарность: Получение звезд, форков и благодарностей от других разработчиков придает вам авторитет.
Помощь обществу:
- Общественная польза: Ваш вклад улучшает программное обеспечение, которое используют миллионы людей. Это помогает всем, включая вас самих.
- Доступность: Open Source позволяет создавать доступное ПО, которое не ограничено лицензионными соглашениями.
Личное удовлетворение:
- Чувство ценности: Зная, что вы помогли кому-то или сделали мир немного лучше, приносит удовлетворение.
- Интересные задачи: Open Source проекты часто предлагают интересные задачи, которые вы не встретите в обычной коммерческой разработке.
Правила и рекомендации для разработчиков Open Source проекта
Как себя вести в open source проекте / 4 правила для начинающих контрибьюторов
В чем смысл open source?
Что нужно знать для начала работы по доработке Superset
Следующая подборка роликов позволит Вам хотя бы структурно понять для чего каждый инструмент предназначен. Это не означает, что вам нужно сразу вникнуть во все детали и изучить все от А до Я. Но хотя бы посмотрите первый раз на перемотке эти видео, чтобы иметь представление, как происходит работа с той или иной технологией.
Python Virtual Environment
Эта тема будет вам полезна не только для доработки Суперсета, но также и для работы с другими проектами (dbt, jupyter notebook и т.п.)
Node Package Manager (NPM)
ЧТО ТАКОЕ Node Package Manager (NPM) за 12 минут
Typescript и React
Можно базовые понятия посмотреть
либо в более свежем ролике Владилена
Как настроить eslint, prettier и pre-commit hook
Подборка видео по контрибьютингу кода в Apache Superset
ℹ️ Полная инструкция на английском языке со всеми описаниями и деталями находится в основном репозитории проекта на гитхабе и называется файл superset/CONTRIBUTING.md
Superset Meetup: Apache Superset Contributor Bootcamp
Краткое описание процесса внесения изменения в Superset (Contributing Code WorkFlow)
Процесс contributing code в open source через fork обычно выглядит следующим образом:
- Форк (Forking): Вы создаете копию репозитория open source проекта, нажимая на кнопку «Fork» на его странице GitHub.
- Клонирование (Cloning): После форка вы клонируете свою копию репозитория на свой локальный компьютер с помощью команды
git clone
. - Создание ветки (Branching): Вы создаете новую ветку для разработки своей функциональности с помощью команды
git checkout -b [название_ветки]
. - Внесение изменений (Making Changes): Вы вносите необходимые изменения в код, документацию или любые другие аспекты проекта.
- Коммит (Committing): После того, как вы внесли изменения, вы делаете коммит с помощью команды
git commit -m "Описание внесенных изменений"
. - Отправка (Pushing): После коммита вы отправляете свои изменения в свой удаленный репозиторий с помощью команды
git push
. - Pull Request: После того, как изменения были отправлены в ваш удаленный репозиторий, вы создаете Pull Request на оригинальном репозитории open source проекта. В нем вы описываете, какие изменения вы внесли и почему они важны.
- Обсуждение и внесение изменений (Discussion and Making Changes): Разработчики open source проекта могут обсудить ваши изменения в комментариях к Pull Request. Вы можете внести дополнительные изменения в вашем коде на основе обратной связи.
- Слияние (Merging): После того, как ваш Pull Request был просмотрен и одобрен, а также прошел все тесты и проверки, ваш код будет слит (merged) с основной кодовой базой проекта.
- Синхронизация (Syncing): После слияния ваших изменений в основной репозиторий проекта, вам может потребоваться синхронизировать свою локальную версию с оригинальным репозиторием с помощью команды
git pull upstream master
, чтобы убедиться, что вы имеете последнюю версию кода.
Это основные шаги, которые вы должны выполнить при внесении своих вкладов в open source проект Superset через fork.
First Contributions Tutorial
Подробный туториал как пройти путь fork -> clone -> edit -> pull request
описан:
- Исходный проект с tutorial на английском https://github.com/firstcontributions/first-contributions
- Тот же туториал но на русском https://github.com/firstcontributions/first-contributions/blob/main/translations/README.ru.md
- Описание того же workflow, но в интерфейсе Visual Code github-windows-vs-code-tutorial.md
- Еще такая статья есть, но она немного устарела 6.2 GitHub — Внесение собственного вклада в проекты
Видео с YouTube по Pull Request
Посмотрите следующее видео, которое облегчит понимание по workflow «fork — clone — branch — edit — commit — pull request»:
Подробная инструкция по contributing кода в Superset
ℹ️ Полная инструкция на английском языке со всеми описаниями и деталями находится в основном репозитории проекта на гитхабе и называется файл superset/CONTRIBUTING.md
В ней вы можете узнать дополнительную информацию!
Поддержание собственного форка (Fork) Superset
Хотя обслуживание Fork может показаться сложной задачей, это довольно просто, если один раз пройти через настройку среды. Форк git начинает свою жизнь как зеркальное отражение исходного репозитория git (apache/superset). Затем, когда вы делаете коммиты кода, ваш fork начинает расходиться с исходным кодом.
Чтобы устранить это временное расхождение, вы работаете над объединением (merge) изменений вашего кода в репозиторий исходного кода.
Введение в разработку
Данная статья пишется с использованием следующих инструментов:
- Операционная система: Ubuntu 20.04 (пожалуйста, не пытайтесь делать это на винде)
- Superset repo master (последний релиз был 3.1.2)
- Python 3.10
Шаг 1. Создаем форк
Форк, который начинает сильно отличаться от исходного кода, также является популярным способом внесения изменений в базу кода Superset для вашего собственного развертывания. Многие организации также разделяют и смешивают несколько компонентов с открытым исходным кодом для создания кастомизированных решений. Это сила открытого исходного кода в действии!
Чтобы создать форк Superset в вашем собственном пространстве имен Github, просто перейдите к репозиторию apache/superset и нажмите Fork в правом верхнем углу.
После нажатия появится меню настройки форка, оставляем все по умолчанию:
Через несколько секунд вы увидите зеркальный код в формате https://github.com/{your_username}/superset
.
Шаг 2. Делаем clone в локальную среду разработки из своего fork
Если вы сделали форк в один день, а решили клонировать для разработки в другой день, то можете проверить на рассинхрон. GitHub сам вас уведомит о наличии расхождений. Чтобы обновить форк, можно нажать кнопку Update branch (речь про мастер):
Чтобы склонировать форк нужно в GitHub нажать на кнопку Code и скопировать ссылку:
Переходим на компьютере в нужную нам директорию и запускаем команду:
git clone https://github.com/superset-bi/superset.git
Шаг 3. Создаем ветку в клонированном проекте
Создадим новую ветку и переключимся на неё. Для этого необходимо запустить команду:
git switch -c my-first-contribution-superset
Результат:
Switched to a new branch 'my-first-contribution-superset'
Шаг 4. Настройка локальной среды разработки для фронтенда (Node.js)
Мы настоятельно рекомендуем использовать для разработки MacOS или операционную систему на базе Linux. Хотя некоторые члены сообщества добились того, чтобы кодовая база Superset работала в Windows, эта совместимость явно не поддерживается основными участниками или коммиттерами (включая подсистему Windows для Linux).
Начнем с настройки superset-frontend
.
По установке и настройке Node.JS на сайте есть отдельная статья — рекомендую ознакомиться:
Как установить нужную версию Node.js и npm для разработки
Идем в github superset/superset-frontend/package.json и ищем нужную нам версию для среды разработки:
"engines": { "node": "^18.19.1", "npm": "^10.2.4" },
Значит нам нужна node >= 18.19.1 версии и npm >=10.2.4
Запустим nvm list-remote
Установим v18.19.1
с помощью команды:
nvm install v18.19.1
Результат выполнения команды:
~$ nvm install v18.19.1 Downloading and installing node v18.19.1... Downloading https://nodejs.org/dist/v18.19.1/node-v18.19.1-linux-x64.tar.xz... ##################################################################################################################################################################################################### 100.0% Computing checksum with sha256sum Checksums matched! Now using node v18.19.1 (npm v10.2.4) Creating default alias: default -> v18.19.1
Установка JavaScript зависимостей для среды разработки frontend
Затем перейдите в CLI superset/superset-frontend
и установите зависимости JavaScript:
cd superset-frontend npm ci
при установке без VPN я получил ошибки
npm ERR! code ETIMEDOUT npm ERR! syscall read npm ERR! errno -110 npm ERR! network read ETIMEDOUT npm ERR! network This is a problem related to network connectivity. npm ERR! network In most cases you are behind a proxy or have bad network settings. npm ERR! network npm ERR! network If you are behind a proxy, please make sure that the npm ERR! network 'proxy' config is set properly. See: 'npm help config'
ВАЖНО! После включения VPN всё вроде заработало. Возможно это временные проблемы сети, не знаю.
В результате после выполнения npm ci
вы должны получить сообщение, что столько то пакетов установлено и т.п.:
Команда npm ci
аналогична npm install
и установит все пакеты, перечисленные в superset/superset-frontend/packages.json
. После завершения установки вы увидите новую node_modules/
папку. К счастью, эта папка игнорируется git (помните .gitignore?) и не регистрируется при создании коммитов кода!
Запуск сервера Node (run dev-server) для разработки фронтенда Superset
Чтобы запустить сервер Node, который передает ресурсы внешнего интерфейса в ваш браузер (с исходным sourcemap и поддержкой горячей перезагрузки), запустите команду:
npm run dev-server
По умолчанию сервер работает localhost:9000
и передает серверные запросы localhost:8088
(которые мы настроим в следующем разделе). Если вы хотите запустить интерфейсный сервер на другом порту, вы можете запустить:
npm run dev-server -- --devserverPort=9001
После запуска сервера по адресу http://localhost:9000 должен открыться суперсет (admin/admin):
Разрешение ошибок при работе с Node.js
Если есть ошибки с какими-то node_modules, имеет смысл эти пакеты вручную удалить (прям из node_modules) и повторно запустить npm ci.
Редактирование плагинов в монорепозитории (начиная с 2+ версий)
todo
Запуск Storybook
Чтобы запустить Storybook в директории superset-frontend необходимо выполнить команду гав-гав:
npm run storybook
Запустится окно в браузере по адресу http://localhost:6006/
Подробности о работе со Storybook можно посмотреть в видео:
или в видео на русском языке «Начало работы со StoryBook»:
Шаг 5. Настройка локальной среды разработки для бэкэнда (Python)
Краткая инструкция без деталей (с деталями ниже)
# Create a virtual environment and activate it (recommended) python3 -m venv venv # setup a python3 virtualenv source venv/bin/activate # Install external dependencies pip install -r requirements/development.txt # Install Superset in editable (development) mode pip install -e . # Initialize the database superset db upgrade # Create an admin user in your metadata database (use `admin` as username to be able to load the examples) superset fab create-admin # Create default roles and permissions superset init # Load some data to play with. # Note: you MUST have previously created an admin user with the username `admin` for this command to work. superset load-examples # Start the Flask dev web server from inside your virtualenv. # Note that your page may not have CSS at this point. # See instructions below how to build the front-end assets. superset run -p 8088 --with-threads --reload --debugger --debug
Варианты использования разных Python версий с virtualenv
Вариант 1
Используйте опцию —python(или короткую -p) при создании экземпляра virtualenv, чтобы указать исполняемый файл Python, который вы хотите использовать, например:
virtualenv --python="/usr/bin/python3.10" "/path/to/new/virtualenv/"
Вариант 2
Начиная с Python 3.3, документация (https://docs.python.org/3/library/venv.html) предлагает создать виртуальную среду с использованием stdlib
:
python3 -m venv "my_env_name"
Кроме того, если нам нужна конкретная версия Python, скажем, 3.6, мы можем использовать:
python3.10 -m venv "my_env_name"
Обязательно предварительно установите указанную версию Python
Как понять какую версию python нужно установить для текущего состояния master в репозитории Superset
Информацию по библиотекам ищите в файле CONTRIBUTING.md
Как минимум в репозитории Superset можно подсмотреть актуальную версию Superset:
Установка версии Python
Проверяем версию Python с помощью одной из команд:
python3 --version # или python --version
У меня стоит версия:
Python 3.10.13
todo
Настройка виртуальной среды
Поскольку на вашем компьютере может быть несколько баз кода Python, мы рекомендуем использовать локальную виртуальную среду , привязанную к superset/
папке, для установки всех зависимостей Python.
Создайте виртуальную среду Python и активируйте ее:
python3 -m venv venv source venv/bin/activate
Первая команда создаст папку с именем venv/
в репозитории.
Любые изменения в этой папке игнорируются git и не попадают в Github при нажатии. Вы можете просмотреть файл superset/.gitignore
, чтобы увидеть все файлы и папки, игнорируемые git для этой базы кода. Так что смело удаляйте и перестраивайте venv/
папку по своему усмотрению!
Установка необходимых зависимостей python
Далее давайте установим все внешние зависимости Python для Superset:
pip install -r requirements/development.txt
Установка Superset
Установите Superset, чтобы обеспечить редактируемый рабочий процесс разработки:
pip install -e .
Команда pip install -e .
используется для установки пакета Python в режиме «редактируемой установки» (editable mode). Этот режим позволяет установить пакет так, чтобы изменения в исходном коде пакета сразу же отражались в вашей среде разработки без необходимости переустановки пакета.
Вот что означают опции и аргументы команды:
pip install
: это команда управления пакетами Python, используемая для установки пакетов.-e
: это флаг, указывающий на редактируемую установку. Это означает, что пакет будет установлен в режиме редактирования, что позволяет вносить изменения в его исходный код без повторной установки..
: это путь к каталогу, содержащему файлsetup.py
вашего пакета. Точка здесь означает текущий рабочий каталог.
Таким образом, команда pip install -e .
устанавливает текущий пакет из текущего каталога в редактируемом режиме, что позволяет вам редактировать его исходный код без повторной установки.
Ошибка Failed to build python-geohash
При выполнении установки pip install -e .
произошла ошибка
Building wheel for python-geohash (pyproject.toml) ... error
error: subprocess-exited-with-error
более подробный код ошибки
x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -DPYTHON_MODULE=1 -I/home/ivsham/dev/superset/venv/include -I/usr/include/python3.10 -c src/geohash.cpp -o build/temp.linux-x86_64-cpython-310/src/geohash.o src/geohash.cpp:538:10: fatal error: Python.h: No such file or directory 538 | #include <Python.h> | ^~~~~~~~~~ compilation terminated. error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for python-geohash Failed to build python-geohash ERROR: Could not build wheels for python-geohash, which is required to install pyproject.toml-based projects
Решается она с помощью установки:
sudo apt install libpython3.10-dev
После этого повторно запустил установку и все завершилось успешно.
Инициализация DB и инициализация Superset
Инициализируйте базу данных метаданных, которая необходима Superset для поддержания состояния наборов данных, диаграмм, информационных панелей и т. д.
superset db upgrade
По умолчанию Superset создаст базу данных SQLite в вашем домашнем каталоге по адресу ~/.superset/superset.db
. Если вам интересно, вы можете открыть файл базы данных с помощью инструмента с графическим интерфейсом (или подключившись к нему на выбранном вами языке программирования) и изучить структуру данных.
Настройка ролей
Создайте пользователя-администратора для входа в Superset. Superset построен на основе Flask App Builder . Затем инициализируйте оставшиеся роли и разрешения по умолчанию:
superset fab create-admin
superset init
Рекомендую загрузить примеры наборов данных, диаграмм и информационных панелей, чтобы вам было легче понять, как изменения вашего кода влияют на реальную среду Superset.
superset load-examples
Запустите внутренний сервер из вашей виртуальной среды, используя следующую команду:
FLASK_ENV=development superset run -p 8088 --with-threads --reload --debugger
Перейдите к и localhost:8088
убедитесь, что и серверная часть, и внешний интерфейс работают! Войдите в систему, используя имя пользователя и пароль администратора, которые вы создали ранее (по умолчанию это admin
и admin
).
Предупреждение superset fab create-admin
-------------------------------------------------------------------------------- WARNING -------------------------------------------------------------------------------- A Default SECRET_KEY was detected, please use superset_config.py to override it. Use a strong complex alphanumeric string and use a tool to help you generate a sufficiently random sequence, ex: openssl rand -base64 42 -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- Refusing to start due to insecure SECRET_KEY
Как решить:
Запускаем команду генерации ключа
openssl rand -base64 42
Копируем его в переменную
export SUPERSET_SECRET_KEY="vRdZS7QO3B505RqpskWbKc9hNXjepqX9vmF9vBq6npVYRxYRn1XlJv8U"
Запускаем повторно
superset fab create-admin
Шаг 6. Установка и настройка pre-commit
Прежде чем вы сможете совершить коммит кода, вам нужно установить небольшую библиотеку под названием pre-commit.
Как следует из названия, эта библиотека выполняет определенные «перехватчики» кода перед запуском git commit
. Это поможет вам обнаружить некоторые проблемы до того, как они попадут в Github и затем потерпят неудачу в конвейере CI.
Pre-commit предлагает два преимущества для разработчиков открытого исходного кода:
- снижает частоту и стоимость конвейеров непрерывной интеграции, работающих на Github
- обеспечивает значительно более быстрый цикл обратной связи для людей, желающих внести свой код
Обратите внимание, что предварительная фиксация не является заменой модульных тестов или интеграционных тестов, а представляет собой облегченный способ выявить некоторые простые проблемы!
Давайте настроим предварительную фиксацию с помощью команды (перейти к superset/superset
папке и запустить):
make pre-commit
Это запустит все команды, перечисленные в этой части Makefile.
Каждый раз, когда вы делаете pre-commit, вы заметите, что перехватчики перед commit будут работать в течение нескольких секунд и отображать любые потенциальные нарушения (например, репозиторий Superset не может содержать файлы размером более 500 КБ). Вы можете увидеть список текущих перехватчиков pre-commit в superset/.pre-commit.config.yaml.
Шаг 7. Вносим изменения в код
todo
Шаг 8. Делаем коммиты кода в ветку (code commit)
Теперь закоммитьте данные изменения с помощью команды git commit
.
git commit -m "added some functionality to Superset"
Шаг 9. Отправляем измененный код (branch) в наш fork в GitHub
Теперь вы готовы отправить код на Github. Поскольку, как начинающий участник, вы не можете отправить репозиторий apache/superset
напрямую (или upstream
удаленно), вам нужно будет вместо этого отправить его в свой fork репозитория Superset, а затем открыть PR для apache/superset
репо.
Выполните команду:
git push origin <branchname>
или для нашей ветки my-first-contribution-superset команда будет выглядеть:
git push origin my-first-contribution-superset
Если отправка прошла успешно, вам должен быть показан URL-адрес в вашем CLI, по которому вы можете перейти, чтобы официально открыть PR на origin
удаленном компьютере (или основном apache/superset
репозитории, в который вы хотите поместить свой код).
Шаг 10. Создание Pull Request (PR) в официальный репо Superset
Если вы зайдете в свой репозиторий на GitHub, вы увидите кнопку Compare & pull request
. Нажмите на нее.
Теперь подтвердите пулл-реквест (обязательно заполните описание, картинки, суть изменений, как тестировали, документацию по фиче и т.п.):
Правила наименования PR
Все PR в репозитории Superset должны иметь заголовки, начинающиеся с одного из следующих префиксов:
Префикс | Описание |
build |
Изменения, влияющие на систему сборки или внешние зависимости |
chore |
Другие изменения, которые не изменяют файлы src или файлы с тестами. |
ci |
Изменения в файлах конфигурации и сценариях CI |
docs |
Изменение только по документации проекта |
feat |
Новая функция |
fix |
Исправление ошибки |
perf |
Изменение кода, улучшающее его производительность |
refactor |
Рефакторинг кода — изменение кода, которое не исправляет никакие ошибки и не добавляет новую функциональность. Переработка исходного кода программы, чтобы он стал более простым и понятным |
style |
Изменения, не влияющие на смысл кода (пробелы, форматирование и т.д.) |
test |
Добавление недостающих тестов или исправление существующих тестов |
other |
другие изменения |
Описание PR
Если предложенный заголовок не начинается ни с одного из приведенных выше, рабочий процесс непрерывной интеграции для репозитория расширенного набора не пройдет проверку PR , и ваш PR не сможет быть объединен.
Чтобы завершить ваш PR и повысить шансы на то, что ваш код будет рассмотрен и принят, я рекомендую предоставить рецензенту как можно больше контекста в описании вашего PR:
- Какую проблему решает этот код?
- Какие ссылки или ссылки на соответствующие обсуждения здесь уже были?
- Исправляет ли это конкретную ошибку или реализует новую функцию, запрошенную кем-то? Ссылка на него/них!
- По возможности покажите скриншоты до/после
Поставьте себя на место рецензента и посочувствуйте ему!
Примеры как описать PR наиболее полно
Прочитайте статью на habr Как генерировать осмысленные коммиты. Применяем стандарт Conventional Commits
Примеры заголовков Pull Requests (PRs):
feat(dashboard): Add metadata bar to the header fix: data in table with time comparison without change should be grey fix: table with time comparison shows blank data when dimension is numeric chore: Fix/remove hardcode of admin role
Пример одного из Pull Requests с описанием (feat: Adds legacy time support for Waterfall chart #26136):
Шаг 11. Процесс PR-анализа. Устранение проблем, конфликтов, прохождение тестов и проверок
После того как вы создали PR, рецензент вашего кода должен быть назначен автоматически. Для успешного объединения вашего PR с расширенной кодовой базой необходимо выполнить следующие шаги:
- Разрешение любых конфликтов слияния
- Необходимо пройти конвейер непрерывной интеграции (CI) тестов и проверок.
- Рассмотрение (обычно) всех отзывов рецензента
- Одобряющий отзыв от коммиттера или члена PMC
Терпение здесь главное! Хотя многие коммиттеры и члены PMC работают на коммерческие организации, заинтересованные в успехе Superset, поддержание проекта Apache с открытым исходным кодом по-прежнему остается в значительной степени распределенной волонтерской работой.
Если прошло более 48 часов, а никто не оставил комментариев и не провел официальный PR-обзор, я бы посоветовал вам опубликовать сообщение в канале участия в сообществе Superset Slack.
Leave a Reply