Contributing
OpenRoIS is a community-driven open-source project, and contributions of every size are welcome.
Ways to Contribute
| Contribution | Where to start |
|---|---|
| Report a bug or request a feature | Open an issue |
| Add components for a new robot or avatar | Write components and adapters |
| Implement a basic RoIS component | Pick a planned component from the component status |
| Improve the SDKs or the engine | Pick an item from the roadmap |
| Improve this documentation | Use the Edit this page link at the bottom of any page |
Components for new platforms are the natural entry point: they need no change to the core, and they immediately widen what every OpenRoIS application can control.
Before Opening a Pull Request
- Read the contributing guide for code style, testing, and commit conventions.
- Open an issue first for larger changes, so the design can be discussed before the work.
- Base your branch on
dev, which is where development happens. - Add tests for new behavior, and update the changelog of each package you touch.
The Critical Rule for Types
RoIS types flow in one direction: Python models, then JSON Schema, then TypeScript and C#.
Edit the Python models in interfaces/python and regenerate. Never edit generated files by
hand. See the type pipeline.
Conventions
- Commit messages follow Conventional Commits.
- Code review follows Conventional Comments.
- Python code targets Python 3.12 or later, with strict type checking.
- TypeScript code uses strict mode and ES modules.
- Changes to interface types must stay traceable to the normative RoIS 2.0 files.
License of Contributions
OpenRoIS is licensed under the Apache License 2.0. By contributing, you agree that your contributions are licensed under the same terms.