Contributing - Musfiq0/enhanced-screens-comparison GitHub Wiki
🤝 Contributing
Welcome to the Enhanced Screens Comparison project! We appreciate your interest in contributing and helping make video comparison better for everyone.
🌟 Ways to Contribute
🐛 Bug Reports
Help us improve by reporting issues you encounter:
- Use the issue tracker on GitHub
- Provide detailed information about the problem
- Include system information and error messages
- Steps to reproduce the issue
💡 Feature Requests
Suggest new features or improvements:
- Check existing issues to avoid duplicates
- Describe the use case and expected behavior
- Explain why the feature would be valuable
- Consider implementation complexity
📖 Documentation
Improve our documentation:
- Fix typos and grammar errors
- Add examples and use cases
- Improve clarity of instructions
- Expand wiki pages with detailed information
💻 Code Contributions
Contribute code improvements:
- Bug fixes and stability improvements
- New features and enhancements
- Performance optimizations
- Code quality improvements
🚀 Getting Started
1. Fork and Clone
# Fork the repository on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/enhanced-screens-comparison.git
cd enhanced-screens-comparison
# Add upstream remote
git remote add upstream https://github.com/Musfiq0/enhanced-screens-comparison.git
2. Set Up Development Environment
# Create virtual environment
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/Mac
# Install dependencies
pip install -r requirements.txt
# Install development tools (optional)
pip install black flake8 pytest mypy
3. Verify Setup
# Test the application
python comparev2.py --demo
python gui_app.py
# Run any existing tests
pytest # If tests are available
📋 Contribution Guidelines
Code Standards
Python Style
- Follow PEP 8 for Python code style
- Use type hints where applicable
- Write docstrings for functions and classes
- Keep functions focused and single-purpose
Code Formatting
# Format code before submitting
black comparev2.py gui_app.py
# Check code style
flake8 comparev2.py gui_app.py
# Type checking (optional but recommended)
mypy comparev2.py gui_app.py
Example Code Style
def process_video_frame(
video_path: str,
frame_number: int,
output_path: str,
crop_settings: Optional[Dict[str, int]] = None
) -> bool:
"""
Extract and process a single frame from video.
Args:
video_path: Path to the input video file
frame_number: Frame number to extract (0-based)
output_path: Path for the output screenshot
crop_settings: Optional crop configuration
Returns:
True if frame processed successfully, False otherwise
Raises:
FileNotFoundError: If video file doesn't exist
VideoProcessingError: If frame extraction fails
"""
try:
# Implementation here
return True
except Exception as e:
logger.error(f"Frame processing failed: {e}")
return False
Commit Guidelines
Commit Message Format
type(scope): brief description
Detailed explanation of the changes, if necessary.
Can span multiple lines.
- List specific changes if helpful
- Reference issue numbers with #123
- Explain why, not just what
Commit Types
- feat: New feature
- fix: Bug fix
- docs: Documentation changes
- style: Code style changes (formatting, etc.)
- refactor: Code refactoring
- test: Adding or updating tests
- chore: Build process, dependency updates
Examples
feat(gui): add drag and drop support for video files
Implements native drag and drop functionality using tkinterdnd2.
Users can now drag video files directly from Windows Explorer
into the application instead of using the file browser.
- Add tkinterdnd2 dependency
- Implement drop zone highlighting
- Auto-configure dropped videos
- Support multiple file drops
Closes #45
fix(processing): handle videos with corrupted frames
Improves error handling when videos contain corrupted or
unreadable frames. Now skips problematic frames and continues
processing instead of failing completely.
Fixes #67
Branch Strategy
Branch Naming
feature/description # New features
bugfix/issue-description # Bug fixes
docs/improvement # Documentation updates
refactor/component # Code refactoring
Example Workflow
# Create feature branch
git checkout -b feature/upload-retry-mechanism
# Make changes and commit
git add .
git commit -m "feat(upload): add retry mechanism for failed uploads"
# Push to your fork
git push origin feature/upload-retry-mechanism
# Create pull request on GitHub
🔧 Development Workflow
1. Issue First
- Check existing issues before starting work
- Create an issue for significant changes
- Discuss approach for complex features
- Get feedback before implementation
2. Development Process
# Keep your fork updated
git fetch upstream
git checkout main
git merge upstream/main
# Create feature branch
git checkout -b feature/your-feature
# Make changes, test, commit
git add .
git commit -m "descriptive commit message"
# Push and create PR
git push origin feature/your-feature
3. Testing Your Changes
# Test core functionality
python comparev2.py --demo
# Test GUI
python gui_app.py
# Test specific features
python comparev2.py # Interactive mode
# Build and test executable (if relevant)
python build_exe.py
dist\screenshot_comparison.exe --demo
4. Documentation Updates
- Update README.md if adding user-facing features
- Update wiki pages for detailed documentation
- Add code comments for complex logic
- Update requirements.txt if adding dependencies
📝 Pull Request Process
Before Submitting
- Code follows style guidelines
- Tests pass (if tests exist)
- Documentation updated if needed
- No merge conflicts with main branch
- Commit messages are clear
PR Description Template
## Description
Brief description of the changes and their purpose.
## Type of Change
- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
## Testing
- [ ] Tested on Windows 10/11
- [ ] GUI functionality verified
- [ ] CLI functionality verified
- [ ] No regressions in existing features
## Screenshots (if applicable)
Add screenshots for GUI changes or visual improvements.
## Checklist
- [ ] My code follows the style guidelines
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
## Related Issues
Fixes #(issue number)
Review Process
- Automated checks run automatically
- Manual review by maintainers
- Feedback and iteration if needed
- Approval and merge when ready
🎯 Contribution Ideas
Beginner-Friendly
- Fix typos in documentation
- Improve error messages with more helpful text
- Add crop presets for new streaming services
- Enhance tooltips and user guidance
Intermediate
- Add new video formats support
- Improve upload reliability with better error handling
- Add configuration presets for common workflows
- Enhance progress reporting with more detailed status
Advanced
- New processing backends integration
- Cross-platform support (Linux, macOS)
- Performance optimizations for large videos
- Advanced upload services integration
Specific Areas
Video Processing
- New backends: FFmpeg, ImageIO, etc.
- Quality improvements: Better scaling algorithms
- Performance: Parallel processing, memory optimization
- Format support: New video containers and codecs
User Interface
- Accessibility: Better keyboard navigation, screen reader support
- Usability: Improved workflows, better defaults
- Visual: Modern styling, better icons
- Features: Batch processing, template saving
Upload Integration
- New services: Additional comparison hosting platforms
- Reliability: Better error handling, retry logic
- Features: Collection management, metadata preservation
- Authentication: API key management, OAuth support
Documentation
- Tutorials: Step-by-step guides for common tasks
- Examples: Real-world use cases and configurations
- API docs: Comprehensive function and class documentation
- Troubleshooting: Common issues and solutions
🏆 Recognition
Contributors
All contributors are recognized in:
- README.md contributors section
- Release notes for significant contributions
- GitHub insights automatically track contributions
Types of Recognition
- Code contributors: Direct code improvements
- Documentation contributors: Docs, examples, tutorials
- Issue reporters: High-quality bug reports and feature requests
- Community helpers: Answering questions, helping users
📞 Getting Help
Where to Ask Questions
- GitHub Discussions: General questions and ideas
- GitHub Issues: Bug reports and feature requests
- Pull Request Comments: Code-specific questions
- Wiki Pages: Comprehensive documentation
Response Times
- Issues: We aim to respond within 48 hours
- Pull Requests: Initial review within 72 hours
- Questions: Community and maintainers help when available
Contact
- GitHub: Primary communication channel
- Issues: For bug reports and feature requests
- Discussions: For general questions and ideas
📜 Code of Conduct
Our Standards
- Be respectful and inclusive
- Focus on constructive feedback
- Help others learn and improve
- Respect different perspectives and experiences
Unacceptable Behavior
- Harassment or discriminatory language
- Personal attacks or inflammatory comments
- Spam or off-topic content
- Violation of others' privacy
Enforcement
- Issues are addressed promptly and fairly
- Consequences range from warnings to bans
- Appeals process available for disputed actions
Thank you for contributing to Enhanced Screens Comparison! Together, we make video comparison better for everyone. 🙏