Contributing¶
Contributions to HaLOS are welcome. Each component repository accepts pull requests independently.
Getting Started¶
- Set up the development workspace -- this also sets up the AI-assisted workflow
- Read the development workflow
- Find an issue to work on in the relevant repository
If you're using Claude Code or a similar AI assistant, you can ask it to survey open issues across repositories and suggest what to work on next.
Reporting Issues¶
Report bugs and feature requests on the appropriate GitHub repository:
- General / cross-cutting: halos-distro
- Image builds: halos-pi-gen
- Package manager UI: cockpit-apt
- Container app store: cockpit-container-apps
- Container packaging tools: container-packaging-tools
- Marine apps: halos-marine-containers
- mDNS publisher: halos-mdns-publisher
- Dashboard adapter: homarr-container-adapter
When reporting a bug, include:
- HaLOS image variant and version
- Steps to reproduce
- Expected vs actual behavior
- Relevant logs (from Cockpit Logs or
journalctl)
Submitting Changes¶
- Fork the repository
- Create a feature branch (
feat/description,fix/description) - Make your changes following the coding standards below
- Run tests and linting locally
- Submit a pull request with a clear description
See Development Workflow for the full process.
Coding Standards¶
General¶
- Write self-documenting code; comments explain "why", not "what"
- Keep functions small and focused
- No magic numbers -- use named constants
- Validate inputs at system boundaries
Language-Specific¶
| Language | Linter | Formatter | Type Checker |
|---|---|---|---|
| Python | ruff | ruff | pyright or ty |
| TypeScript | ESLint | Prettier | tsc (strict mode) |
| Rust | clippy | rustfmt | (built-in) |
| Shell | shellcheck | -- | -- |
Testing¶
- All new code should have tests
- Test behavior, not implementation details
- Run tests locally before pushing:
./run test
Debian Packaging¶
- Never edit
debian/changelogdirectly -- use./run bumpversion - Include a version bump for package-affecting changes
- Test package installation and removal on a test device
Communication¶
- Discussions: GitHub Discussions for questions, ideas, and general conversation
- Issues: For specific bugs and feature requests
- Pull Requests: For code contributions