Rubric#
Background#
This rubric has been developed to provide a common mechanism and process for evaluating the following aspects of software development efforts funded by WETO. The goals of the rubric are to:
Establish the current state of each software project
Give WETO and Lab leaders a sense for the portfolio strengths and weaknesses
Provide model owners an ability to identify their software needs
Empower projects to set software improvement milestones as part of their annual operating plans
Establish data for the trajectory of a software project over time
Rubric benefits#
A common software rubric for the WETO Stack provides:
A common method to evaluate project maturity and quality
For a given line item, or even a rubric report for an individual model is most directly meaningful to model owners
Across all models, the rubric captures the maturity and quality of the WETO Software Stack
A common language to talk about the state and needs of software projects between model owners and WETO managers
A development roadmap for planning
An understanding of software maturity and management of expectations for model users
Rubric structure#
The software grading rubric is structured as a set of criteria categorized into software quality topics. Each specific criteria is assigned a rating or “not applicable.” The dark to light color gradient rating system corresponds to Low, Medium, and High levels of satisfaction for that particular criteria. Since the needs of a particular software change as a function of the maturity level, current funding, target audience, size of the user base, and level of impact, a “priority level” is associated to each criteria to function as a subjective weighting of importance. In this system, most software projects will have a range of scores, and low or high are not necessarily good or bad. Instead, they are a holistic measure of software maturity and quality across the portfolio.
The topic areas currently included are:
Accessibility: How easy is it to obtain and install?
Usability: How easy is it to use?
Documentation: Is it well described?
Extendability: How easy is it for new developers to contribute?
Verification: How accurate are the results?
Community Health: How engaged are users?
The criteria for each topic area and the characteristics that warrant a Low, Medium, of High rating are described below. Software rubric scores for specific models within the WETO Stack are not provided here, as they are in flux for actively developed projects. However, the individual model owners may choose to share their scoring within their respective documentation sites if desired.
Accessibility: How easy is it to obtain and install?#
ACCESSIBILITY |
PRIORITY |
LOW |
MEDIUM |
HIGH |
NA |
---|---|---|---|---|---|
Statement of Objectives: Clear statement of objectives for the project including target audience |
MED |
||||
Statement of Use Cases: Description of target use cases, work flows, problems that will be solved by this software |
MED |
||||
Scope Bounds: Clearly state what the software does not do |
MED |
||||
Ease of Distribution and Installation: |
HIGH |
Have to “git clone” and compile from source |
Available via package manager or Spack, but some command line use required |
Self-extracting installer (exe/pkg/etc) |
|
Platforms: Support of common user platforms |
HIGH |
Support one only, with no plans to change |
Support of Mac, Linux, Windows |
HPC codes will most likely be NA here |
|
Licensing: License type clearly documented |
HIGH |
No license file in repo |
Use of standard OSI license file and repo “license” field properly completed |
||
Third Party Libraries: Clearly identify and track third party software products and note applicable license agreements |
LOW |
Third party libraries used but not identified |
Some libraries identified but not all or licenses not identified |
All libraries and licenses identified |
No third party libraries used |
Usability: How easy is it to use?#
USABILITY |
PRIORITY |
LOW |
MEDIUM |
HIGH |
---|---|---|---|---|
User interface: Is well-defined and documented |
MED |
No documentation |
Auto-generated function signatures |
Full documentation of all APIs and use cases. Equal parts explanation and reference |
Input files: Standard file types are used for input/output |
LOW |
Custom file types that are poorly documented |
Common file type that is ubiquitous and human / machine readable |
|
Interface stability |
MED |
Interface can change at any time without accommodating users of prior versions |
Consistent, well documented, and user-visible process to change interfaces |
|
Error messages: Are present, informative, and well handled |
MED |
No custom error handling |
Intentional error handling that explains common errors to users |
|
Logging and metadata: Are present and informative |
MED |
No logging |
Full log of inputs and model states over course of execution |
|
Terminal display: Terminal output is helpful, well-formatted and can be redirected or turned off by the user |
LOW |
Terminal output is nonexistent or cluttered |
Terminal output conforms to objectives |
|
GUI: Graphical user interface (GUI) available for novice users |
LOW |
No GUI available |
GUI available but limited in features |
Fully functional GUI that covers full workflow |
Startup time: Time required to get started (onboarding time, etc) |
MED |
O(weeks) |
O(days) |
O(hours) |
Version upgrades: Suport for upgrading to newer versions by adopting new API’s including input and outputs |
MED |
No support for version upgrades and API changes |
Easy upgrade and version migration tools provided |
|
Version tracking: Command line call that returns version number and other helpful information |
LOW |
Command is unavailable |
Command is available |
Documentation: Is it well described?#
DOCUMENTATION |
PRIORITY |
LOW |
MEDIUM |
HIGH |
---|---|---|---|---|
Pre-requisites: Document pre-requisite knowledge |
MED |
No mention in README |
Complete list of assumed knowledge |
|
Getting started: Including hands-on examples and tutorials |
HIGH |
No examples or documentation |
Full ramp-up examples paired with documentation explaining use cases with step-by-step guidance |
|
Installation documentation This includes installation, configuration, compile instructions, how to upgrade |
MED |
Light mention of general process |
More detail or a list of commands to copy/paste |
Full description including troubleshooting |
Theory: Theory documentation is available including background, context, and references. |
MED |
No |
Some theory documentation is available but not fully developed |
Includes background, context, discussion, reference, and theory |
Input files and/or parameters: All input files and input parameters are fully documented and explained. |
HIGH |
No input file or parameter documentation |
Some documentation |
All input files and parameters fully documented |
Best practices: Common use cases are explained with detailed workflows and modeling guidance |
LOW |
No best practice documentation |
Some use cases defined with some modeling guidance |
Numerous use case workflows explained with modeling guidance |
Common mistakes and fixes: Provide guidance and solutions to common issues that are raised by users |
LOW |
No common mistakes documentation |
Some documentation |
Extensive list of user issues that is easy to navigate and their resolutions |
Roadmap for current and upcoming development plans |
LOW |
No roadmap provided |
Outdated or modest roadmap provided |
Roadmap is current and informative to users |
Validation report: Document and demonstrate correctness of the included models |
Not mentioned |
References to publications |
||
Funding sources: Historical and/or recent funding sources for model development are listed in the documentation |
LOW |
Not mentioned |
Outdated or limited information provided |
Funding sources are actively maintained in the documentation |
Extendability: How easy is it for new developers to contribute?#
EXTENDABILITY |
PRIORITY |
LOW |
MEDIUM |
HIGH |
---|---|---|---|---|
Style guide: Code style guide developed, documented, and adhered to (or enforced) |
MED |
No style guide |
Some style guide or only moderately adhered to |
Yes, especially with an automatic linter / formatter included in the infrastructure |
Architecture documentation: Code design document that is readily available |
MED |
No |
Some diagrams in place, more useful as a reference considering that the audience already knows something about the software |
Automated architecture diagram generation, curated conceptual diagrams, contextual information; tailored to teaching someone without prior knowledge of the software |
Contributor requirements: Maintainer expectations of code contributors are stated clearly and enforced |
MED |
None communicated |
Includes requirements for design documents, implementation plans, architecture diagrams |
|
Connection to theory: Clear mapping from theory guide to code implementation via code comments and easy to follow calculations |
HIGH |
Connection to theory is abstruse or code and theory docs are out-of-date |
Easy for curious users to connect code flow and implementation to theory docs |
|
Version control: Use of version control software (recommend git + Github) and established version control workflow (fork/branch with pull requests, etc) |
HIGH |
No version control in place |
Github version control in place and sound git workflow demonstrated by development team |
|
Versioning: Software versioning is in place with an established approach (e.g. semantic versioning or regular releases, etc) |
HIGH |
No versioning used |
Versioning in place with consistent and rigorous release criteria |
|
Code review: Mechanism / procedure for code review either through regularly scheduled meetings or within the development workflow (i.e. pull requests) |
HIGH |
No code review in place |
Consistent and thorough code review demonstrated by development team |
Verification: How accurate are the results?#
VERIFICATION |
PRIORITY |
LOW |
MEDIUM |
HIGH |
---|---|---|---|---|
Installation test: Ability to test for valid installation, if not covered by examples |
MED |
No quick test available |
Quick installation test available |
|
Continuous integration: CI is in place and activates test framework |
HIGH |
No |
Partial implementation, or frequent bypassing of CI tests |
Test framework fully tied into code repository and activated on each code change |
Testing framework: Test framework exists, including unit tests and regression tests |
HIGH |
No test framework |
Some form of test framework, but lacks automation |
Fully automated test framework |
Testing Docs: Documentation for the tests exists for developers |
MED |
None |
Documentation for testing framework exists and current |
|
Unit coverage: Line count coverage (percentage) in unit tests |
HIGH |
0-30 |
30-80 |
80-100 |
Regression coverage: Use-case-coverage or feature-coverage (percentage) in test suite. (likely estimated by development team) |
MED |
0-30 |
30-80 |
80-100 |
Community Health: How engaged are users?#
COMMUNITY HEALTH |
PRIORITY |
LOW |
MEDIUM |
HIGH |
---|---|---|---|---|
User forum: Platform for users to raise issues, requests, and bugs |
HIGH |
No |
Custom |
GitHub, GitLab, other common tool |
Response time: Time to respond to user issues |
HIGH |
O(Month) |
O(Week) |
O(Day) |
PR lifetime: Time to review and merge pull request |
MED |
O(Month) |
O(Week) |
O(Day) |
Activity recency: Time since most recent repository activity |
MED |
O(Month) |
O(Week) |
O(Day) |
Release recency: Time since most recent version release |
MED |
O(Year) |
O(Quarter) |
O(Month) |
User engagement recency: Number of recent (last 6 months) external (not core development team) engagements |
MED |
0 |
100 |
|
Documentation traffic: Google Analytics “monthly active users” or “daily active users” for documentation page |
LOW |
0 |
100 |
|
Repository traffic: GitHub repo page traffic (CHOOSE A METRIC) |
LOW |
0 |
100 |
|
Community engagement: Opportunities are available for community engagement (online or conferences) |
LOW |
No |
One-off webinars with Q&A |
Regular workshops |
Funding diversity: Diversity of funding sources aside from WETO |
MED |
No active funding |
Limited funding sources and/or limited resources |
Diverse and active funding stream |