stac-extensions/processing

Make processing:software a list

matthewhanson opened this issue · 1 comments

processing:software is currently a Map, which while order is preserved is JSON, it is not necessarily ordered in software languages (e.g., python). It would be better to be able to preserve the order in which software was used.

Additionally, it would be valuable to be able to store additional info about the software run in addition to the version, such as parameters that were used to invoke it

I'm suggesting making processing:software a list, which preserves order and allows for additional info to be added, e.g.:

{
     "processing:software": [
          {
               "name": "my-software",
               "version": "0.1.0",
               "parameters": {
                    "param1": "value1"
               }
          }
     ]
}

It was neither the aim for processing software to indicate a specific order nor to be executable, it's just a rough overview. Details about the workflow could be added as text to processing:lineage or via a language such as CWL (YAML->JSON conversion required) to processing:expression or via the link rel type processing-expression (if not JSON/too large).

Also additional parameters would need a good description and as such they might be better suited in a language that is actually suited for this like CWL as some things are not clear: Are these CLI parameters? Should these have the --/- in front, etc?

We need to be careful as this is a breaking change...