EMOTIA / CONTRIBUTING.md
Manav2op's picture
Upload folder using huggingface_hub
25d0747 verified
# 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
1. **Fork the Repository**
- Create a fork of the repository on GitHub
- Clone your fork locally
2. **Set Up Development Environment**
```bash
git clone https://github.com/your-username/emotia.git
cd emotia
pip install -r requirements.txt
```
3. **Create a Feature Branch**
```bash
git checkout -b feature/your-feature-name
```
4. **Make Your Changes**
- Write clear, concise commit messages
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
5. **Run Tests**
```bash
pytest backend/tests/ -v
```
6. **Submit 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).