General Info

About wrfhelp

wrf-news list

WRF Workshop

WRF Tutorial

 

 

 

WRF Code Repository and Release Administration

Code Management Activity Levels

WRF Code Repository and Release Administration

 

This document describes the policies and procedures for maintaining the WRF code repository and for overseeing releases.  Those seeking details on submitting code to WRF may consult the document “Information for Code Contributors” on the procedures and requirements for contributing to WRF system.  The oversight, maintenance, and support of the WRF code is handled by the Mesoscale and Microscale Meteorology (MMM) Laboratory of NCAR.

 

A. WRF Committees

 

            1) Overview

WRF repository and release management is handled by two committees: the Developers’ Committee and the Release Committee.  The Developers’ Committee oversees additions to, and maintenance of, the repository, while the Release Committee oversees the new releases to the user community.

 

            2) Structures and Functions

 

                        a) Developers’ Committee (DC)

 

The Developers’ Committee keeps the WRF system code in order through, when required, review of proposed modifications and contributions to the repository.  Code contributors are required to perform testing, now largely automated, and provide information on their proposed code commits.  The automated set of tests on code modifications are conducted on pull requests (PRs) to the WRF GitHub repository.

 

                        b) Release Committee (RC)

 

The Release Committee oversees the scheduling, preparation, and issuance of updated WRF system code in the form of major releases.  It compiles a prospective list (the “release picture”) of additions or modifications (“candidate features”) offered by developers as contributions to a release.  Committee members serve as the points of contact with developers offering code for the release.  The committee monitors testing, progress, and issues with candidate features.  As the release cycle proceeds, the committee assesses which features can meet the release schedule given the status of their implementation and testing.

 

The Release Committee sets the release schedule, including the timetable for required notifications, code submissions, and release branch testing.  The Release Committee provides information on releases to the WRF user community at the annual WRF workshop.

 

The Release Committee has members from various groups involved in WRF code development and user support, and they serve as points of contact for the major areas of the WRF system, such as software and physics.  The Release Committee is chaired by a scientist in NCAR’s Mesoscale and Microscale Meteorology (MMM) Laboratory, as MMM is responsible for support of the primary WRF system to the community.

 

 

B. Repository and Release Management

 

            1) Repository

 

a) Definition, structure, and access

 

The WRF repository is the store of code constituting the WRF modeling system and software infrastructure (code and meta-code, build scripts, testing mechanisms and datasets, documentation, etc.), maintained under a software management system.  The repository is managed and maintained such that it always contains the most current, working, and theoretically-releasable revision of the WRF model, plus a fully-recoverable history of past revisions and developer notations.

 

The directory structure contains the trunk, which is the repository itself; tags, which are a series of development snapshots of the trunk; plus a number of branches.  Prior to a planned release date, a branch is created for the code to be released.  From the date of this cutting off of the release branch, the branch will only accept bugfixes and corrections for the code to be released.

 

The contents of the repository on Github are open to public download.  Any unsanctioned use of the repository code (such as accessing another scientist's branch, releasing new versions for which a user is not the author, etc.) is prohibited.

 

b) Responsibilities of the Developers’ Committee 

 

The Developers’ Committee oversees the management and maintenance of the WRF repository.

The purposes of the Developers’ Committee are as follows.

 

·      Shepherd new development

The Developers’ Committee provides an interface to outside developers and facilitates incorporation of new or enhanced features and functionalities in WRF.

 

·      Quality assurance and investment preservation

The Developers’ Committee ensures that the develop branch of WRF is in order and in principle releasable.

 

·      Process management

The Developers’ Committee is responsible for establishing and following processes for maintaining the WRF repository and for evaluating, incorporating, and assuring the quality of new features and functionalities.  DC members review PRs and the documentation required.

 

·      WRF Physics Review Panel interaction

The Developers' Committee communicates with the WRF Physics Review Panel when the panel has reviewed a proposed new physics package.  The panel provides a recommendation to the DC on whether to accept the package, and the DC makes the decision on whether to admit the new code.

 

It is a proposing developer’s responsibility to perform all required testing and provide all required documentation in proposing a commit.  The proposing developer must ensure that the proposed change is correct and that its effects on other parts of the model are described.  A developer whose code is impacted by a proposed commit may request a code review and may work with the originating developer to run tests to verify that the proposed change does no harm.  Disagreements about changes to scientific or forecast results must be resolved before code or code changes can be committed.  Developers have effective veto power over changes that affect aspects of the WRF system for which they have primary responsibility.

 

2) Releases

 

a) Responsibilities of the Release Committee

 

The WRF Release Committee oversees the process of major releases.  This includes scheduling; review of information on submitted features; review of the status of new code contributed or proposed; making determinations on release items; and coordination of release preparation, testing, and communication.  The Release Committee may determine that a major release is warranted based on the annual release cycle or on the needs of the user community.  The Release Committee sets the major release timeline and communicates release information to the WRF community.

 

                        b) Types

 

(i) Major

 

Major releases are made on an approximately annual basis.  Major releases reflect the addition of new and improved capabilities and, occasionally, significant structural changes warranting a new model version number.  With a major release, run-time options can change, and default behavior can be modified.

 

                                    (ii) Minor

 

Minor releases primarily address bug fixes.  Minor releases are determined and overseen by the director of wrfhelp, and their preparation and support are the responsibility of wrfhelp.  Minor release material usually consists of the modified routines or files and accompanying documentation or information posted on the “Known Problems” web page under the WRF users' site.  Most modifications to the source code in a minor release should fix software errors, provide code clean-up, or address a problem that justifies an immediate fix.  Information on bug fixes is posted on the web.

 

c) Nomenclature

 

Releases are numbered as Version a.b or a.b.c, and, in emergency situations, a.b.c.d.  The first digit reflects major restructuring, development, or upgrades.  As an example, a new version of WRF with a different leading digit might not ingest or correctly process data from a version of the code with a different leading digit. 

 

The second digit reflects a major release not amounting to a new version, typically done annually.  With changes to the second digit, the new version will offer new features, and there will be backward compatibility with older input files.  The new version may also modify the meaning of run-time options. 

 

The third digit reflects bug fixes/minor releases.  A release using a fourth digit would be a minor release issued to correct quickly a significant bug; these release are rare.

 

3) Activity status and release procedures

 

With respect to the typical annual cycle of major releases, there is baseline activity that occurs independent of any release-specific work and the pre-release period for release-directed code preparation.  Baseline activity includes the reviewing of proposed commits, integration of contributions, and PR and other testing.  PR testing is conducted via an automated system and is done to ensure accuracy and confidence in parallel results. 

 

The pre-release status period begins 5–6 months prior to a scheduled major release, when the major release cycle begins.  In this period the release schedule is determined, the release picture is compiled and regularly updated, and the committee and developers work toward the cutoff of the release branch and the branch code’s subsequent testing.

 

a)     Baseline activity

 

After a WRF major release, commits should be proposed to the develop branch, with automatic regression testing conducted on submission of PRs.  The purpose of this regression testing is to identify software errors (e.g., bit-for-bit differences) and failures to compile or run.  These tests are short and do not attempt to detect or analyze differences in the forecast skill.  Proposed code modifications are made via PRs to GitHub.  These include an explanation of the modification and list the touched files.

 

b) Pre-release activity

 

(i) Release minus 6 months (R-6m)

 

In this time frame the Release Committee (RC) has a first meeting to discuss the next major release.  The RC identifies a major release as a combination of candidate features and a proposed date.  The RC considers for the release those capabilities they have been notified of and that can be integrated into the repository prior to the branch cutoff.  The release picture is the list of features and modifications considered for the release.

 

(ii) Release minus 3–4 months (R-3-4 m)

 

In this period developers intending to contribute code for the next major release must have provided their code if they want it considered for inclusion in the release branch.  The code must conform to the WRF coding standards described in “Information for WRF Code Contributors".

 

At approximately the 3-month point, the release branch is cut off.  All new code and features to be included in the release must be in the repository at this time.  After the branch is made, the changes allowed to it are only those necessary for the release’s development, such as bug fixes or modifications for difficulties with new feature interaction.  Even with the release branch created, the develop branch remains open to commits.  Code proposed for commit after release branch cutoff is directed to the develop branch.

 

In this time frame, meetings of the Release Committee are held approximately every 2 weeks.

Checks on new features to be included in the release are discussed by the RC.  The decision to either (i) drop a feature that will not be ready within the schedule or (ii) adjust the release schedule so that a crucial feature is included in the release is made by the committee. 

 

(iii) Release minus 2 months (R-2m)

 

The RC may decide upon non-automated tests to review the forecast skill of the new release code.  Examples are case study runs.  As tests are run, the results are discussed at the committee meetings.

Within this period, the release branch code may be offered the code to friendly users and vendors for pre-release testing.

 

Except for the accommodation of bug fixes, in this period the branch remains frozen: only corrections for problems identified during testing on the code to be released may be introduced.  Errors introduced into existing code are fixed, while larger-scale restructuring is redirected to the trunk, which remains open to development.  Changes to documentation files and inline documentation, however, are freely accepted.

 

(vii) Release minus 2 weeks (R-2w)

 

The final modifications for code identification, documentation, and release readiness are committed.  The code is staged for final release.  The release preparation list for WRF user support includes web page updates, documentation updates, and user notification.

 

c) Release procedures

 

The plans and schedule for the next major release follow the initial Release Committee meeting in the R‒6 mos. timeframe.  These include a list of the significant candidate items and a timetable.

 

At the annual WRF Users’ Workshop, the previous major release is detailed in a presentation.  Any significant known plans for the next major release may be included in the talk as well.

 

 

4) Code Contribution

 

                        a) Baseline activity

 

New developments, code improvements, and contributions of bugfixes continue for the trunk between releases.  Code contributors are responsible for:

 

1)    ensuring their code has passed the automated testing, and correcting it until it has;

2)    ensuring that the code has been submitted with the required commit information and that the code conforms to the WRF coding standards;

3)    warning the Developers’ Committee about any limiting underlying assumptions or possible code conflicts; and

4)    documentation.

 

Contributors are responsible for supplying documentation on the code they provide, which may be in the form of a web page or adequate (as deemed by the DC) README files or inline documentation.

 

As described under the "WRF Physics Review Process" page (http://www2.mmm.ucar.ed/wr/users/physics_review.php), for proposed new physics packages the WRF Physics Review Panel must review the submitted materials.  It then makes a recommendation on whether to accept the new package.  This is simply a recommendation, and the DC has the final say.

 

                        b) Pre-Release Activity

 

(i) Release minus 3 months (R–3m)

 

In this period, all code sought to be considered for the release by developers should have been committed to the repository or be in submission in the form of PRs.  While there is no guarantee that any code will get into a given release, these requirements assist in the preparation of the release branch, which will be cut off at approximately R3 mos.  The code must conform to the requirements described in “Information for WRF Code Contributors" (http://www2.mmm.ucar.edu/wrf/docs/contrib_info.pdf).  It is the responsibility of the developers to make sure that the deadline is met.

 

By the release branch cutoff date all of the proposed new features for the release must have been put into the branch.  As the release gets nearer, general bug fixes or modifications to address issues uncovered in testing are still eligible for inclusion.  New items arriving after the branch cutoff date are simply proposed for commit to the trunk.

 

(ii) Release minus 1 month (R–1m)

 

In this stage the only acceptable changes are those pertaining to testing of the frozen code.  During this last month of testing, final results for additional architectures, case studies, and timing studies are considered.  The RC reviews the information to ascertain that the release is on schedule or that remedial action is required.

 

 

5/25

 



 
Home -- Model System -- User Support -- Doc / Pub -- Links -- Download -- WRF Real-time Forecast