How to Contribute

Contributions to Ratel are encouraged.

Please make your commits well-organized and atomic, using git rebase --interactive as needed. Check that all tests pass using make prove or make junit. If adding a new feature, please add or extend a test so that your new feature is tested.

In typical development, every commit should compile, be covered by the test suite, and pass all tests. This improves the efficiency of reviewing and facilitates use of git bisect.

Open an issue or RFC (request for comments) pull request to discuss any significant changes before investing time. It is useful to create a WIP (work in progress) pull request for any long-running development so that others can be aware of your work and help to avoid creating merge conflicts.

Write commit messages for a reviewer of your pull request and for a future developer (maybe you) that bisects and finds that a bug was introduced in your commit. The assumptions that are clear in your mind while committing are likely not in the mind of whomever (possibly you) needs to understand it in the future.

Give credit where credit is due using tags such as Reported-by: Helpful User <> or Co-authored-by: Snippet Mentor <>. Please use a real name and email for your author information (git config and If your author information or email becomes inconsistent (look at git shortlog -se), please edit .mailmap to obtain your preferred name and email address.

When contributors make a major contribution and support it, their names are included in the automatically generated user-manual documentation.

Please avoid “merging from upstream” (like merging ‘main’ into your feature branch) unless there is a specific reason to do so, in which case you should explain why in the merge commit. Rationale from Junio and Linus.

You can use make format to help conform to coding conventions of the project, but try to avoid mixing whitespace or formatting changes with content changes (see atomicity above).

By submitting a pull request, you are affirming the following.

Developer’s Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or

(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or

(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.

(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.


Ratel contains components authored by many individuals. It is important that contributors receive appropriate recognition through informal and academically-recognized credit systems such as publications. Status as a named author on the users manual and Ratel software publications will be granted for those who

  1. make significant contributions to Ratel (in implementation, documentation, conceptualization, review, etc.) and

  2. maintain and support those contributions.

Maintainers will do their best to notice when contributions reach this level and add your name to AUTHORS, but please email or create an issue if you believe your contributions have met these criteria and haven’t yet been acknowledged.

Authors of publications about Ratel as a whole, including DOI-bearing archives, shall offer co-authorship to all individuals listed in the AUTHORS file. Authors of publications claiming specific Ratel contributions shall evaluate those listed in AUTHORS and offer co-authorship to those who made significant intellectual contributions to the work.

Note that there is no co-authorship expectation for those publishing about use of Ratel (versus creation of new features in Ratel), but see the citing section and use your judgment regarding significance of support/advice you may have received in developing your use case and interpreting results.