This repository is a part of an initiative to have all software tools for the JWST user community that are developed/maintained by the Instruments Division (INS) meet accepted software standards. This includes the software being robust, maintainable, documented, and supported. The contents of this repository aims to describe these standards for the INS software tools and encourage a common approach across projects.
This work is managed by the INS Software Development Leads for this project Matthew Bourque @bourque and Shannon Osborne @shanosborne
The software standards have been split into "tier 1" and "tier 2" goals.
Tier 1 standards:
- Software Must Be Version Controlled in a Software Repository
- Software Must Be Versioned
- Software Must Use an Issue Tracking System
- Software Must Be Installable with
python setup.py install
- Software Must Be Available with
conda
orpip
- Software Must Have a Recorded Environment
- Software Must Use Continuous Integration
- Software Must Meet Basic Standards for Protecting It's
main
Branch - Software Must Have Installation and Usage Documentation
- Software Must Have a LICENSE File
- Software Must Meet Basic Security Standards
Tier 2 standards:
- Software Repository Must Have a
Code of Conduct
File - Project Must Document Citation Information
- Software Must Enforce Language-specific Coding Standards (e.g. PEP8)
- Software Must Support Recent Version(s) of Python
- Project Must Have or Reference a Documented
git
Workflow or Contributor's Guide - Software Must Document Modules, Classes, and Functions
- Project Have Some Unit and/or Regression Tests
- Project Must Document a Release Procedure
- Project Must Provide Release Notes
- Project Must Have Backup Maintainers
- Project Must Utilize Code Review/Approval for New Changes
- Project Must Use an Automated Dependency Update Tool
If you want to suggest changes to this content do the following:
- Create a fork of this repository
- Make a local clone of your fork
- Ensure your personal fork is pointing upstream properly
- Create a branch on that personal fork
- Make your changes
- Push that branch to your personal GitHub repository (i.e.
origin
) - On the
spacetelescope
repository, create a pull request - Assign a reviewer (either
@bourque
or@shanosborne
) - Iterate with the reviewer over any needed changes until the reviewer accepts and merges your branch
- Delete your local copy of your branch
Any questions about this effort may be directed to bourque@stsci.edu and sosborne@stsci.edu