Thank you for considering contributing to RexOS! We welcome contributions from everyone.
- Be respectful and inclusive
- Help create a welcoming environment
- Accept constructive criticism gracefully
- Focus on what's best for the community
Before creating bug reports, please check existing issues. When creating a bug report, include:
- Description: Clear description of the bug
- Steps to Reproduce: Step-by-step instructions
- Expected Behavior: What should happen
- Actual Behavior: What actually happens
- Environment: Device model, OS version, etc.
- Logs: Relevant log output if available
Enhancement suggestions are welcome! Please include:
- Use case: Why is this enhancement useful?
- Description: Detailed description of the feature
- Mockups: UI mockups if applicable
- Alternatives: Alternative solutions considered
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Test your changes thoroughly
- Format your code:
cargo fmt - Lint your code:
cargo clippy - Commit with clear messages:
git commit -am 'Add amazing feature' - Push to your fork:
git push origin feature/amazing-feature - Open a Pull Request
<type>(<scope>): <subject>
<body>
<footer>
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting)refactor: Code refactoringperf: Performance improvementstest: Adding testschore: Maintenance tasks
Example:
feat(hal): add support for RG353V analog sticks
Implement analog stick reading for RG353V using GPIO.
Includes calibration and dead zone support.
Closes #123
See DEVELOPMENT.md for detailed setup instructions.
rexos/
├── core/ # Core system components (Rust)
├── services/ # System services (Rust)
├── scripts/ # Shell scripts
├── docs/ # Documentation
└── tests/ # Tests
- Follow Rust API Guidelines
- Use
rustfmtfor formatting - Use
clippyfor linting - Add documentation comments (
///) for public APIs - Write unit tests for new functionality
- Keep functions small and focused
- Use shellcheck for validation
- Add comments for complex logic
- Use functions for reusable code
- Handle errors explicitly
- Test on target devices
# Run all tests
cargo test
# Run specific test
cargo test test_name
# Run with output
cargo test -- --nocapture
# Run on specific target
cross test --target aarch64-unknown-linux-gnu- Test on actual devices when possible
- Document device-specific behavior
- Include device model in test reports
- Update README.md for user-facing changes
- Update docs/ for technical changes
- Add inline comments for complex code
- Update CHANGELOG.md (if applicable)
We especially welcome contributions in:
- Hardware Support: Adding new device support
- Emulator Integration: Optimizing emulators
- UI/UX: Frontend improvements
- Documentation: Guides and tutorials
- Testing: Hardware testing on various devices
- Performance: Optimization work
- Localization: Translations
- Open a discussion on GitHub
- Join our Discord/Matrix (links coming soon)
- Email: (coming soon)
Contributors will be recognized in:
- README.md Contributors section
- Release notes
- About page in the UI
Thank you for contributing! 🎮