Work plan for input file stabilisation
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 287
- Forks
- 109
- Avg merge
- 4d 41m
- Merged PRs (30d)
- 5
Description
Hello, this issue propose a way to stabilize input files for GEOSX. It follows discussion https://github.com/GEOSX/GEOSX/discussions/1911. Open for comments.
STEP 0: Share the action plan with partners.
STEP 1: Improving travis.
Resources : developers
Done in https://github.com/GEOS-DEV/GEOS/pull/2850
If we define an API, we have to be able to make sure that we don't break it.
For that, let's start by being able to play the built-in tests on travis (maybe on 2 CPUs only).
- Create a dedicated travis stage, launched after the builds.
- To get a compiled version of geosx, we can
- Deploy a geosx docker.
- Use the already existing automatic deployment. Probably a good idea.
- Play the integrated tests in the
CI. But be careful because:- We need to clone the
integratedTestsrepository- It's
git-lfs(clone + data limitations) - It is
privateso we have to set up authentication.
- It's
- What are the implications for our validation of always-up-to-date submodules?
- We need to clone the
The benefit is immediate even without the API. Validating GEOSX on our integrated tests from travis, without waiting for the nightly build, would be useful.
STEP 2: Definition of version 0 of the API (not the implementation, simply the API).
Resources: mainly users.
Can be done in parallel with STEP 1.
- Definition of functionalities validated for production.
- Definition of the use of experimental features.
- Will we allow it?
- What would be the mechanisms to activate experimental features?
- Workshop with users, comparison with other simulators.
- Choose a file format (
yaml,toml, other?)- Check parsing solutions.
STEP 3: API implementation.
Resources: developers.
Even if we can start after STEP 1, it is probably better to have finished STEP 2.
- Make a choice of architecture: should the process be in
C++ingeosx. Or should we implement a converter (inpython) outside ofgeosx? Should this result in a new file? Could we pipe theyamlintogeosxsuch that we have a single source of truth? - If
C++gets chosen, put the parsing library into theTPL.- Check the availability of an
LLNL/spackpackage. Otherwise it will have to be implemented.
- Check the availability of an
- Implement some (integrated?) tests on the API.
- Replicate some
xmltests to keep the same reference files?
- Replicate some
- Work on
regionsand any other subjects alike. (The idea is not to tolerate inaccuracies in the API.)- Remove
sub*RegionsfromXMLinterface? Is it necessary not to see them in the API? Most probably but not certain.
- Remove
- Implement the API.
- Think about API version management in GEOSX? How should GEOSX handle multiple APIs at the same time (not necessarily useful as it's normally stable).
- Think about the CLI.
- Think about the validation of the input.
- Keep the possibility to output the converted XML (for experts and support).
- Will we allow default parameters?
- ...
- Play API tests in travis.
STEP 4: Long-term API documentation.
Resources: developers + users.
After STEP 2.
Construction of a “documentation” of the API (stricto sensu, we must be able to work on the subject from the end of STEP 2).
- Which format to use? Swagger is classic for webservices APIs that use json or yaml. Swagger which should also allow automatic validations and completion. Is it relevant?
- Management of the publication (on readthedocs?) of the API documentation?
- More end user oriented documentation is to build as well. (Tutorials, etc.)
STEP 5: Only now developing a smart GUI makes sense 😇
@jeannepellerin @herve-gross
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with discussion 1911 and the completed Travis/integratedTests work described in STEP 1. Review the unresolved API, input-format, parsing, testing, CLI, and documentation items across STEPS 2–4; the issue has no single implementation entry point or defined completion criterion.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, docker, python
- Domain
- api, build-system, ci-cd, cli, documentation
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 15/100