Thank you for your interest in contributing to ro-Control! This document explains how to get involved.
- Code of Conduct
- How to Contribute
- Branch Strategy
- Commit Message Format
- Development Setup
- Pull Request Process
- Translations
- Reporting Bugs
Please read and follow our Code of Conduct. We are committed to providing a welcoming and respectful environment for everyone.
You can contribute in several ways:
- Bug reports — Open an issue using the bug report template
- Feature requests — Open an issue using the feature request template
- Code contributions — Fix a bug or implement a feature
- Translations — Add or improve language support
- Documentation — Improve docs, README, or code comments
We use a structured branching model:
main ← Stable, release-ready code only. Never push directly.
dev ← Active development. All features merge here first.
feature/* ← New features (branched from dev)
fix/* ← Bug fixes (branched from dev)
release/* ← Release preparation (branched from dev)
Always branch from dev, not main.
git checkout dev
git pull origin dev
git checkout -b feature/your-feature-nameWe follow Conventional Commits:
<type>: <short description>
| Type | When to use |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
refactor |
Code change that doesn't add/fix |
test |
Adding or updating tests |
chore |
Build system, CI, dependencies |
style |
Formatting, whitespace (no logic change) |
Examples:
feat: add real-time GPU temperature monitoring
fix: crash when no NVIDIA GPU is detected
docs: update build instructions
chore: update CMake minimum version to 3.22
| Component | Minimum |
|---|---|
| GCC | 13+ |
| CMake | 3.22+ |
| Qt | 6.6+ |
sudo dnf install cmake extra-cmake-modules gcc-c++ \
qt6-qtbase-devel \
qt6-qtdeclarative-devel \
qt6-qttools-devel \
qt6-qtwayland-devel \
kf6-qqc2-desktop-style \
polkit-develgit clone https://github.com/Project-Ro-ASD/ro-Control.git
cd ro-Control
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
make -j$(nproc)
./ro-control# Format your code (clang-format)
find src \( -name "*.cpp" -o -name "*.h" \) -print0 | xargs -0 clang-format -i
# Run tests
cd build && ctest --output-on-failure- Fork the repository
- Create a branch from
dev:git checkout -b feature/your-feature - Make your changes with clear commits
- Push to your fork:
git push origin feature/your-feature - Open a Pull Request targeting the
devbranch (notmain) - Fill in the PR template completely
- Wait for review — we aim to respond within 72 hours
PRs to main will be rejected. All contributions go through dev first.
Recommended PR checklist:
- Keep scope focused to one feature/fix/theme
- Update docs when user-visible behavior changes
- Update translations when adding or changing UI strings
- Include before/after screenshots for UI changes
- Run
ctest --test-dir build --output-on-failurelocally
ro-Control uses the Qt Linguist pipeline for UI localization.
Translation rules:
- Use
qsTr(...)for QML strings andtr(...)for C++ strings - Keep English as the source language in code
- Update
.tsfiles underi18n/ - Verify the UI at 980x640 and at a larger desktop size
- Include screenshots if a translation materially changes layout
Recommended workflow:
sudo dnf install qt6-qttools-devel
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
lupdate src -ts i18n/ro-control_en.ts i18n/ro-control_tr.ts
linguist i18n/ro-control_tr.ts
cmake --build buildWhen adding a new language:
- Copy
i18n/ro-control_en.tstoi18n/ro-control_<locale>.ts - Add the new file to
TS_FILESinCMakeLists.txt - Translate all entries
- Verify runtime locale loading and layout integrity
Use the bug report template and include:
- Distribution / platform details
- GPU model (
lspci | grep -i nvidia) - Current driver version (
nvidia-smi) - Steps to reproduce
- Expected vs actual behavior
- Relevant terminal output,
coredumpctl info ro-control, or recent journal entries
For general setup questions, diagnostics help, or uncertainty about whether something is a bug, start with SUPPORT.md.