Skip to contents

Thank you for your interest in contributing to airGRiwrm! We welcome feedback, bug reports, and contributions to improve the package.

This guide outlines how to get involved and describes our contribution process, coding standards and the version release procedure.

Repository URLs:

The GitHub mirror is also the entry point for users who cannot access the INRAE Forge (for example, users outside the Renater federation who have no Forge account).


πŸ“Œ Before you start

  • Please open an issue to discuss any new feature or bug fix before starting development. This allows for discussion and coordination:
    • if you can access the INRAE Forge, open it on GitLab, the source of truth for the development;
    • otherwise, open it on the GitHub mirror β€” the maintainers track issues opened there.
  • Check existing issues and merge requests to avoid duplicating work.

πŸ’‘ How to contribute

  1. Open an issue (on GitLab if you have access to the INRAE Forge, otherwise on the GitHub mirror) describing the bug, enhancement, or new feature. Please provide enough context and, if applicable, a reproducible example.

  2. Once the issue is triaged and assigned to you (or you are the assignee), create a Merge Request (MR) and a new branch from the issue page and assign a reviewer.

  3. Make your changes following the tidyverse style guide. Ensure you:

    • add or update documentation using roxygen2
    • add or update tests in tests/testthat/
    • run devtools::check() and fix any issues
  4. Commit and push your changes to your branch:

    • try to keep each commit as consistent as possible to a simple task (feature, test, documentation, …)
    • comment your commits using the Conventional Commit specification
  5. When the work is done, trigger a review:

    • remove the β€œDraft” state on your MR and eventually contact the reviewer to trigger the review
    • respond to code reviews and adjust your MR as needed until it is approved and merged.

🌿 Branches and git conventions

  • dev is the development branch; all feature branches are merged into it.
  • master holds the released versions only (a master state equals the last CRAN release).
  • The maintainer is the sole merge decision-maker for master: MRs toward master are merged by the maintainer.
  • Direct commits on dev that do not change source code (docs-only or tests-only commits) carry a [skip ci] tag in the commit subject so that the CI dev-version auto-bump is not triggered.
  • The dev version number (X.Y.Z.90xx) is bumped automatically by the CI on every source-code commit to dev (a commit + tag vX.Y.Z.90xx are created by the pipeline); it is never set by hand.
  • Version tags created on GitLab are pushed to the GitHub mirror automatically by the github_tags CI job.

🎨 Coding style

We follow the tidyverse style guide.

Note on naming: there is no strict rule β€” the functions related to airGR follow the PascalCase convention of the airGR package, the other functions use camelCase; match the style of the existing code.

You can use the air package to format your code.


πŸ§ͺ Testing

All new features and bug fixes should include unit tests using the testthat framework.

Add tests in tests/testthat/, ideally in files named after the function or feature being tested.


πŸ“š Documentation

  • Use roxygen2 to document exported functions.
  • Run devtools::document() to update the NAMESPACE and .Rd files.
  • Keep examples simple, minimal, and reproducible.
  • Package documentation is written in English.
  • NEWS.md is generated by the maintainers just before each release, from the issues of the release milestone: you do not need to edit it per merge request.

πŸ“¦ Building and checking

Before submitting your merge request, please run: devtools::check()

Try to resolve all errors, warnings, and notes. Neither errors nor warnings are accepted on CI check.


βœ… Merge request checklist


πŸ“œ Code of Conduct

We are committed to providing a friendly and respectful environment. By contributing, you agree to follow the Contributor Covenant.


πŸš€ Version release procedure

The order of operations for a version vX.Y.Z release (the dev version is vX.Y.Z.90xx):

Pre-submission checks (CRAN)

Following the ThinkR prepare-for-cran checklist:


Thanks again for helping make airGRiwrm better!