# Contributing to OpenPRoT

Thank you for your interest in contributing to the OpenPRoT project!

Detailed guidelines for contributing, including our development setup, coding style, and formal RFC process, can be found in our documentation:

*   **[Development Process](docs/src/development-process.md)**: Details on the formal RFC process for large changes and our standard requirements for pull requests.
*   **[Contributing Guidelines](docs/src/contributing.md)**: Setup instructions, license agreements, and code of conduct.

## Quick Start

1.  **Fork** the repository.
2.  **Clone** your fork.
3.  **Set up** the environment (we use [Bazel](https://bazel.build/) and [Pigweed](https://pigweed.dev/)).
4.  **Create** a branch for your changes.
5.  **Submit** a Pull Request.

For large changes, please follow the RFC process described in the [Development Process](docs/src/development-process.md) document.
