Thank you for your interest in contributing to the Video Analyzer project! This guide outlines the process for making contributions through pull requests.
-
Read docs/DESIGN.md thoroughly to understand:
- The project's architecture
- Core components and their interactions
- Design decisions and rationale
- Implementation details
-
Familiarize yourself with the codebase:
- Review the project structure
- Understand the different modules
- Check existing features and implementations
-
Before creating a PR, start a discussion in the GitHub Discussions section:
- Outline your proposed changes
- Explain the motivation behind the changes
- Describe your planned implementation approach
- Wait for community feedback and maintainer input
-
Use the appropriate discussion category:
- "Ideas" for new features
- "Q&A" for questions about implementation
- "Show and Tell" for sharing prototypes
Once your proposal has been discussed and approved:
-
Fork the repository and create a new branch:
git checkout -b feature/your-feature-name
-
Follow the project's coding standards:
- Maintain consistent code style
- Add appropriate documentation
- Include type hints
- Write clear commit messages
-
Add tests for new functionality:
- Unit tests for individual components
- Integration tests for feature workflows
- Ensure all tests pass
-
Update documentation:
- Add/update docstrings
- Update relevant .md files
- Add examples if applicable
-
Before submitting:
- Ensure all tests pass
- Update documentation
- Add your changes to CHANGELOG.md
- Rebase on latest main branch
-
Create a pull request:
- Reference the discussion thread
- Provide a clear description of changes
- List any breaking changes
- Include testing steps
-
PR description should include:
- Link to the discussion thread
- Summary of changes
- Testing performed
- Screenshots/videos if UI changes
- Breaking changes (if any)
-
Maintainers will review your PR:
- Code quality
- Test coverage
- Documentation
- Design consistency
-
Address review feedback:
- Make requested changes
- Respond to comments
- Update tests if needed
-
Once approved:
- Squash commits if requested
- Ensure branch is up to date
- Wait for merge by maintainers
- Follow PEP 8 guidelines
- Use meaningful variable names
- Keep functions focused and concise
- Add type hints to function parameters
- Document complex logic
- Write tests for new features
- Update existing tests if needed
- Ensure test coverage
- Test edge cases
- Keep documentation up to date
- Use clear, concise language
- Include code examples
- Update README.md if needed
- Use clear, descriptive messages
- Reference issues/discussions
- Follow conventional commits format:
feat: add new feature X fix: resolve issue with Y docs: update contributing guidelines test: add tests for feature Z
If you need help:
- Check existing discussions
- Start a new discussion if needed
- Tag maintainers for urgent issues
By contributing, you agree that your contributions will be licensed under the project's apache License.