Contributing to PISM

Bug reports, contributions of code, documentation, and tests are always appreciated.

You will need a GitHub account and some familiarity with Git1.

Please see Submitting bug reports for bug reporting guidelines.


By submitting code, the contributor gives irretrievable consent to the redistribution and modification of the contributed source code as described in the PISM’s open source license.

Contributions are preferred via pull requests to

  1. Fork PISM’s repository.

  2. Create a branch that will contain your changes.

  3. Implement proposed changes.

    1. Make changes to the code or documentation (or both).

    2. Test your changes.

    3. Add verification or regression tests (optional but strongly encouraged).

    4. Update documentation, if necessary.

    5. Update the change log CHANGES.rst. If your contribution contains a bug fix, please describe the bug and its effects.

  4. Create a pull request and make sure to allow edits from maintainers.

    Every time you push your code to GitHub CircleCI will

    • build it with pedantic compiler settings, treating all compiler warnings as errors

    • run make test in the build directory.

    Please make sure all tests pass (you will get an e-mail if there was a failure).

If you are planning a large contribution we encourage you to open an issue at or e-mail us at and interact with us frequently to ensure that your effort is well-directed.

When working on a large contribution it is essential to stay in touch with PISM’s maintainers.

We urge you to use a version control system and give PISM maintainers access to a repository containing your code. We realize that your group’s policy may make it impossible to put the code in a public repository. However, it is very easy to set up a private repository instead.


Working in isolation will lead to a waste of many person-hours of effort once your work is ready to be merged into PISM.

See sections listed below for various technical details.



Please see Git introduction for PISM developers for a brief introduction and Git documentation for more.

Previous Next