Привет, рад узнать, что вы заинтересованы в внесении вклада в проект QuestDB. Вот несколько тем, которые помогут вам начать:
Независимо от того, сообщаете ли вы о баге или предлагаете новую возможность, вы можете создать issue с помощью соответствующего шаблона.
Если вы не уверены, следует ли вам создать issue, вы также можете присоединиться к нашему сообществу Slack каналу и задать свои вопросы там.
Если вы нашли баг безопасности, пожалуйста, обратитесь к файлу SECURITY.md для получения дополнительной информации.
Мы стремимся как можно скорее ответить на ваши issues и вопросы. Если вы хотите получить более быстрый ответ, мы рекомендуем всегда подробно описать ваши шаги и предоставить информацию об вашем окружении в отчетах о багах. А если вы предлагаете новую возможность, это поможет нам оценить приоритет, если вы объясните, почему вам нужна эта возможность.
core/src/test/java/
core/src/main/c/
win64svc/
github.com/questdb/ui
benchmarks/
Микро-基准测试应翻译为:
benchmarks/
Компилированные двоичные файлы (для C-библиотеки и упаковщика Windows-службы) были отправлены в git, чтобы сделать процесс сборки Java более централизованным и упрощённым.Наши поддерживаемые члены команды используют категории для маркировки задач, поэтому вы можете использовать это для поиска определённого типа задач, над которыми хотите работать. Если вы не знаете, с чего начать, попробуйте найти задачи, помеченные как
good first issue
или
help wanted
. Если вам хочется понять, как наши поддерживаемые члены команды сотрудничают друг с другом, вы можете обратиться к
этой секции.
JAVA_HOME
Переменная среды JAVA_HOME
требуется Maven. Возможно иметь несколько версий Java на одной платформе. Убедитесь, что JAVA_HOME
указывает на Java 11 или более позднюю версию. Другие версии Java могут не работать. Если вы новичок в Java, проверьте, чтобы JAVA_HOME
указывал на корневую директорию Java:C:\Users\me\dev\jdk-11.0.8
и не C:\Users\me\dev\jdk-11.0.8\bin\java
.Linux/OS X
export JAVA_HOME="/path/to/java/"
Windows
set JAVA_HOME="c:\path\to\java directory"
Вы можете скомпилировать базу данных и создать веб-консоль с помощью следующей команды:
mvn clean package -DskipTests -P build-web-console
Затем запустите QuestDB с помощью:
java -p core/target/questdb-<version>-SNAPSHOT.jar -m io.questdb/io.questdb.ServerMain -d <root_dir>
Веб-консоль будет доступна по адресу localhost:9000.
Код форматируется с использованием конфигурационных файлов в директории .idea
. Чтобы минимизировать конфликты при слиянии и проблемы в CI, все вносимый код следует форматировать перед отправкой PR.
В IntelliJ IDEA можно:
автоматизировать форматирование (предпочтительно):
или
форматировать файлы вручную, выбрав их и выбрав Code | Reformat File.
C-библиотеки должны быть скомпилированы отдельно для каждой платформы. Cmake также требует установки JAVA_HOME
. Следующие команды компилируют на Linux/OSX.
cd core
cmake -B build/release -DCMAKE_BUILD_TYPE=Release .
cmake --build build/release --config Release
Для получения более подробной информации см. инструкции по сборке CMake.
Для разработки на C/C++ мы используем CLion. Этот IDE понимает файлы CMake и делает компиляцию проще. Сборка будет копировать артефакты следующим образом:``` core/src/main/c -> core/src/main/resources/io/questdb/bin
## Локальная настройка для разработки фронтенда
Код фронтенда (то есть веб-консоли) расположен в отдельном [репозитории](https://github.com/questdb/ui/tree/main/packages/web-console). Для его установки следует следовать инструкциям, предоставленным в этом репозитории.
Окружение для разработки фронтенда может работать самостоятельно, но потребует запущенного экземпляра QuestDB в фоновом режиме. Это можно сделать несколькими способами:
1. Запустите версию для разработки QuestDB из этого репозитория. Обратитесь к разделу [настройки окружения](#environment-setup) данного документа.
2. Запустите опубликованную версию QuestDB, например, с помощью Docker. Подробнее см. раздел [README этого репозитория](./README.md).
# Перед отправкой
## Тестирование
У нас много тестов, большинство из которых являются "интеграционными", то есть тест начинает сервер, взаимодействует с ним и проверяет результат. Мы ожидаем, что все участники будут отправлять PR с тестами. Обращайтесь к нам через Slack, если вы не уверены, как проводить тестирование, или считаете, что существующий тест можно улучшить.
## Внешние зависимостиQuestDB не зависит от Java. Это может звучать нетрадиционно, но на самом деле мы стараемся не изобретать велосипед, а вместо использования библиотек реализуем алгоритмы на основе первых принципов, чтобы обеспечить идеальное соответствие существующему коду. Со всем этим в виду мы ожидаем вклады, которые не добавляют сторонние зависимости.## Распределения памяти, оператор "new" и сборка мусора
QuestDB является нулевой сборкой мусора по всей цепочке данных. Мы ожидаем, что вклады также не распределяют память, если это возможно. Тем не менее, мы готовы помочь вам создать нулевую сборку мусора код, не стесняйтесь обращаться!
## Коммиты
Мы используем [стандартизованные коммиты](https://www.conventionalcommits.org/en/v1.0.0/) для автоматического генерирования заметок выпуска. Мы требуем, чтобы все комментарии к коммитам соответствовали этому стандарту. Для этого коммиты должны быть достаточно детализированы, чтобы их можно было успешно описать данным методом.
## Часто задаваемые вопросы
### Почему сервер работает, но UI возвращает ошибку `404` на [localhost:9000](http://localhost:9000)?
Это значит, что артефакты веб-консоли отсутствуют в `core/src/main/resources/io/questdb/site/public.zip`. Чтобы исправить эту проблему, просто выполните команду:
```bash
mvn clean package -DskipTests -P build-web-console
Некоторые антивирусные программы могут вызывать провал тестов. Характерными признаками того, что антивирус мешает тестам являются следующие случаи:
тесты проходят в CI (пример конфигурации CI),
но проваливаются в следующих случаях:
проверка размера HTTP-чанков (отсутствие начальных нулей в тестах, таких как IODispatcherTest
),
превышение времени выполнения теста,
аварийное завершение JVM.В случае продуктов ESET следующие шаги могут решить проблему:
отключите "фильтрацию содержимого протокола приложения" явно или
добавьте 127.0.0.1
в список "Исключённых IP адресов" в меню расширенных настроек,
так как отключение всех верхних уровней механизмов не выключает фильтрацию протоколов.
У нас есть инженерная доска проекта, которая помогает нам организовать ожидающие GitHub задачи среди инженеров из разных часовых поясов. И также настроены представления для баг-репортов и запросов на новые возможности.
Это то, что вы можете сделать для организации открытых задач:
Стадии нашей доски проекта:| Стадия | Описание |
| --------------- | ----------------------------------------------------------------------------------------------
| Новый | Когда пользователи сообщают о баге, мы ждём, пока кто-то воспроизведёт или последует за этим |
| Больше информации нужно | Когда требуется больше взаимодействия с автором до начала триажа |
| К выполнению | Как только задачи подтверждаются и инженеры могут взяться за их выполнение. Порядок элементов должен указывать на приоритет |
| В процессе | Если инженер берёт задачу, самоназначайтесь и переместите задачу в стадию В процессе
|
| Выполнено | Как только связанный pull request объединён, задача закрывается и автоматически перемещается в Выполнено
|Мы также используем метки для организации задач на GitHub, чтобы иметь лучший обзор. Текущие метки можно примерно разделить следующим образом:
Категории | Метки |
---|---|
Тип |
Ошибка , Новые возможности , Улучшение , Тестирование , Уборка , Вопрос , Производительность , Java
|
Компонент |
ILP , Rest API , Wire Postgres , SQL , Основной модуль , Интерфейс пользователя
|
Приоритет |
Срочно , Мелкий , Не исправлять , Позже
|
Сложность | Хорошая первая задача |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )