Skip to content

Describe interoperability with a few generic goals #197

@benbovy

Description

@benbovy

I've been thinking a bit more about this, trying to gather all the relevant suggestions (currently on the website in the "Goals" section and also in various issues #169, #183, etc.) into fewer, more abstract concepts and goals. Here is an attempt (this could certainly be improved in many ways):

  1. "Human" interoperability: help users making sense of the model's data and metadata so that they can easily relate it to other models or observations. Reduce cognitive load and the mental overhead of context switching.

  2. Machine (data/metadata) interoperability: enable seamless data/metadata transfer between a model software and other (model) software.

  3. Machine (program) interoperability: allow model execution being controlled by another software (either coarse-grained or fine-grained control).

How would each of those goals relate / translate into standards or good practices ? Some examples:

  1. Documentation, compliance with standardized data models or conventions (e.g., CDM, CF-conventions), standard names...

  2. Standard (or at least common and portable) storage formats that can be easily read/written by machines, e.g., NetCDF4, HDF5, CSV, Parquet, JSON, etc.

  3. Standardized APIs and protocols, compliance / integration with modelling frameworks and/or scientific computing ecosystems...

Note that a particular standard may be useful for more than one goal. Some examples:

  • Using a standard data model or convention is often helpful for goal 2 too (a generic storage format is not enough for a machine or software to fully "make sense" of the transferred data)
  • Using common storage formats like YAML or TOML for model configuration files may be helpful for goal 1 too, as those formats could be easily read by both humans and machines
  • Using well-designed, standardized interfaces (UI or API) across model implementations might greatly reduce cognitive load (goal 1)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions