Developing E3SM

The goal of the E3SM Code Development Process is to achieve high developer productivity while improving the Energy Exascale Earth system model. A degree of formality is needed because of the large size of the E3SM team, its geographic distribution, and large scope of the E3SM project, particularly when including collaborations.

E3SM development workflow uses Git with topic branches and pull requests.   We use a modified version of gitworkflows(7)

Basic steps of the E3SM code development process

Detailed instructions are available on Confluence.

Code should be of high quality and be readable, modifiable, and maintainable by others.

  1. (from github) Create a fork and then clone the code.
  2. (on your development platform) Create a branch from master or a maintenance branch as appropriate.   Your github user name should start the branch name.   See branch name conventions.
  3. Commit your changes to the branch in logical units.
  4. Run the e3sm_developer test suite while developing your feature.
  6. Run e3sm_developer again when you are finished.  All tests should pass to the same extent as where you started the development.
  7. Push your finished branch to github.
  8. (on github) make a Pull Request  to add your feature.


Every feature should be developed on its own branch from master.   Ideally, branches should contain code development that is enough to be relevant to others, but simple enough that it can be called one feature (or perhaps a couple of highly-interdependent features).  You may want to make a series of branches to complete your work.

For how to contribute code or fix a bug 

Send this to a friend