Contributing to OmniPaxos

Thanks for showing interest in improving OmniPaxos! All contributions (small or big) are welcomed and highly appreciated.

Issues

For bug reports and feature requests, please create an issue following the appropriate template. Questions and other general discussions related to OmniPaxos should be posted as a GitHub discussion.

Pull Requests

Pull requests are the way to make concrete changes to the code, documentation, and other things related to the OmniPaxos repository. Before implementing a new feature or a big change, please first create an issue that describes the motivation and goal of it. This enables others to give feedback and guidance that will make the PR more likely to get merged.

Commands

Before making a PR, please make sure that your branch passes the local checker:

./check.sh

This runs a check for formatting and all tests using the default features. Since OmniPaxos has quite a few feature flags, please make sure that you run tests with the appropriate features:

cargo test --features <your_features>

Documentation

Any feature that is public and exposed to users must be documented. The documentation should describe the feature and provide examples of how it can be used.

The documentation lives in docs and is automatically rendered to the OmniPaxos website when a new commit is pushed to the master branch.

The structure of the docs are defined in structure.yaml and can be modified to add new pages or re-order pages. The tags field is optional but indexes the page so that it can be found via the search box on the website.

upper-level-menu:
    doc-title:
      path: "Relative-path-of-doc-file"
      tags: [ "tag1", "tag2" ]	    # optional field

Cross-references

To make a cross-reference in the documentation, please make sure to remove the .md suffix from the relative path. For instance, to make a cross-reference from docs/omnipaxos/compaction.md to docs/omnipaxos/logging.md:

// in docs/omnipaxos/compaction.md
This is a [cross-reference](../logging) from Compaction to Logging.

Furthermore, to make a cross-reference to a parent page i.e., an index.md, please use the parent name instead:

// in docs/omnipaxos/compaction.md
This is a [cross-reference](../omnipaxos) from Compaction to index.md.