Code Development Plan
===========================
Based on the `Computational Infrastructure for Geodynamics
`__ (CIG) `Software Development Best Practices
`__ we propose the following (yearly updated)
Code Development Plan (CDP) which lays out prioritization of new features and
estimated timetables for their implementation.
A short- and long-term to-do list for SeisFlows3 development. This is a
community document meant to highlight what the SeisFlows3 developers deem as
priorities for the package, allowing community members to target their
contributions more effectively.
---------------------------------
CDP v2.0
--------------------------------------------
[Last updated Apr. 18, 2022] This CDP outlined the goals for 4/2022--1/2023
Short-Term Priorities [1--2 months]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Implement package-wide unit testing using PyTest
- Comprehensive docs page with examples and tutorials
- Pre-commit framework (Flake8, Black, pre-commit, codecoverage)
- Travis Continuous Integration
- Code version citation (Zenodo)
- FAQs and user knowledge base
- Package manager install using Pip
Medium-Term Objectives [3--6 months]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Migrate stable release to org page github.com/seisflows
- Seisflows-super system class for:
* Oakforest-PACS (JCAHPC)
* TACC Frontera
- Various SPECFEM2D and SPECFEM3D example problems following legacy example
problems
Long-Term Goals [> 6 months]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Tested system classes for PBS and LSF HPC workload managers
- Guided tutorials for running inversions on HPC systems
- Community discussion forum (e.g., Gitter, Google groups)
- Visualization capabilities (internal or external) for models, kernels,
gradients
--------------------------
CDP v1.0
-----------------------------------
[Last updated Nov. 18, 2021] This CDP outlined the goals for 11/2021--11/2022
The following plan sets the roadmap for the one year mark (11/22). The main
objective for this dev plan is a stable release of SeisFlows3, featuring a
comprehensive documentation page, extensive unit and integration testing, and
usable working examples for new users.
Expected difficulty (i.e., easy, medium, hard) of each problem is provided
in bracketed terms, e.g., [easy]. This difficulty is subjective and based on
required Python/coding experience, package familiarity, and time required.
Tasks are also categorized, e.g., (general), when possible.
* (bookkeeping) [medium]: Migrate a stable release (v1.0) of SeisFlows 3 to github.com/seisflows
* (stable) [hard]: Implement package-wide unit testing using pytest
* (stable) [hard]: Implement integration testing using 2D example problems
* (stable) [medium]: Outline and complete documentation.
* (stable) [medium]: Complete package install using Conda.
* (stable) [hard]: Complete and test Preprocess sub-module for:
* Default
* (stable) [hard]: Complete and test Solver sub-modules for:
* SPECFEM2D
* SPECFEM3D_GLOBE
* (stable) [hard]: Complete and test System sub-modules for:
* Chinook (UAF)
* Local
* Oakforest-PACS (JCAHPC)
* (example) [hard]: SPECFEM2D examples following legacy SeisFlows example problems, on Local and HPC
* (example) [hard]: SPECFEM3D examples following legacy SeisFlows example problem, HPC
* (example) [easy]: Convert NZNorth example problem README to a .rst doc file.
* (updates): Parameter File and parameter system
* [easy]: Add a T0 parameter to the solver.base class to define when the SOLVER thinks time 0 is.
* [easy-medium] Increased verbosity throughout the entire package, make it sing.
* [hard]: Auto-fill available functions from Workflow module in the RESUME_FROM and STOP_AFTER docstrings
* [easy]: PAR.SLURMARGS and PAR.ENVIRONS need to be set as empty strings, cannot be NoneType
* [easy]: Attenuation needs to be set-able in parameter file, currently hard-coded on
* [hard]: Add a SAVE_PREPROCESS option to save all files within the scratch/preprocess dir.
* [medium] Add an 'advanced' flag to all parameters and a flag in the seisflows.configure() command to
* [easy]: seisflows.setup() should stamp git version in the parameter file
* (feature) [medium]: Copy SPECFEM output logs somewhere after each call to the solver, e.g., output_generate_databases.txt. Currently these are overwritten each time.
* (blue-sky) [uber-hard]: Based on the modules, generate a flowchart showing each class and function that is called throughout the workflow, in order.