CLIMADA Contribution Guide#

We welcome any contribution to CLIMADA and want to express our thanks to everybody who contributes.

What Warrants a Contribution?#

Anything! For orientation, these are some categories of possible contributions we can think of:

  • Technical problems and bugs: Did you encounter a problem when using CLIMADA? Raise an issue in our repository, providing a description or ideally a code replicating the error. Did you already find a solution to the problem? Please raise a pull request to help us resolve the issue!

  • Documentation and Tutorial Updates: Found a typo in the documentation? Is a tutorial lacking some information you find important? Simply fix a line, or add a paragraph. We are happy to incorporate you additions! Please raise a pull request!

  • New Modules and Utility Functions: Did you create a function or an entire module you find useful for your work? Maybe you are not the only one! Feel free to simply raise a pull request for functions that improve, e.g., plotting or data handling. As an entire module has to be carefully integrated into the framework, it might help if you talk to us first so we can design the module and plan the next steps. You can do that by raising an issue or starting a discussion on GitHub.

A good place to start a personal discussion is our monthly CLIMADA developers call. Please contact the lead developers if you want to join.

Why Should You Contribute?#

  • You will be listed as author of the CLIMADA repository in the AUTHORS file.

  • You will improve the quality of the CLIMADA software for you and for everybody else using it.

  • You will gain insights into scientific software development.

Minimal Steps to Contribute#

Before you start, please have a look at our Developer Guide.

To contribute follow these steps:

  1. Install CLIMADA following the installation instructions for developers.

  2. In the CLIMADA repository, create a new feature branch from the latest develop branch:

    git checkout develop && git pull
    git checkout -b feature/my-fancy-branch
    
  3. Implement your changes and commit them with meaningful and well formatted commit messages.

  4. Add unit and integration tests to your code, if applicable.

  5. Use Pylint for a static code analysis of your code with CLIMADA’s configuration .pylintrc:

    pylint
    
  6. Add your name to the AUTHORS file.

  7. Push your updates to the remote repository:

    git push --set-upstream origin feature/my-fancy-branch
    

    NOTE: Only team members are allowed to push to the original repository. Most contributors are/will be team members. To be added to the team list and get permissions please contact one of the owners. Alternatively, you can fork the CLIMADA repository and add this fork as a new remote to your local repository. You can then push to the fork remote:

    git remote add fork <your-fork-url>
    git push --set-upstream fork feature/my-fancy-branch
    
  8. On the CLIMADA-project/climada_python GitHub repository, create a new pull request with target branch develop. This also works if you pushed to a fork instead of the main repository. Add a description and explanation of your changes and work through the pull request author checklist provided. Feel free to request reviews from specific team members.

  9. After approval of the pull request, the branch is merged into develop and your changes will become part of the next CLIMADA release.

Resources#

The CLIMADA documentation provides a Developer Guide. Here’s a selection of the commonly required information:

Pull Requests#

After developing a new feature, fixing a bug, or updating the tutorials, you can create a pull request to have your changes reviewed and then merged into the CLIMADA code base. To ensure that your pull request can be reviewed quickly and easily, please have a look at the Resources above before opening a pull request. In particular, please check out the Pull Request instructions.

We provide a description template for pull requests that helps you provide the essential information for reviewers. It also contains a checklist for both pull request authors and reviewers to guide the review process.