Thank you for your interest in contributing to MeshC2! This document provides guidelines for contributing to this project.
Please note that this project is released with a Code of Conduct. By participating in this project you agree to abide by its terms.
- Use the GitHub issue tracker to report bugs or suggest features
- Before creating an issue, please search existing issues to avoid duplicates
- Include detailed information about your environment and steps to reproduce the issue
- For security vulnerabilities, please see our Security Policy
-
Fork the repository and create your branch from
main -
Install development dependencies:
git clone https://github.com/your-username/meshc2.git cd meshc2 python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
-
Run tests to ensure everything works:
python -m pytest tests/
-
Make your changes:
- Follow the existing code style and conventions
- Add tests for new functionality
- Update documentation as needed
- Ensure security best practices are followed
-
Test your changes:
# Run unit tests python -m pytest tests/ # Test installation (in a VM or container) ./install.sh # Interactive mode for testing # OR for automated testing: ./install.sh --upgrade-only # Skip prompts in CI/CD ./validate_install.sh
-
Commit your changes:
- Use clear, descriptive commit messages
- Follow conventional commit format when possible
- Sign your commits if possible
-
Submit a pull request:
- Provide a clear description of the changes
- Reference any related issues
- Include testing information
- Follow PEP 8 Python style guidelines
- Use meaningful variable and function names
- Include docstrings for all public functions and classes
- Comment complex logic and security-relevant code
This project handles remote command execution and device access. Please:
- Never commit secrets or credentials
- Validate all inputs thoroughly
- Use secure defaults in configuration
- Test security controls before submitting
- Follow principle of least privilege
- Write tests for new functionality
- Include both unit tests and integration tests
- Test with real hardware when possible
- Test installation and uninstallation procedures
- Update README.md for user-facing changes
- Update inline documentation and comments
- Include usage examples for new features
- Update installation instructions if needed
For full testing, you'll need:
- A Meshtastic-compatible device (Heltec, RAK, ESP32-based)
- USB cable for device connection
- Linux development environment (Ubuntu 20.04+ recommended)
For development without hardware:
- Use
use_real_device: falsein config.yml - Mock interface simulates device interactions
- Integration tests work without hardware
meshc2/
├── src/meshtastic_troubleshoot/ # Main application code
│ ├── components/ # Core service components
│ └── utils/ # Utility modules
├── config/ # Configuration templates
├── scripts/ # Service files and scripts
├── tests/ # Test suite
├── install.sh # Installation script
├── uninstall.sh # Removal script
└── validate_install.sh # Installation validation
- Update version numbers in relevant files
- Update CHANGELOG.md with new features and fixes
- Create a release branch
- Run full test suite including hardware tests
- Update documentation
- Create release notes
- Tag the release
- Open an issue for questions about contributing
- Check existing documentation in the repository
- Review the project's README.md for basic information
By contributing to MeshC2, you agree that your contributions will be licensed under the same MIT License that covers the project.