Developer Access Policy

Developer access to the NWChem source tree branches in svn has been divided into four tiers:

NWChem Core Developer Team: Developer has full svn access to release and development branches of the NWChem source tree. Owns and is responsible for one or more modules.

Trusted Developer: Developer may be internal or external to PNNL but has full svn access to release and development branches of the NWChem source tree. May own or be responsible for one or more modules. This group is expected to involve a small number of people.

Developer: Developer may be internal or external to PNNL and has selected svn access to the development branch of the NWChem source tree. Each Developer closely coordinates code contributions with the assigned Point of Contact (POC) from the NWChem Core Developer Team, primarily the Core Developer owning the module in which the contributions will reside. If the development leads to a new module, the NWChem Core Developer Team will assign a POC with responsibility for the new module.

Contributor: Contributor may be internal or external to PNNL and has no access to the development branch of the NWChem source tree. Contributor’s code will be incorporated by the Point of Contact from the NWChem Core Developer Team. This constitutes the main mechanism for external users for contributing developments to NWChem.

New potential developers can contact members of the NWChem Core Developer Team directly or “apply” through the NWChem web site. Prospective developers will be discussed, voted on, and assigned the level of developer access by the NWChem Core Developer Team. Before contributions from this new developer can be incorporated into NWChem, this person will have to provide written feedback that the contributions can be released within NWChem under the ECL 2.0 Open Source License. A (Trusted) Developer will receive the appropriate access to svn. If a Developer consistently incorporates code outside the scope agreed to with the Point of Contact that negatively affects the development tree access to svn can be revoked.

Development Contribution Requirements

All new functionality or capability contributions require:

Proper documentation in the user manual

QA Test Cases that adequately test the added functionality

Proposed new modules and tasks, and their impact on existing modules and functionality need to be documented for review. New modules or tasks will require agreement from the full NWChem Core Developer Team before they can be added.

Programming Model

The programming model in is based on modular APIs. NWChem consists of the programming languages:

FORTRAN77 and FORTRAN90 (Niri and Marat to add restrictions).

C and C++. Only simple constructs should be used in C++ (Niri and Marat to add restrictions).

Memory Allocation will be done through the MA and GA memory infrastructure.

Global Arrays Toolkit and MPI for parallel programming.

OpenMP directives and CUDA/OpenCL.

Python scripts can be uploaded into the contrib directory. Bindings to additional functionality require QA and documentation.

Testing of development version

Code will be build nightly on a Redhat Linux64 Platform using gfortran and gcc.

Code will be tested nightly against QA suite.

Twice a year coverage analysis of QA suite is performed using gfortran tools.