Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to expose which version of openeo-processes is available/targeted #517

Open
soxofaan opened this issue Oct 11, 2023 · 7 comments · Fixed by #549
Open

How to expose which version of openeo-processes is available/targeted #517

soxofaan opened this issue Oct 11, 2023 · 7 comments · Fixed by #549
Assignees
Milestone

Comments

@soxofaan
Copy link
Member

I'm working on adding openeo API 1.2 and processes 2.0 to the VITO backend and the current goal is:

It would help (e.g. for user support) if we could make the linking between these versions more explicit in the metadata in some way.

Is there a way to expose the (target) openeo-processes version explicitly, e.g. globally in capabiltiies doc, or per process?

@m-mohr
Copy link
Member

m-mohr commented Oct 11, 2023

Hmm... Globally doesn't make a lot of sense as we often have the case that we implement processes from different versions, e.g. when new processes get added (e.g. you are on 1.x and add just one or two new processes from 2.x). Has happened in the past.
On the other hand, processes are meant to be self-declaring and unversioned. Like if you encounter a process from 1.1.0 that reports that version but is has been changed by the user (e.g. removed/added a parameter or updated a schema), is it still 1.1.0 or what version is it?

So I would try to avoid adding version numbers for processes. What's the use case? Wouldn't the client just read the process and detect that it's 1.2 or 2.0 e.g. based on the raster-cube / data cube subtype etc? It think that's the way to go and was always intended that way. This doesn't prevent you from adding a custom property "version" or so to the processes though.

@soxofaan
Copy link
Member Author

soxofaan commented Oct 11, 2023

Yes indeed, in practice the bag of provided processes is a bit a mix of 1.0, 1.1, 1.2, 2.0 and non-standard processes. Certainly the case in VITO backend for example. Still there is probably some kind of target upper bound a back-end wants/can provide.
But I agree that it is probably messy to try to put a global version stamp on that.

However, in Open-EO/openeo-aggregator#118 we found out that v1.x and v2.x processes don't mix nicely, because of rastercube (v1 style) vs datacube (v2 style) mismatch.
This is a reason for a back-end to stick to v1.x or go all in on v2. So that's why I was wondering if this could be made more explicit in some way.

Note that this will be especially challenging in the aggregator where processes of multiple backend have to be combined, making the synchronization exercise considerable harder.

@m-mohr
Copy link
Member

m-mohr commented Oct 11, 2023

Yes, in a federated interface this needs either good alignment and a migration path that is followed by all back-ends or a good strategy in the aggregator to "mix" them. I'm not sure how version numbers would help here though. If you have a version number you'd still need to merge somehow, right? Isn't it enough there to just replace raster/vector-cube with datacube in comparison?

@soxofaan
Copy link
Member Author

The path we're currently trying in the VITO backend is

  • API roots /openeo/1.0 and /openeo/1.1 stick to v1.x version of processes
  • (new) API root /openeo/1.2 works with v2.x of processes

(Note: I think we did the same when we supported both v0.4 and v1.0 of openEO API and processes)

We could do the same in the aggregator:

  • /openeo/1.1 and /openeo/1.0 combines backends with v1.1 or v1.0 openEO API + v1.x processes (what we currently have)
  • /openeo/1.2 combines backends with v1.2 openEO API + v2.x processes (new, but no backend has this production ready I think)

That implies that we set up the convention to have a hard link between API version and processes version: a given an API endpoint version, you also know if you get v1 or v2 processes. This goes a bit against the spirit of the openEO API, but it could be a workable more practical alternative to trying to introduce a new API to declare the version level of the processes.

@m-mohr
Copy link
Member

m-mohr commented Nov 15, 2024

Maybe we just add a version flag to the resposne of GET /processes?
It can be either a specific version number, e.g. 1.0.0, or null/missing, which means unknown/mixed.

@soxofaan
Copy link
Member Author

yes something like that would certainly help with the discussed use cases

@m-mohr
Copy link
Member

m-mohr commented Nov 16, 2024

See PR #549

@m-mohr m-mohr linked a pull request Nov 16, 2024 that will close this issue
m-mohr added a commit that referenced this issue Nov 20, 2024
* Add openEO processes version #517

* Update openapi.yaml

* Update openapi.yaml

Co-authored-by: Stefaan Lippens <[email protected]>

* Update openapi.yaml

---------

Co-authored-by: Stefaan Lippens <[email protected]>
@m-mohr m-mohr self-assigned this Nov 20, 2024
@m-mohr m-mohr added this to the 1.3.0 milestone Nov 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants