First off, thanks for taking the time to contribute! 🎉
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
Before creating bug reports, please check existing issues. When creating a bug report, include:
- Clear title describing the issue
- Steps to reproduce the behavior
- Expected behavior vs what actually happened
- Screenshots if applicable
- Environment info: OS, hardware (RP2040/STM32), NAND chip model
Use the bug report template when opening an issue.
Feature requests are welcome! Please:
- Check if the feature was already requested
- Describe the use case clearly
- Explain why this would be useful to most users
- Fork the repository
- Create a branch from
main:git checkout -b feature/amazing-feature - Make your changes following our coding standards
- Test your changes thoroughly
- Commit with clear messages:
git commit -m 'Add amazing feature' - Push to your fork:
git push origin feature/amazing-feature - Open a Pull Request
- Rust 1.70+ (
rustup update stable) - Node.js 18+
- Tauri CLI (
cargo install tauri-cli)
# Clone your fork
git clone https://github.com/YOUR_USERNAME/openflash.git
cd openflash/openflash
# Install frontend dependencies
cd gui && npm install && cd ..
# Run in development mode
cargo tauri dev
# Run tests
cargo test -p openflash-coreopenflash/
├── core/ # Shared Rust library (ECC, ONFI, analysis)
├── gui/ # Tauri desktop app
│ ├── src/ # React frontend
│ └── src-tauri/ # Rust backend
└── firmware/ # MCU firmware (RP2040, STM32F1)
- Follow Rust API Guidelines
- Run
cargo fmtbefore committing - Run
cargo clippyand fix warnings - Add tests for new functionality
- Document public APIs with doc comments
- Use functional components with hooks
- Follow existing code style
- Use TypeScript strictly (no
any) - Keep components small and focused
- Use clear, descriptive commit messages
- Reference issues when applicable:
Fix #123 - Keep commits atomic (one logical change per commit)
cargo test -p openflash-core- Run
cargo tauri dev - Click "Mock" to enable mock device
- Test all operations
Firmware requires actual hardware for testing. Document your test setup in PRs.
- 🔌 Hardware: Testing with different NAND chips
- 📝 Documentation: Tutorials, wiki pages
- 🌍 Translations: UI localization
- 🧪 Testing: Edge cases, stress testing
- 🎨 Design: UI/UX improvements
- 🔧 Features: See Issues
Contributors are recognized in:
- README.md contributors section
- Release notes
- GitHub contributors page
- Open a Discussion
- Join our community chat (coming soon)
Thank you for contributing! 🔥