-
Notifications
You must be signed in to change notification settings - Fork 2
The Ideal Code Manager
A good code manager is critical because they can either improve or hinder development and collaboration. Here are the qualities / responsibilities of an ideal code manager (CM).
The CM:
- Is part of the main development team that sets the code management guidelines.
- Works with the specific community to:
- Set guidelines for branching, merging, and pull requests
- Set guidelines for coding practices
- Ensure that the rules are followed
- Issue regular public releases for the community at large
- Be the liaison with other groups to coordinate development activities
- Reports to the main science group (governance group) that owns the authoritative repository; the governance group sets the vision and assigns roles/tasks.
- Works with partners to ensure that the modeling system maintains portability across the accepted main development platforms for the modeling system.
- Works with developers and the governance group to evolve a testing framework to guarantee portability and robustness of the code.
- Justifies decisions clearly so they can stand up to scrutiny. The CM should be organized and maintain a well-documented repository (e.g., via wiki pages with instructions for developers and users, a User Guide, enforcement of documentation standards).
- Has the authority (delegated and backed by the governance group) to enforce uniform standards across the repository.
- Must be seen as an unbiased entity by the community.
CM Required Knowledge, Skills, and Abilities
- Good knowledge of the science within the component
- Good knowledge of repository coding languages and modern coding standards
- Bug fixing and testing skills
- Collaboration, communication, and conflict resolution skills
What is the difference between the code manager of an authoritative repository and a code manager of a designated developmental fork?
Ideally, the code managers of the authoritative repository and the respective development forks, together with the governance group, work as a team to ensure seamless development infrastructure for the advancement of the modeling systems. The rules of the road are laid down primarily by the code manager of the authoritative repository and the governance group. Code management of the authoritative repository is a full-time task that involves coordination of documentation development (making developers responsible for delivering code with documentation, ensuring there are no gaps in instructions, etc.), setting standards, ensuring timely public releases, and coordinating development activities across the community.
The code manager at a designated developmental fork may not be a full-time task (depending upon the number of developers who are engaged in the fork) and may be taken up as a task by one of the developers. However, this CM will still need to satisfy a large number of the qualities listed above. Note that while the ideal code manager clearly has many skills and responsibilities, in practice, an actual code manager with such capabilities will also likely be involved in actual science code development as well, with a scientific interest as part of being a well-rounded worker. Therefore, a real project under active development may require a code management team to maintain a healthy work environment.
Supported Platforms and Compilers
Development Roles and Processes
Conventions and Policies
Wiki Links
Applications (include workflow)
- UFS Short-Range Weather Application
- UFS Land Data Assimilation System
- UFS Medium-Range Weather Application
Models
- UFS Weather Model
- UFS Subseasonal to Seasonal Model
- UFS Hurricane Analysis and Forecast System Model
Utilities
- spack-stack - builds bundled UFS dependencies
- UFS_UTILS - UFS pre-processing utilities
- UPP - UFS post-processing utilities