Thank you for your interest in contributing to GERTIE-Qt. This document outlines the process for proposing changes, reporting issues, and contributing code.
All contributors are expected to adhere to the Code of Conduct. Please read it before participating.
- Raspberry Pi 4B (for hardware testing)
- Python 3.9+
- Git
- Knowledge of PySide6 (for GUI work) or picamera2 (for camera work)
# Clone the repository
git clone https://github.com/your-org/GERTIE_Qt.git
cd GERTIE_Qt
# Create a development branch
git checkout -b feature/your-feature-name
# Install development dependencies
pip3 install --break-system-packages -e .
pip3 install ruff pytest pre-commit
# Install pre-commit hooks (recommended)
pre-commit installPre-commit hooks will automatically lint and format your code before each commit:
# Install hooks (one-time)
pre-commit install
# Run checks manually on all files
pre-commit run --all-files
# Uninstall hooks (if needed)
pre-commit uninstallSee Bug Report Template.
When reporting a bug, include:
- Environment — Pi model, OS version, Python version
- Steps to reproduce — Exact sequence that triggers the bug
- Expected behavior — What should happen
- Actual behavior — What does happen
- Logs — Output from
journalctl -u gertie-*.serviceortail qt_latest.log
Create a GitHub issue with:
- Title — Concise one-liner
- Motivation — Why this feature is needed
- Use case — Specific scenario it solves
- Proposed API — How you imagine using it
git checkout -b feature/descriptive-name
# or
git checkout -b fix/issue-number- Python style — PEP 8 (enforced by ruff)
- Imports — Organize as: stdlib, third-party, local
- Docstrings — One-liner for functions, full description for classes
- Type hints — Optional but encouraged for new code
Pre-commit hooks run automatically before each commit (if installed). You can also run checks manually:
# Pre-commit hooks will run these automatically
# But you can run them manually anytime:
ruff check .
ruff format .
# Run tests (if applicable)
pytest tests/
# Test on hardware
# Deploy to control1 and run through preflight checklisttype(scope): brief description
Detailed explanation if needed. Link issues:
Fixes #123
Relates to #456
Types: feat, fix, docs, style, refactor, test, chore
Scopes: gui, node, shared, camera, network, telemetry, tools
Example:
fix(camera): correct IMX477 exposure time range
The exposure time validation was rejecting valid values
in the 340–443µs range. Fixed bounds check to match
hardware capabilities.
Fixes #89
Create a pull request with:
- Title — Same as commit message
- Description — What changed and why
- Testing — How you verified the change
- Hardware tested — Which Pi models and cameras
- Address code review comments
- Maintain clean commit history (rebase if needed)
- Merges require approval from maintainers
All PRs are reviewed for:
- ✅ Does it fix the stated issue?
- ✅ Does it break any existing functionality?
- ✅ Is the code clear and maintainable?
- ✅ Are there any security concerns?
- ✅ Does it follow project conventions?
- ✅ Is it documented?
Do not create a public GitHub issue for security vulnerabilities.
Instead, email security@example.org with:
- Description of the vulnerability
- Steps to reproduce
- Proposed fix (if you have one)
We will respond within 48 hours and work with you to coordinate disclosure.
See SECURITY.md for more details.
Changes to code should include documentation updates:
- Docstrings — For all functions and classes
- README.md — If user-facing behavior changes
- docs/ — For architecture changes
- INSTALL.md — If deployment procedure changes
By contributing, you agree that your contributions are licensed under the same license as the project (MIT).
- Check GERTIE_KNOWLEDGE.md for architecture details
- Check REVIEW_ACTION_PLAN.md for development roadmap
- Open a discussion issue on GitHub
Thank you for contributing!