This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Участие

Спасибо за интерес к участию в проекте. Это руководство описывает, как участвовать, что мы принимаем и с чего начать.

Способы участия

Issues (без настройки)

  • Отчёты об ошибках - Что-то сломалось? Откройте отчёт об ошибке с шагами воспроизведения.
  • Запросы функций - Есть идея? Начните обсуждение, чтобы сообщество могло высказаться и проголосовать за неё.
  • Проблемы с переводом - Заметили неверный или отсутствующий перевод? Откройте issue о переводе.
  • Проблемы с документацией - Что-то не так в документации? Откройте issue о документации.

Код (требует CLA)

Мы принимаем pull request'ы для:

ТипПроцесс
Исправления ошибокОткройте PR напрямую (сошлитесь на issue, если он есть)
Новые переводыОткройте PR напрямую (см. руководство по переводу)
Улучшения документацииОткройте PR напрямую
Улучшения покрытия тестамиОткройте PR напрямую
Новые инструменты или функцииСначала начните обсуждение; мейнтейнер превращает одобренные идеи в отслеживаемый issue до того, как вы начнёте писать код
Рефакторинг или изменения архитектурыСначала начните обсуждение и дождитесь одобрения мейнтейнера перед написанием кода

Что мы не принимаем

  • Изменения в CI/CD-пайплайнах, конфигурации релизов или конфигурации линтера/компилятора
  • PR'ы без подписанного Contributor License Agreement
  • PR'ы с изменениями более чем на 400 строк (разбивайте большую работу на меньшие PR'ы)
  • Функции, которые не были предварительно обсуждены и одобрены
  • Изменения в packages/ai/ без предварительного обсуждения

Contributor License Agreement

Прежде чем мы сможем принять ваш первый PR, вы должны подписать наше индивидуальное CLA. Это одноразовое требование.

Почему: SnapOtter распространяется под двойной лицензией (AGPLv3 + коммерческая). CLA предоставляет нам право распространять ваш вклад под обеими лицензиями. Вы сохраняете полное авторское право на свою работу.

Как: Когда вы откроете свой первый PR, бот CLA Assistant оставит комментарий со ссылкой. Нажмите на неё, ознакомьтесь с соглашением и подпишите его своей учётной записью GitHub. Это займёт 30 секунд.

Если вы вносите вклад от имени работодателя и он сохраняет права на интеллектуальную собственность в отношении вашей работы, свяжитесь с [email protected], чтобы оформить корпоративное CLA перед отправкой.

Начало работы

Предварительные требования

  • Node.js 22+
  • pnpm 9+
  • Python 3.11+ (только для AI-инструментов)
  • Docker (опционально, для полного интеграционного тестирования)

Настройка

bash
# Fork and clone
git clone https://github.com/<your-username>/snapotter.git
cd snapotter

# Start Postgres + Redis for local dev
docker compose -f docker-compose.dev.yml up -d

# Install dependencies
pnpm install

# Start dev servers (web on :1349, API on :13490)
pnpm dev

Запуск проверок

Перед отправкой PR убедитесь, что все проверки проходят локально:

bash
pnpm lint          # Biome lint + format check
pnpm typecheck     # TypeScript across monorepo
pnpm test          # Vitest unit + integration tests

Процесс pull request

  1. Сделайте форк репозитория и создайте ветку от main (feat/my-feature или fix/issue-123)
  2. Вносите изменения сфокусированными, пригодными для ревью коммитами, используя conventional commits
  3. Добавьте или обновите тесты для своих изменений
  4. Запустите pnpm lint && pnpm typecheck && pnpm test локально
  5. Откройте PR против main и заполните шаблон
  6. Подпишите CLA, если будет предложено
  7. Дождитесь прохождения CI и ревью от мейнтейнера

Ожидания по ревью

  • Мы стремимся отвечать на PR'ы в течение 7 дней
  • Небольшие, сфокусированные PR'ы проходят ревью быстрее
  • Если вы не получили ответа в течение 7 дней, оставьте комментарий с упоминанием в треде
  • Мы можем запросить изменения, предложить другой подход или закрыть PR, если он не соответствует направлению проекта

После того как ваш PR будет принят

Ваш вклад войдёт в следующий релиз и будет упомянут в списке изменений.

Хорошие первые задачи

Ищете, над чем поработать? Загляните в наши хорошие первые задачи, подходящие для новичков, или в help wanted для более крупных задач, где мы будем рады помощи сообщества.

Стиль кода

  • Biome отвечает за форматирование и линтинг (двойные кавычки, точки с запятой, отступ в 2 пробела)
  • Pre-commit-хук автоматически запускает biome check --write на staged-файлах
  • Если линтер ругается, исправляйте код (не изменяйте конфигурацию Biome)
  • ES-модули везде (import/export)
  • Conventional commits: feat:, fix:, refactor:, docs:, test:, chore:

Полные детали архитектуры смотрите в руководстве разработчика.

Безопасность

Не открывайте публичный PR или issue для уязвимостей безопасности. Сообщайте о них приватно через GitHub Security Advisories или по email [email protected]. Полные детали смотрите в SECURITY.md.

Вопросы?