Thank you for your interest in contributing! This document covers the process for contributing code, reporting issues, and the legal terms.
- Fork the repository
- Clone your fork and create a branch:
git checkout -b feat/your-featureorfix/your-bug - Install dependencies: FFmpeg dev libraries, Rust stable toolchain
- Build:
cargo build - Test:
cargo test --all
cargo fmt --all # Format
cargo clippy --all-targets -- -D warnings # Lint (zero warnings)
cargo test --all # Tests
cargo doc --no-deps # Documentation buildsfeat/short-descriptionfor new featuresfix/short-descriptionfor bug fixesrefactor/short-descriptionfor refactoring
Write clear commit messages. Use conventional prefixes:
feat:new featurefix:bug fixrefactor:code restructuringchore:maintenance (deps, CI, docs)perf:performance improvement
- One PR per feature/fix
- PRs must pass CI (fmt, clippy, test, doc)
- Squash merge to main
- Reference the issue number:
Closes #123
The project is a Cargo workspace with nine crates:
- reco-core - GPU stitching engine (library, no I/O deps)
- reco-io - FFmpeg/GStreamer/libcamera/V4L2 backends
- reco-detect - AI detection (ORT, TensorRT, NCNN, CoreML)
- reco-autocam - AI camera control
- reco-calibrate - Stereo calibration
- reco-control - Input transport (keyboard, gamepad, mobile, WebSocket)
- reco-cli - CLI binary
- reco-gui - Slint desktop GUI
- reco-obs - OBS Studio source plugin
reco-core must remain a pure library with no I/O dependencies. Detection, encoding, and camera backends live in their respective crates.
- Use GitHub Issues
- Include: steps to reproduce, expected vs actual behavior, camera model, OS
- For performance issues: include frame count, resolution, GPU model, fps numbers
By submitting a pull request, you agree to the following terms:
-
You grant Mohamed Taha GUELZIM (the project maintainer) a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license to use, reproduce, modify, distribute, sublicense, and relicense your contribution in any form, including under proprietary licenses.
-
You represent that you have the right to grant this license and that your contribution is your original work.
-
This agreement allows the maintainer to offer the software under dual licensing (AGPL-3.0 for open source, commercial license for proprietary use) without requiring further permission from contributors.
-
Your contribution remains attributed to you in the git history.
By opening a pull request, you acknowledge that you have read and agree to these terms.
This project is licensed under AGPL-3.0.