8.4 KiB
8.4 KiB
Contributing
Спасибо за интерес к Quoter! 🎉
Мы приветствуем вклад от сообщества. Этот документ содержит руководство по участию в разработке проекта.
Как внести свой вклад
1. Сообщить о баге
Если вы нашли баг, создайте issue с:
- Кратким описанием проблемы
- Шагами для воспроизведения
- Ожидаемым и фактическим поведением
- Версией Rust, Redis, и других зависимостей
- Логами (если применимо)
2. Предложить новую функциональность
Для предложения новой функциональности:
- Опишите проблему, которую решает ваше предложение
- Предложите решение
- Обсудите альтернативы
- Укажите приоритет
3. Внести код
Подготовка
- Fork репозиторий
- Clone ваш fork локально
- Создайте feature branch:
git checkout -b feature/amazing-feature
Разработка
-
Следуйте стандартам кода:
cargo fmt cargo clippy -
Добавьте тесты для новой функциональности
-
Обновите документацию если необходимо
-
Проверьте сборку:
cargo build cargo test
Commit и Push
-
Создайте commit с описательным сообщением:
git commit -m "feat: add amazing feature" -
Push в ваш fork:
git push origin feature/amazing-feature -
Создайте Pull Request
Стандарты кода
Rust
- Следуйте Rust Style Guide
- Используйте
cargo fmtдля форматирования - Используйте
cargo clippyдля проверки стиля - Документируйте публичные API
Commit Messages
Используйте Conventional Commits:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Типы:
feat:- новая функциональностьfix:- исправление багаdocs:- изменения в документацииstyle:- форматирование кодаrefactor:- рефакторингtest:- добавление тестовchore:- обновление зависимостей
Примеры:
feat: add user quota management API
fix(auth): handle expired tokens properly
docs: update API documentation
style: format code with cargo fmt
Тестирование
- Unit тесты для всех новых функций
- Интеграционные тесты для API endpoints
- Тесты производительности для критических участков
- Минимальное покрытие кода: 80%
Документация
- Обновляйте README.md если необходимо
- Добавляйте комментарии к сложному коду
- Документируйте API изменения
- Обновляйте примеры использования
Процесс Pull Request
Создание PR
- Заполните шаблон Pull Request
- Опишите изменения подробно
- Укажите связанные issues
- Добавьте скриншоты если применимо
Code Review
- Два approval требуются для merge
- CI/CD должен пройти успешно
- Code coverage не должен уменьшиться
- Безопасность проверяется автоматически
После Merge
- Feature branch удаляется автоматически
- Release создается для значительных изменений
- Документация обновляется
Настройка среды разработки
Требования
- Rust 1.70+
- Redis 6.0+
- Git
Установка
# Fork и clone
git clone https://github.com/YOUR_USERNAME/quoter.git
cd quoter
# Установка зависимостей
cargo build
# Настройка pre-commit hooks
cargo install cargo-husky
cargo husky install
Локальная разработка
# Запуск Redis
docker run -d -p 6379:6379 redis:7-alpine
# Настройка переменных окружения
cp .env.example .env
# Отредактируйте .env
# Запуск приложения
cargo run
# Запуск тестов
cargo test
Структура проекта
quoter/
├── src/ # Исходный код
│ ├── main.rs # Точка входа
│ ├── app_state.rs # Состояние приложения
│ ├── auth.rs # Аутентификация
│ ├── core.rs # API ядра
│ ├── handlers/ # HTTP обработчики
│ ├── lookup.rs # Поиск файлов
│ ├── overlay.rs # Оверлеи
│ ├── s3_utils.rs # S3 утилиты
│ └── thumbnail.rs # Миниатюры
├── docs/ # Документация
├── tests/ # Интеграционные тесты
├── Cargo.toml # Зависимости
└── README.md # Основная документация
Роли в проекте
Maintainers
- Code review всех PR
- Release management
- Architecture decisions
- Community management
Contributors
- Feature development
- Bug fixes
- Documentation
- Testing
Reviewers
- Code review assigned PRs
- Quality assurance
- Performance review
Коммуникация
Issues
- Используйте labels для категоризации
- Assign issues к себе если работаете над ними
- Update статус регулярно
Discussions
- GitHub Discussions для общих вопросов
- RFC для значительных изменений
- Architecture для архитектурных решений
Code Review
- Будьте конструктивными
- Объясняйте причины изменений
- Предлагайте альтернативы
- Отвечайте на комментарии
Безопасность
Отчеты о уязвимостях
Для критических уязвимостей:
- НЕ создавайте публичный issue
- Отправьте email на security@example.com
- Опишите уязвимость подробно
- Предложите решение если возможно
Безопасность кода
- Не коммитьте секреты
- Валидируйте входные данные
- Используйте безопасные зависимости
- Проверяйте код на уязвимости
Лицензия
Внося код в проект, вы соглашаетесь с тем, что ваш вклад будет лицензирован под MIT License.
Благодарности
Спасибо всем контрибьюторам, которые помогают сделать Quoter лучше! 🙏
Способы поддержки
- Code contributions
- Bug reports
- Feature requests
- Documentation improvements
- Community support
- Financial support (если применимо)
Контакты
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: maintainers@example.com
- Chat: [Discord/Slack] (если есть)
Спасибо за ваш вклад в Quoter! 🚀