Contributing to EMOTIA
Thank you for your interest in contributing to the EMOTIA project. We welcome contributions from the community and are grateful for your help in making this project better.
Code of Conduct
This project follows a code of conduct to ensure a welcoming environment for all contributors. By participating, you agree to:
- Be respectful and inclusive
- Focus on constructive feedback
- Accept responsibility for mistakes
- Show empathy towards other contributors
- Help create a positive community
How to Contribute
Reporting Issues
- Use the GitHub issue tracker to report bugs
- Provide detailed steps to reproduce the issue
- Include relevant system information and error messages
- Check if the issue has already been reported
Suggesting Features
- Use the GitHub issue tracker for feature requests
- Clearly describe the proposed feature and its benefits
- Consider if the feature aligns with the project's goals
- Be open to discussion and feedback
Contributing Code
Fork the Repository
- Create a fork of the repository on GitHub
- Clone your fork locally
Set Up Development Environment
git clone https://github.com/your-username/emotia.git cd emotia pip install -r requirements.txtCreate a Feature Branch
git checkout -b feature/your-feature-nameMake Your Changes
- Write clear, concise commit messages
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
Run Tests
pytest backend/tests/ -vSubmit a Pull Request
- Push your changes to your fork
- Create a pull request with a clear description
- Reference any related issues
Development Guidelines
Code Style
- Follow PEP 8 for Python code
- Use Black for code formatting
- Use Flake8 for linting
- Use MyPy for type checking
Testing
- Write unit tests for new functionality
- Maintain 90%+ test coverage
- Run the full test suite before submitting
- Test both positive and negative scenarios
Documentation
- Update docstrings for new functions
- Add comments for complex logic
- Update README.md for significant changes
- Document API changes
Security
- Run security scans before submitting
- Avoid committing sensitive information
- Use secure coding practices
- Report security issues through proper channels
Commit Guidelines
Commit Messages
- Use clear, descriptive commit messages
- Start with a verb in imperative mood
- Keep the first line under 50 characters
- Provide additional context in the body if needed
Examples
Fix memory leak in video processing
Add support for WebRTC streaming
Update documentation for API endpoints
Pull Request Process
Before Submitting
- Ensure all tests pass
- Update documentation
- Add appropriate labels
- Request review from maintainers
During Review
- Address reviewer feedback promptly
- Make requested changes
- Keep the conversation constructive
- Be open to suggestions
After Approval
- Maintainers will merge the pull request
- Your contribution will be acknowledged
- You may be asked to help with future related changes
Areas for Contribution
High Priority
- Bug fixes and security patches
- Performance improvements
- Documentation improvements
- Test coverage expansion
Medium Priority
- New features (with prior discussion)
- Code refactoring
- Tooling improvements
- Example applications
Low Priority
- Minor UI improvements
- Additional language support
- Community tools and integrations
Recognition
Contributors will be:
- Listed in the project contributors file
- Acknowledged in release notes
- Recognized for significant contributions
- Invited to join the core team for major contributions
Getting Help
If you need help:
- Check the documentation first
- Search existing issues and discussions
- Ask questions in GitHub discussions
- Contact the maintainers directly
License
By contributing to this project, you agree that your contributions will be licensed under the same license as the project (MIT License).