OP-I3.4 The E3SM Code Development Process
Abstract
The E3SM phase 1 Software Engineering group established processes and tools for code development of our new Earth system model. Our goals were to establish a process that allows for high productivity of model development across a large dispersed team while maintaining a trusted, working code base, all with an eye to long-term agility and sustainability. We established a distributed version control workflow through a set of “integrators” that provides a scalable way to do code development, ensure code quality, and triage problems. Our procedure includes a multi-layered testing strategy to balance frequent commits of new features while also keeping confidence that the model is running correctly on all of the targeted computational resources. The testing framework is based on the Case Control System from CIME, the Common Infrastructure for Modeling the Earth, which was rewritten in python by E3SM and CESM developers during phase 1. Where possible, we looked to adopt common Open Source software tools to minimize the software maintenance burden and decrease the learning curve for future E3SM software engineers, including: git, Github Issues, Jenkins, CDash, slack, and Python. In this talk we will present our set of tools and processes, discuss improvements that are in the works, and solicit suggestions for future.