Files
2026-07-13 12:31:04 +08:00

104 lines
5.4 KiB
Markdown

# Contributing to OOMWOO
Thanks for your interest. OOMWOO is an open-source robot vacuum you build
yourself, and it's at a very early stage. That's the best time to get involved,
the foundations are still being laid and your input can shape the direction.
The project is built *module by module* so many people can work in parallel.
Browse the [module list in the README](../README.md#requests-for-contributions),
and see [ARCHITECTURE.md](ARCHITECTURE.md) for how the pieces fit together.
## Ways to help right now
You don't need to be a roboticist to contribute:
- *Ideas and feedback* — open a [Discussion](https://github.com/makerspet/oomwoo/discussions)
about features, design choices, or what would make you build one.
- *Code* — firmware, ROS2 packages, Home Assistant integration.
- *Hardware* — 3D-printable chassis design, mechanical parts, PCB.
- *Documentation* — build guides, wiring diagrams, troubleshooting notes.
- *Testing* — once there's something to build, real-world build reports are gold.
- *Spread the word* — star the repo, share your build, post a demo.
## Getting started
1. *Pick a module.* Browse the
[module list in the README](../README.md#requests-for-contributions) and choose a
hardware or software module. Software and simulation modules can start
immediately; hardware modules wait on the interface specs in
[ARCHITECTURE.md](ARCHITECTURE.md). Read the module's `README.md` so you know
the contract.
2. *Start a conversation first.* Claim or ask about the module in its
[Issue](https://github.com/makerspet/oomwoo/issues) or
[Discussion](https://github.com/makerspet/oomwoo/discussions) before writing
code, so we align on the approach and avoid wasted effort.
3. *Build it in your own repo.* For code and simulation modules, develop your
package in your **own public repository** — you own it, version it, and keep the
credit. Build against the ROS2 interface contract in
[SOFTWARE_INTERFACES.md](SOFTWARE_INTERFACES.md) so your work stays interoperable
with other modules. (Docs and small reference material are handled differently —
see below.)
4. *Submit a pointer PR.* Add a link to your repo in the module's entry with a
one-line description. It's small, easy to review, and lets several
implementations of the same module sit side by side. Keep the PR focused.
5. *Iterate in the open.* Modules are swappable — the best implementation surfaces
over time, with the maintainer having the last call. A design that isn't
selected is still a useful fallback.
## How contributions are structured
OOMWOO keeps the core small and lets the community grow around it:
- *Canonical / reference code stays first-party.* [oomwoo-one](https://github.com/makerspet/oomwoo-one)
(robot description + sim), [oomwoo-install](https://github.com/makerspet/oomwoo-install)
(dev environment), and the `kaiaai_*` packages are maintained by the project so the
out-of-the-box build always works.
- *Module implementations (code) live in your repo.* You build a competing
implementation of a module — a sim, a navigation stack, a behavior — in your own
repository and submit a *link*. The project features accepted work from the
module's page, credited to you. When a contribution is *featured*, we pin a
specific commit or tag (and may fork it into the makerspet org) so the reference
build stays reproducible even if the upstream repo moves.
- *Docs, specs and small reference material stay in-tree.* Part specifications,
datasheets, STEP-model sourcing notes, PCB notes, and benchmarks are lightweight
and best kept alongside the project — contribute those under
`contributions/<module>/<your-username>/` as files in a PR.
Why links for code? You keep ownership, credit, and freedom to iterate; the project
stays lean and avoids absorbing third-party code and its licensing; and multiple
implementations of a module can coexist and be compared. The shared
[SOFTWARE_INTERFACES.md](SOFTWARE_INTERFACES.md) contract is what keeps
independently-built modules compatible.
## Hardware contributions
For CAD and mechanical work, please include source files (not just exported STLs)
where possible, so others can modify your design. Note the tool and version you
used. If your change affects the bill of materials, mention it in the PR. Each
hardware module must stay within the mechanical/electrical interfaces in
[ARCHITECTURE.md](ARCHITECTURE.md).
*Safety:* battery, charging, motor-driver, and mains-adjacent modules require a
maintainer safety review before merge. Include a hazard note in your submission.
## Code style
Conventions are still being established. For now: keep it simple, readable, and
consistent with the surrounding code. ROS2 packages should follow standard ROS2
layout and naming. We'll formalize linting and style as the codebase grows.
## Licensing
By contributing, you agree that your contributions are licensed under the
project's [Apache License 2.0](../LICENSE). Hardware design files will be released
under an open hardware license (to be finalized); contributions of hardware
files are made on that same open basis.
## Community and conduct
Be respectful, helpful, and welcoming. We want OOMWOO to be an easy, friendly
place for makers of every skill level. Harassment or hostility isn't tolerated.
Questions? Open a [Discussion](https://github.com/makerspet/oomwoo/discussions?discussions_q=)
or join us on [Discord](https://discord.gg/3y2JKz5T25).