Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: mention code style. Add placeholders for coding standards.

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, high-quality code, 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. 

...

  1. Code development should begin from the master branch or most recent release branch of ACME from the github repository, and take place on a feature branch
  2. Code should be of high enough quality to be readable, modifiable, and maintainable by others
  3. New code in an existing routine should follow the style of the surrounding code.
  4. Brand new code should follow the recommended ACME coding standards (TBD).
  5. For eventual inclusion in the ACME model, the development should document the main steps of the ACME Code Review process:
    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. One or more tests added to the ACME testing system to protect the new feature against future developments
    4. Performance analysis and data showing the expected and measured performance impact of the new feature
    5. Validation evidence that the feature matches observational data
  6. Code development should be incorporated into, or rebased ontoto, the ACME code base every few months, and developers must verify that the ACME tests still pass on this development branch (ACME has no resources to reconcile code that has been on diverging development paths for a year or more).

...