Вклад в проект

Прежде всего, спасибо, что уделили время для внесения своего вклада! ❤️

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

Примечание

Если вам нравится проект, но у вас нет времени на активный вклад, вы можете поддержать нас другими способами:

  • Поставить звезду на GitHub.

  • Написать о проекте в Twitter или других социальных сетях.

  • Сослаться на проект в README вашего репозитория.

  • Упомянуть проект на митапах и рассказать о нём друзьям и коллегам.

Содержание

Кодекс поведения

Этот проект и все его участники руководствуются Кодексом поведения Argenta. Участвуя, вы обязуетесь соблюдать этот кодекс. Пожалуйста, сообщайте о недопустимом поведении.


У меня есть вопрос

Примечание

Прежде чем задать вопрос, пожалуйста, ознакомьтесь с документацией.

Поищите ответ в существующих Issues. Если вы нашли похожий вопрос, но всё ещё нуждаетесь в разъяснениях, можете написать в нём. Также рекомендуем поискать ответ в интернете.

Если ответа не нашлось, создайте новый Issue и предоставьте как можно больше контекста, включая версии проекта и платформы.

Мы займемся вашей задачей как можно скорее.


Я хочу внести вклад

Правовое уведомление

Примечание

Внося вклад в этот проект, вы подтверждаете, что являетесь автором 100% контента, обладаете необходимыми правами на него и соглашаетесь, что он может распространяться под лицензией проекта.

Сообщение об ошибках

Перед отправкой отчета об ошибке

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

  • Убедитесь, что вы используете последнюю версию.

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

  • Проверьте, нет ли уже отчёта о вашей ошибке в трекере.

  • Также поищите в интернете (включая Stack Overflow), чтобы узнать, обсуждалась ли проблема за пределами GitHub.

  • Соберите информацию об ошибке:
    • Трассировка стека.

    • ОС, платформа и версия (Windows, Linux, macOS, x86, ARM).

    • Версия интерпретатора, компилятора, SDK, среды выполнения, менеджера пакетов и т.д.

    • Входные данные и полученный результат.

    • Можете ли вы надёжно воспроизвести проблему? Воспроизводится ли она на старых версиях?

Как мне отправить хороший отчет об ошибке?

Примечание

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

Мы используем GitHub Issues для отслеживания ошибок. Если вы столкнулись с проблемой:

  • Откройте новый Issue. На этом этапе не нужно присваивать ему метки.

  • Объясните ожидаемое и фактическое поведение.

  • Предоставьте как можно больше контекста и опишите шаги для воспроизведения, чтобы проблему можно было воссоздать. Лучше всего изолировать её и создать минимальный тестовый пример.

  • Предоставьте информацию, которую вы собрали в предыдущем разделе.

После того, как задача будет создана:

  • Команда проекта присвоит задаче соответствующую метку.

  • Член команды попытается воспроизвести проблему. Если шагов нет или они не приводят к результату, команда попросит вас предоставить их и пометит задачу как needs-repro. Такие задачи не будут рассматриваться до тех пор, пока проблема не будет воспроизведена.

  • Если проблема будет воспроизведена, она будет помечена как needs-fix (и, возможно, другими метками, например critical), после чего её сможет взять в работу любой желающий.


Предложение улучшений

Этот раздел поможет вам отправить предложение по улучшению Argenta, включая как новые функции, так и незначительные улучшения. Следование этим рекомендациям поможет мейнтейнерам и сообществу лучше понять вашу идею.

Перед отправкой предложения по улучшению

  • Убедитесь, что вы используете последнюю версию.

  • Внимательно прочтите документацию и убедитесь, что предлагаемая функциональность ещё не реализована (возможно, через конфигурацию).

  • Выполните поиск, чтобы проверить, не предлагалось ли это улучшение ранее. Если да, добавьте комментарий к существующей задаче.

  • Определите, соответствует ли ваша идея масштабу и целям проекта. Вам предстоит убедительно доказать её пользу. Мы хотим видеть функции, которые будут полезны большинству пользователей. Если ваша идея ориентирована на узкий круг, рассмотрите возможность создания плагина.

Как мне отправить хорошее предложение по улучшению?

Предложения по улучшению отслеживаются в GitHub Issues.

  • Используйте чёткий и описательный заголовок, чтобы идентифицировать предложение.

  • Предоставьте пошаговое и подробное описание предлагаемого улучшения.

  • Опишите текущее поведение и объясните, какое вы ожидали увидеть вместо этого и почему. Здесь же можно указать, какие альтернативы вам не подходят.

  • Приложите скриншоты или видео, которые помогут продемонстрировать шаги или указать на часть, к которой относится предложение.

  • Объясните, почему это улучшение будет полезно большинству пользователей Argenta. Вы также можете указать на другие проекты, которые решили эту проблему и могут послужить источником вдохновения.


Ваш первый вклад в код

Не знаете, с чего начать? Посмотрите на задачи с метками good first issue и help wanted в нашем репозитории на GitHub. Они хорошо подходят для новичков.

Чтобы начать, настройте локальное окружение для разработки, следуя этим шагам.

  1. Сделайте форк репозитория Argenta на GitHub.

  2. Клонируйте ваш форк на локальную машину:

    git clone https://github.com/<ВАШ_НИКНЕЙМ>/Argenta.git
    cd Argenta
    
  3. Создайте и активируйте виртуальное окружение.

    # Для macOS/Linux
    python3 -m venv .venv
    source .venv/bin/activate
    
    # Для Windows
    python -m venv .venv
    .venv\Scripts\activate
    
  4. Установите зависимости проекта, включая инструменты для разработки.

    pip install -e .[dev]
    
  5. Создайте новую ветку для вашей функции или исправления. Используйте описательное имя, например fix/login-bug или feat/new-widget.

    git switch -c your-new-branch-name
    
  6. Внесите свои изменения. Напишите код и не забудьте добавить или обновить тесты.

  7. Запустите тесты, чтобы убедиться, что все работает корректно.

    python -m pytest tests
    
  8. Сделайте коммит, следуя нашему руководству по стилю, и отправьте изменения в ваш форк.

    git add .
    git commit -m "feat(widget): add the new super widget"
    git push origin your-new-branch-name
    
  9. Откройте Pull Request из вашей ветки в ветку main официального репозитория. Предоставьте чёткое описание проблемы и вашего решения. Укажите номер связанной задачи, если она есть.


Улучшение документации

Хорошая документация крайне важна. Мы используем Sphinx для её генерации из исходных файлов в директории docs/. Мы приветствуем любые улучшения: от исправления опечатки до написания нового раздела.

Примечание

Мы поддерживаем документацию на двух языках: русском и английском.

Важно

Для инкапсуляции различных команд, необходимых для настройки и запуска проекта мы используем just, он же фигурирует в различных примерах в документации, поэтому рекомендуем вам установить его

Для улучшения документации вы можете следовать процессу, похожему на внесение вклада в код:

  1. Убедитесь, что ваше окружение для разработки настроено, как описано в разделе Ваш первый вклад в код.

  2. Перейдите в директорию с документацией.

    cd docs
    
  3. Внесите изменения в русскую версию документации (docs/index.rst и/или docs/root/*).

  4. Чтобы собрать документацию локально в режиме автоматического ребилда и увидеть изменения, выполните:

    just live-ru
    
  5. Откройте 127.0.0.1:8000 в браузере, чтобы просмотреть сгенерированную документацию.

  6. После завершения работы над русской версией необходимо создать английский перевод:

    just update-langs
    
  7. После обновления шаблона обновите файлы перевода, расположенные в docs/locales/en/LC_MESSAGES/.

  8. Когда изменения будут готовы, сделайте коммит и откройте Pull Request. Используйте префикс docs: в сообщении коммита.


Руководства по стилю

Сообщения коммитов

Мы следуем спецификации Conventional Commits. Это делает историю проекта более читаемой и позволяет автоматически генерировать журнал изменений.

Каждое сообщение коммита состоит из заголовка, тела и нижнего колонтитула.

<тип>(<область>): <тема>

[опциональное тело]

[опциональный нижний колонтитул]

<тип> должен быть одним из следующих:

  • feat: Новая функция для пользователя.

  • fix: Исправление ошибки для пользователя.

  • docs: Только изменения в документации.

  • style: Изменения, не влияющие на смысл кода (пробелы, форматирование и т.д.).

  • refactor: Изменение кода, которое не исправляет ошибку и не добавляет новую функцию.

  • perf: Изменение кода, улучшающее производительность.

  • test: Добавление недостающих тестов или исправление существующих.

  • chore: Изменения в процессе сборки или вспомогательных инструментах и библиотеках.

Примеры

Простое исправление: fix: correct typo in user authentication flow

Новая функция с областью видимости: feat(api): add new endpoint for user profiles


Присоединяйтесь к команде проекта

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

Активные члены сообщества могут стать членами команды. Обычно это включает:

  • Постоянный вклад в виде качественного кода и документации.

  • Помощь другим пользователям с их вопросами и проблемами.

  • Проверку Pull Request’ов от других участников с конструктивной обратной связью.

Если вы заинтересованы в том, чтобы стать постоянным членом команды, лучший способ — быть активным и полезным участником сообщества. Существующие мейнтейнеры заметят ваши усилия и могут связаться с вами.