# Contributing to NowYouSeeMe Thank you for your interest in contributing to NowYouSeeMe! This document provides guidelines and information for contributors. ## ๐Ÿค How to Contribute We welcome contributions from the community in many forms: - **Bug Reports**: Help us identify and fix issues - **Feature Requests**: Suggest new features and improvements - **Code Contributions**: Submit pull requests with code changes - **Documentation**: Improve or add to our documentation - **Testing**: Help test the system and report issues - **Community Support**: Help other users on GitHub and Discord ## ๐Ÿ“‹ Before You Start ### Prerequisites - Familiarity with Python and C++ - Understanding of computer vision and signal processing concepts - Git and GitHub workflow knowledge - Basic understanding of SLAM and sensor fusion ### Development Environment 1. **Fork the Repository**: Create your own fork of the project 2. **Clone Your Fork**: `git clone https://github.com/your-username/NowYouSeeMe.git` 3. **Set Up Environment**: Follow the [Development Setup](docs/development.md) guide 4. **Create a Branch**: `git checkout -b feature/your-feature-name` ## ๐Ÿ› Reporting Bugs ### Before Reporting 1. **Check Existing Issues**: Search for similar issues in the [GitHub Issues](https://github.com/your-org/NowYouSeeMe/issues) 2. **Reproduce the Issue**: Ensure you can consistently reproduce the problem 3. **Check Documentation**: Verify the issue isn't covered in the [documentation](docs/) ### Bug Report Template ```markdown **Bug Description** A clear description of what the bug is. **Steps to Reproduce** 1. Go to '...' 2. Click on '...' 3. See error **Expected Behavior** What you expected to happen. **Actual Behavior** What actually happened. **Environment** - OS: [e.g., Ubuntu 20.04] - Python Version: [e.g., 3.9] - CUDA Version: [e.g., 11.6] - Hardware: [e.g., Intel 5300 WiFi card] **Additional Context** Any other context, logs, or screenshots. ``` ## ๐Ÿ’ก Suggesting Features ### Feature Request Template ```markdown **Feature Description** A clear description of the feature you'd like to see. **Use Case** How would this feature be used? What problem does it solve? **Proposed Implementation** Any ideas on how this could be implemented? **Alternatives Considered** What other solutions have you considered? **Additional Context** Any other context or examples. ``` ## ๐Ÿ”ง Code Contributions ### Code Style Guidelines #### Python - Follow [PEP 8](https://www.python.org/dev/peps/pep-0008/) style guide - Use type hints for function parameters and return values - Write docstrings for all public functions and classes - Keep functions focused and under 50 lines when possible ```python def process_csi_data(csi_packet: CSIPacket) -> CIRResult: """ Process CSI packet and convert to Channel Impulse Response. Args: csi_packet: CSI packet containing subcarrier data Returns: CIRResult containing delay and amplitude information Raises: ValueError: If CSI data is invalid """ # Implementation here pass ``` #### C++ - Follow [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) - Use meaningful variable and function names - Add comments for complex algorithms - Include error handling and logging ```cpp /** * @brief Process CSI data and convert to CIR * @param csi_data Input CSI data * @return CIR result with delay and amplitude * @throws std::runtime_error if data is invalid */ CIRResult processCSIData(const CSIData& csi_data) { // Implementation here } ``` ### Testing Requirements - **Unit Tests**: Write tests for new functionality - **Integration Tests**: Test component interactions - **Performance Tests**: For performance-critical code - **Documentation**: Update relevant documentation ### Pull Request Process 1. **Create Feature Branch**: `git checkout -b feature/your-feature` 2. **Make Changes**: Implement your feature or fix 3. **Write Tests**: Add tests for new functionality 4. **Update Documentation**: Update relevant docs 5. **Run Tests**: Ensure all tests pass 6. **Commit Changes**: Use clear commit messages 7. **Push to Fork**: `git push origin feature/your-feature` 8. **Create Pull Request**: Use the PR template below ### Pull Request Template ```markdown ## Description Brief description of changes. ## Type of Change - [ ] Bug fix - [ ] New feature - [ ] Documentation update - [ ] Performance improvement - [ ] Refactoring ## Testing - [ ] Unit tests pass - [ ] Integration tests pass - [ ] Performance tests pass - [ ] Manual testing completed ## Documentation - [ ] Updated relevant documentation - [ ] Added inline comments where needed ## Checklist - [ ] Code follows style guidelines - [ ] Self-review completed - [ ] Code is commented - [ ] Tests added/updated - [ ] Documentation updated ``` ## ๐Ÿ“š Documentation Contributions ### Documentation Guidelines - **Clear and Concise**: Write in clear, simple language - **Code Examples**: Include working code examples - **Screenshots**: Add visual guides where helpful - **Cross-References**: Link to related documentation - **Version Information**: Mark version-specific content ### Documentation Structure ``` docs/ โ”œโ”€โ”€ README.md # Main documentation index โ”œโ”€โ”€ installation.md # Installation guide โ”œโ”€โ”€ quickstart.md # Quick start guide โ”œโ”€โ”€ api/ # API documentation โ”‚ โ”œโ”€โ”€ README.md โ”‚ โ”œโ”€โ”€ ingestion.md โ”‚ โ””โ”€โ”€ ... โ””โ”€โ”€ ... ``` ## ๐Ÿงช Testing Guidelines ### Test Types 1. **Unit Tests**: Test individual functions and classes 2. **Integration Tests**: Test component interactions 3. **Performance Tests**: Test timing and resource usage 4. **End-to-End Tests**: Test complete workflows ### Test Structure ```python # tests/test_cir_converter.py import pytest from src.rf_slam.cir_converter import CIRConverter, CIRConfig class TestCIRConverter: def test_csi_to_cir_conversion(self): """Test CSI to CIR conversion with synthetic data.""" config = CIRConfig() converter = CIRConverter(config) # Test implementation csi_data = generate_synthetic_csi() result = converter.process_csi_packet(csi_data) assert result is not None assert "cir" in result assert "peaks" in result ``` ## ๐Ÿš€ Release Process ### Version Numbers We follow [Semantic Versioning](https://semver.org/): - **MAJOR**: Incompatible API changes - **MINOR**: New functionality (backward compatible) - **PATCH**: Bug fixes (backward compatible) ### Release Checklist - [ ] All tests pass - [ ] Documentation updated - [ ] Changelog updated - [ ] Version numbers updated - [ ] Release notes written - [ ] Binaries built and tested ## ๐Ÿท๏ธ Labels and Milestones ### Issue Labels - `bug`: Something isn't working - `enhancement`: New feature or request - `documentation`: Documentation improvements - `good first issue`: Good for newcomers - `help wanted`: Extra attention needed - `priority: high`: High priority issues - `priority: low`: Low priority issues ### Milestones - **v1.1.0**: Next minor release - **v1.2.0**: Future features - **Backlog**: Long-term ideas ## ๐Ÿ“ž Getting Help ### Communication Channels - **GitHub Issues**: For bug reports and feature requests - **GitHub Discussions**: For questions and general discussion - **Discord**: For real-time chat and support - **Email**: For private or sensitive issues ### Mentorship - **New Contributors**: We're happy to mentor new contributors - **Code Reviews**: We provide detailed feedback on all contributions - **Documentation**: We help improve documentation contributions ## ๐ŸŽฏ Contribution Areas ### High Priority - **Performance Optimization**: Improve system latency and throughput - **Robustness**: Improve error handling and recovery - **Documentation**: Expand and improve documentation - **Testing**: Add more comprehensive tests ### Medium Priority - **New Features**: Add new capabilities and algorithms - **UI/UX**: Improve user interfaces and experience - **Integration**: Better integration with external tools - **Monitoring**: Enhanced system monitoring and diagnostics ### Low Priority - **Experimental Features**: Research and experimental algorithms - **Nice-to-Have**: Quality of life improvements - **Optimization**: Minor performance improvements ## ๐Ÿ™ Recognition We recognize and appreciate all contributions: - **Contributors**: Listed in the [CONTRIBUTORS.md](CONTRIBUTORS.md) file - **Code Contributors**: Automatically listed in GitHub - **Documentation Contributors**: Acknowledged in documentation - **Community Support**: Recognized in release notes ## ๐Ÿ“„ License By contributing to NowYouSeeMe, you agree that your contributions will be licensed under the [MIT License](LICENSE). --- Thank you for contributing to NowYouSeeMe! Your contributions help make this project better for everyone.