Contribute

This outlines the APSIM review process for all contributions to GitHub.

Step 1 Developer raises a GitHub Issue

  • Describe the issue and functionality required with an emphasis on “Why” the change is required i.e. the use-case.
  • Raise the issue early (well before development) to allow input from others.
  • For a user interface defect, create a small video that demonstrates the problem.
  • Ensure code conforms to the Issue guidelines

Step 2 Issue is reviewed by software team

The software team will:

  • Review the issue for clarity
  • Check to see if it is a duplicate of an existing issue.
  • Optionally tag @APSIMInitiative/reference-panel if issue might be of interest to the Reference Panel.

Step 3 Developer raises a GitHub Pull Request (PR)

  • Ensure the PR conforms to the PR guidelines
  • The developer must link to an issue. Use working on #issue or resolves #issue)
  • Ensure the PR matches the Issue
  • The build/test system will run automatically and set a green/red (pass/fail) status.
  • The developer may need to push changes multiple times to resolve errors.
  • When development is complete, the developer adds a Ready for Review label.

Step 4 High Level Review by software team

The software team will:

  • Add High Level Review label
  • Ensure the PR matches the Issue
  • Suggest design improvements (e.g. missing converter)
  • Ask for additional tests if necessary
  • Ensure PR conforms to the PR guidelines

This review may take several iterations. Once the team is satisfied, a low level review can take place.

Step 5 Low Level Review

The software team will:

  • Perform a full code review
  • Initiative a Co-pilot review
  • Suggest style guideline fixes
  • Review the tests
  • Review any changes in statistics
  • Check for inadvertent changes in statistics
  • Check for inadvertent changes in code

If this is a software change only * The software team will merge once resolved.

Else if a minor science change e.g. addition to test datasets or simple changes or corrections to model or addition of new outputs * Tag @APSIMInitiative/reference-panel FYI * The software team will merge the PR within 3 business days.

Else if this is a significant change to science code or data sets e.g. a new model or significant changes to a published model. * The software team will tag @APSIMInitiative/reference-panel for additional review * Move to Step 6.

Step 6 Reference Panel Review

The software team will:

  • Add Reference Panel Review label to PR
  • Contact the Reference Panel coordinator to put a PR review on the agenda for the next meeting
  • The software team will assist the developer to ensure all code, tests, documentation, stats should be ready for review by the Reference Panel.
  • Most of the meaningful interactions could happen on GitHub prior to the meeting.
  • The Reference Panel will review the changes and make suggested improvements.
  • Once completed, the process will return to Step 5.

Further details can be found in Science contributions