We welcome all contributions to OpenPenny. If you are unsure about anything, please feel free to open an issue or submit a pull request regardless. We value every contribution, and we do not want a long list of guidelines to discourage participation.
For contributors who prefer more structure, this document outlines practices that help us review and merge changes efficiently.
OpenPenny is a mono-repository consisting of four main components:
- Active Mode
- Passive Mode
- Build System
- Testing Suite
All components share a single version number, defined by the repository’s git tags.
When reporting a bug or unexpected behaviour, please:
- Ensure you are testing against the latest released version.
- Provide clear, reproducible steps and any necessary data.
- Include relevant OpenPenny logs.
- Add appropriate labels when applicable.
- Ensure an issue exists for the work you intend to do and comment when you begin to avoid duplication.
- Use the PR template (
.github/pull_request_template.md) and keep scope focused. - Include build/test notes in the PR (e.g.,
cmake -S . -B build && cmake --build build,ctest --test-dir build). - Follow existing code style; run
clang-formatfor C++ where applicable. - Update docs when flags/config/behaviour change.
- For security issues, do not open a public issue; email as per
SECURITY.md.