Contributing to SimPEG

First of all, we are glad you are here! We welcome contributions and input from the community.

This document is a set of guidelines for contributing to the repositories hosted in the SimPEG organization on GitHub. These repositories are maintained on a volunteer basis.


Please do not create an issue to ask a question. You will get a faster response by posting on our mailing list:!forum/simpeg. If you prefer real-time chat, you can join our slack group at


When reporting an issue, please be as descriptive and provide sufficient detail to reproduce the error. Whenever possible, if you can include a small example that produces the error, this will help us resolve issues faster.

Suggesting enhancements

We welcome ideas for improvements on SimPEG! When writing an issue to suggest an improvement, please

  • use a descriptive title,
  • explain where the gap in current functionality is,
  • include a pseudocode sketch of the intended functionality

We will use the issue as a place to discuss and provide feedback. Please remember that SimPEG is maintained on a volunteer basis. If you suggest an enhancement, we certainly appreciate if you are also willing to take action and start a pull request!

Contributing new code

If you have an idea for how to improve SimPEG, please first create an issue and suggest an enhancement. We will use the issue as a place to discuss and make decisions on the suggestion. Once you are ready to take action and commit some code to SimPEG, please check out Getting Started for Developers for tips on setting up a development environment and Practices for a description of the development practices we aim to follow. In particular,

are aspects we look for in all pull requests. We do code reviews on pull requests, with the aim of promoting best practices and ensuring that new contributions can be built upon by the SimPEG community.


The contributed code will be licensed under SimPEG’s license ( If you did not write the code yourself, it is your responsibility to ensure that the existing license is compatible and included in the contributed files or you can obtain permission from the original author to relicense the code.