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

    git clone https://github.com/your-username/emotia.git
    cd emotia
    pip install -r requirements.txt
    
  3. Create a Feature Branch

    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

    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).