How to Contribute
Contribution workflow — development setup, running the tests, and building the documentation.
Development setup
Here is a short short summary on how to fork and clone the repository, set up a development environment, and run the tests.
- Go to algorithiq/monoprop to fork and clone the repository.
- Clone the project to your local machine:
git clone https://github.com/Algorithmiq/monoprop.git- Change the directory to the project root:
cd monopropThe repository's DevContainer provides a ready-made development environment.
Alternatively, set up a local development build — prerequisites,
the editable uv build of the Python bindings (with or without MPI),
the standalone C++ build, and verifying the install — as described
in Building from source.
The sections below cover the parts specific to contributing: running the tests and building the documentation.
Running the tests
Running the Python and C++ test suites --- with and without MPI --- is documented in Building from source.
Documentation
To build the documentation locally:
just serve-docs # live-reloading dev server at http://localhost:3000
just build-docs # full static build → docs/out/The rendered site is written to docs/out/. See Documenting monoprop for guidelines on writing documentation pages, the API reference, and tutorial notebooks.
To submit your contribution
- Go to algorithiq/monoprop to fork the repository. Then, clone the project to your local machine:
git clone https://github.com/your-namespace/monoprop.git- Change the directory to the project root:
cd monoprop- Set up a development environment as described in Development setup.
- Create a branch for the feature you are working on.
- Commit locally and push your changes to your forked repository. Make sure to follow the coding style and conventions used in the project.
- Write tests for your changes and ensure that all tests pass before submitting your pull request.
- And finally, submit a pull request to the main repository. Make sure to provide a clear description of your changes and any relevant information for the reviewers.