Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Current »

The goal of the ACME Code Development Process is to achieve high developer productivity towards the improvement of the ACME earth system model. A degree of formality is needed because of the large size of the ACME team, the geographic distribution of the team, and large scope of the ACME project, particularly when including collaborations.

The process is meant to promote the quality of the ACME model along many dimensions: high-quality science, verified implementations, high-performing implementations, portability to DOE computer architectures, and maintainability/extensibility by those other then the original developers. The process intends to give individuals and small teams the ability to independently develop new features and algorithms, yet with a clear path to incorporation into the ACME model. The ACME Software Engineering (SE) team will help orient and guide new collaborators, but the expectation is that collaborators (as well as ACME developer team members) achieve a level of expertise in code practice that can be sustained and maintained across the team without requiring SE-team intervention. 

Main steps of the ACME code development process:

  1. Code development should begin from the head of the master branch or most recent release branch of ACME from the github repository
  2. Code should be of high enough quality to be readable, modifiable, and maintainable by others. 
  3. Code development should follow ACME standards for using git, e.g. preparing a separate commit for each stand-alone contribution along with a well-formed commit message.
  4. Developers must run the ACME test suite to verify that their development has not unintentionally changed the code behavior, and all new development must be accompanied by tests to protect the new feature against future developments.
  5. Code development should be incorporated into, or rebased to, the ACME code base at least every few months (since ACME has no resources to reconcile code that has been on diverging development paths).
  6. For eventual inclusion of a new feature or algorithm into the ACME Model, documentation of the main steps of the ACME Code Review process should be created:
    1. A design document (or paper) detailing the equations/algorithms that are being implemented
    2. Verification evidence that supports that the implementation is correct
    3. Performance analysis and data showing the expected and measured performance impact of the new feature
    4. Validation evidence that the feature matches observational data
  • No labels