Appverse App Review Checklist

A guide for reviewers evaluating whether a new app should be included in the Appverse catalog.

Overview

The goal of review is to ensure that apps in the catalog are useful, deployable, and maintainable by the broader HPC community. We're not looking for perfection — we're looking for apps that meet a quality bar and don't create confusion in the catalog.

Decision Framework

Should This App Exist in the Catalog?

Ask these questions first, before evaluating quality:

QuestionIf No...
Does this app serve software not already in the catalog?See "Duplicate Check" below
Is the repository public and accessible?Cannot be included — public repo required
Does it have an open source license?Cannot be included — license required
Is there a maintainer who will respond to issues?Flag as a risk — orphaned apps hurt the catalog

Duplicate Check

If the software already has apps in the catalog:

  • Same app, different site config → Reject. Encourage the contributor to document their configuration in the existing app or contribute changes upstream.
  • Same app, forked with minor changes → Reject unless the fork adds significant new capability. Encourage contributing back upstream.
  • Same software, meaningfully different approach → Accept. Examples: containerized vs. module-based, GPU vs. CPU, different execution model (e.g., AlphaFold 2 vs. AlphaFold 3 support).

Document the rationale either way.

Required Criteria

All of these must be met for inclusion. These are pass/fail.

1. Repository Structure

CheckWhat to Look For
manifest.yml existsHas name, category, role, description at minimum
README.md existsIs substantive (not just a title) — see Documentation section
LICENSE existsOpen source license present (MIT recommended)

For Batch Connect Apps: standard OOD structure with expected files (form.yml, submit.yml.erb, template/)

2. Documentation Minimum

The README should follow the Appverse README Template structure (see also the filled-in example). At minimum, it must answer these questions for an HPC admin who has never seen the app:

QuestionWhere to Find It
What does this app launch?Overview section
What needs to be installed on compute nodes?Requirements section and Software Installation in References section
How do I deploy it?Installation section
What do I need to customize?Configuration section

Red flags:

  • README is still the unfilled template (placeholder text like "Key feature 1" still present)
  • README only contains a project name and/or contact email
  • README references a different institution's paths without noting they need to change
  • No Configuration section — deployers can't tell what to customize

3. Security Concerns

CheckWhat to Look For
Credentials in codeCommitted API keys, passwords, or tokens
Disabled security without justificationIf encryption or auth is disabled, there should be a comment explaining why
Arbitrary code execution from user inputForm values passed to shell commands should be validated

4. Basic Functionality

CheckWhat to Look For
form.yml is valid YAMLParses without errors
manifest.yml is valid YAMLParses without errors
Template scripts are syntactically correctERB templates render, shell scripts pass basic lint
No obviously broken referencesModule names, paths, and variables referenced in templates exist in form.yml

Quality Criteria

These are evaluated on a scale. An app doesn't need to be perfect, but the more boxes checked, the better.

Documentation Quality

LevelDescription
MinimalWhat it launches + prerequisites only
AdequateAbove + installation + configuration + known limitations
StrongAbove + troubleshooting + screenshots + environment variable docs
ExemplaryAbove + user-facing info panel + architecture explanation

Target for inclusion: Adequate or above.

Configuration Portability

LevelDescription
Not portableHardcoded paths, cluster names, module versions throughout
Partially portableSome hardcoding, but main config is in form.yml attributes
PortableAll site-specific values centralized and clearly marked

Target for inclusion: Partially portable or above. If "Not portable," ask the contributor to centralize configuration before accepting.

Code Quality

CheckStatus
Error handling in scripts (set -e or explicit checks) 
No magic numbers without comments 
No large blocks of duplicated code 
No commented-out dead code 
Input validation on form fields (min/max/required) 
ERB templates handle missing/empty values gracefully 

Target for inclusion: At least error handling and input validation. Other items are improvement suggestions.

Maintenance Signals

SignalGood SignConcern
Last commitWithin 12 monthsOver 2 years ago
ReleasesTagged releases with versioningNo releases
IssuesResponded toOpen issues with no response
ContributorsMultipleSingle contributor with no activity
CHANGELOGPresent and currentMissing
CI/CDAutomated checksNone

Target for inclusion: Active within 12 months and at least one release. For brand-new apps, waive the history requirement but flag for follow-up review in 6 months.

Review Process

Step 1: Quick Scan (5 minutes)

  1. Open the repository
  2. Check: Does it have manifest.yml, README.md, LICENSE?
  3. Read the README: Can you understand what this app does and how to deploy it?
  4. Check: Is this a duplicate of something already in the catalog?

If it fails the quick scan, provide feedback to the contributor with specific items to address.

Step 2: Structure Review (10 minutes)

  1. Verify manifest.yml has required fields
  2. Verify form.yml is valid and has reasonable defaults
  3. Check submit.yml.erb for hardcoded paths or cluster-specific values
  4. Scan template scripts for error handling and security issues
  5. Check for an open source license

Step 3: Quality Assessment (10 minutes)

  1. Rate documentation quality (Minimal / Adequate / Strong / Exemplary)
  2. Rate configuration portability
  3. Check code quality items
  4. Review maintenance signals

Step 4: Decision

OutcomeCriteria
AcceptPasses all required criteria, adequate+ documentation, partially portable+ config
Accept with suggestionsPasses required criteria but has clear improvement areas — include specific feedback
Request changesMissing required criteria but fixable — provide specific list of what to address
RejectDuplicate app, no license, abandoned/unmaintained, security concerns, or not an OOD app

Providing Feedback

When requesting changes or suggesting improvements, be specific:

Good feedback:

The README lists prerequisites but doesn't include installation steps. Please add a section showing how to clone and deploy the app (see ProteinStructure-OOD for an example).

Poor feedback:

README needs work.

Reference the Best Practices Guide for specific recommendations to share with contributors.

Common Issues Found in Real Apps

Based on analysis of apps currently in the Appverse:

IssueFrequencySeverity
Missing or stub READMECommonHigh — blocks deployment
No error handling in scriptsVery commonLow — causes silent failures
Hardcoded pathsCommonMedium — blocks portability
No releases or versioningCommonLow — but makes updates risky
Missing CHANGELOGCommonLow — but reduces trust
No troubleshooting docsVery commonLow — but increases support burden
Dead/commented-out codeOccasionalLow — but confusing
Magic numbers without commentsOccasionalLow — but hinders maintenance
Security settings disabled without explanationRareHigh — potential vulnerability

Appendix: Review Template

Copy this template when reviewing a new app submission:

## App Review: [App Name]

**Repository:** [URL]
**Reviewer:** [Name]
**Date:** [Date]

### Required Criteria
- [ ] manifest.yml with required fields
- [ ] README.md (substantive)
- [ ] LICENSE (open source)
- [ ] Standard OOD app structure
- [ ] No security concerns
- [ ] Not a duplicate

### Quality Assessment
- Documentation: [Minimal / Adequate / Strong / Exemplary]
- Portability: [Not portable / Partially / Portable / Highly portable]
- Maintenance signals: [Active / Moderate / Inactive]

### Decision: [Accept / Accept with suggestions / Request changes / Reject]

### Feedback
[Specific items to address or improve]