cs3org / OCM-API

OpenCloudMesh API
38 stars 11 forks source link

"protocol" or "protocols", which should implementers use? #62

Closed michielbdejong closed 1 year ago

michielbdejong commented 1 year ago

There is now a difference between the Reva implementation and the Nextcloud / Seafile / OC-10 implementation of OCM: Reva uses "protocols" and all the others use "protocol".

Our main spec page https://cs3org.github.io/OCM-API/docs.html?branch=develop&repo=OCM-API&user=cs3org should describe that reality more clearly.

@glpatcern it's probably best if we have a video call about this to discuss how we want to deal with this nuance?

glpatcern commented 1 year ago

Completely agree! As a matter of fact, we could preserve protocol and even pretend that we are backwards compatible, because the current specs just leave the protocol payload completely undefined. And as discussed with the Nextcloud crowd (@schiessle and @smesterheide), the reality check showed different vendors being incompatible between each other, hence the need for more details.

IMHO we should still spell out the attributes each protocol / access method requires, whilst making it clear that the minimum requirement for an OCM-compliant implementation is not to have everything: a reasonable and required minimum would be resource type = file, shareType = user, protocol = webdav. And all the rest is optional (though somehow in the specs).

smesterheide commented 1 year ago

Do we need more than one protocol at a time? I think the original definition was superior to having different protocols defined as properties. Can we use name as a discriminator?

glpatcern commented 1 year ago

Do we need more than one protocol at a time?

Yes, I think so. This is what I demonstrated at CS3 Barcelona, and Bjorn even came up with another example where this model fits nicely. Imagine you share a calendar event, and you want the recipient to access the event data via CalDAV (i.e. protocol = webdav), as well as connecting to some groupware tool such as Zoom, Nextcloud talk, etc. (i.e. protocol = webapp).

I think the original definition was superior to having different protocols defined as properties.

The original definition was just an object, which does not offer any clue as of how implementations are supposed to encode the properties. No surprise that compatibility across different vendors was not ideal (e.g. only recently did Seafile announce compatibility with Nextcloud).

michielbdejong commented 1 year ago

does not offer any clue

That's a separate issue, unrelated here I think.

only recently did Seafile

Also not relevant to this discussion, I think.

My own (simplistic) answer to this question would currently be: If you want to do OCM over the internet, use "protocol" If you want to do OCM over ScienceMesh Network Alpha, also use "protocol" If you want to do OCM over ScienceMesh Network Beta, use "protocols"

If that is the current situation then the is what our docs should say.

So the information people need is currently (even if this is temporary) a combination of https://cs3org.github.io/OCM-API/docs.html?branch=v1.0.0&repo=OCM-API&user=cs3org and https://cs3org.github.io/OCM-API/docs.html?branch=develop&repo=OCM-API&user=cs3org

We are currently only pointing them to https://cs3org.github.io/OCM-API/docs.html?branch=develop&repo=OCM-API&user=cs3org so we are misinforming them.

michielbdejong commented 1 year ago

As a first step let's link to both versions, instead of only to the "develop" version, from our readme ^

smesterheide commented 1 year ago

Yes, I think so. This is what I demonstrated at CS3 Barcelona, and Bjorn even came up with another example where this model fits nicely.

My apologies, I was not following the discussion around the protocol issues co closely. In that case the protocols spec makes sense with protocol names (webdav, webapp, datatx) as properties.

As a first step let's link to both versions, instead of only to the "develop" version, from our readme ^

Agreed