inab / benchmarking-data-model

OpenEBench Benchmarking Data Model repository
Creative Commons Attribution Share Alike 4.0 International
2 stars 7 forks source link

Support anonymous Tools #125

Closed lcodo closed 1 year ago

lcodo commented 3 years ago

Add a new Tool property indicating whether the Tool is "anonymous". If so, the Tool object should include only some minimal properties not revealing the tool/workflow identity.

A reference to a non-anonymous" Tool entry should also be included as a not-required property. When an "anonymous" Tool is de-anonymized, (1) a "non-anonymous" Tool document fully describing the tool is set, and (2) the "anonymous" record is updated setting up a reference to the "non-anonymous" analogous document.

lcodo commented 3 years ago

Another way to achieve a dual view is to programmatically control the visibility of the different properties of the Tool object. In this way, there is no need to have two analogous and interconnected instances ("anonymous", "non-anonymous").

redmitry commented 3 years ago

If the Tool's visibility is the only concern, Option B is much simpler to implement. Option A is preferred if the same must be done for other objects.

jmfernandez commented 3 years ago

If the Tool's visibility is the only concern, Option B is much simpler to implement. Option A is preferred if the same must be done for other objects.

From my point of view, that list of "stealthable" property names / JSON pointers should not be set at the JSON entry level, but associated as metadata or being accessible through a different endpoint. The main point is that, if the user is allowed to fetch an entry, the JSON being returned by API should be valid against its corresponding JSON Schema, which implies that required properties at any level cannot be "hidden".

If the "stealthable" properties are declared at fine grained level (i.e. each entry could have custom stealth rules), or coarse level (the stealth rules are embedded in JSON schema) is an additional level of complexity.

And last, there should be a switch at MongoDB entry hidden metadata level to pass from stealth entry to non-stealth one. I guess the owner of the entry has the last word about when each one of their entries switches between these states.

jmfernandez commented 2 years ago

I have been thinking on this major issue, and after the meeting we had today I have next ideas:

So, I have thought that Tool entries and Tool instance entries should be related, but they should use slightly different identifiers.

What do you think? The main point I'm afraid of is that it requires reassigning ids to either the tool entries or the tool instances entries,

jlgelpi commented 2 years ago

Actually, we could keep the id patterns, just adding the "instance_of" tag, That would be a kind of internal FK. We could use that to follow from a instance to the entry, and to distinguish entres and instances.

jmfernandez commented 2 years ago

Yes, we can do it without tweaking the id patterns. But the validation logic to avoid loops of a tool which is an instance of another tool, which is an instance of the first one .... should reside on server / API side.

jmfernandez commented 1 year ago

Closed at commit bc48fa7fcba84835b36320a96976135d68220311 (please have a look both at the commit description and the schemas)