Re: [web-annotation] How do we model "groups" in the Annotation model?

This is a tricky topic, so let's not be surprised that there's 
miscommunication going on. As has already pointed out elsewhere, 
"groups" is a heavily overloaded word, so let's try and be clear about
 what we want to achieve.

> Sometimes you want to have an annotation published only to a 
particular group, and you may wish to let only those people see it.

As written, this is absolutely an access control requirement. You a 
want the ability to give certain collections of 
people/machines/whatever the ability to perform certain actions on 
certain resources. To my mind this doesn't place any requirements on 
the model, but it does (as @BigBlueHat) and others have suggested, 
have implications for the protocol.

@BigBlueHat and @azaroth42: are you imagining that 
["containers"](http://www.w3.org/TR/annotation-protocol/#annotation-containers)
 will be one important unit of access control granularity? That is, a 
container could represent a group's annotations, and I will be able to
 see and/or modify specific containers dependent on membership of that
 group?

>  What about annotations that are stored locally, or exchanged 
offline, or otherwise not accessed via the protocol (which not every 
UA may use)? How is a client supposed to know how to treat those, if 
there's no property contained in the annotation itself?

If I have the serialised content of an annotation, no matter how I 
received it, then *by definition* I have the ability to view the 
abstract entity represented by that data. Trying to enforce anything 
else through model properties doesn't make any sense. They're just 
bits on a computer I control...

If I have the serialised content of an annotation, but no idea where 
it lives in an annotation store, then I'm not sure what it even means 
to ask "do I have permission to edit this annotation"? Again, it's 
just some bits on a computer I control. I can edit them, but that's 
not "editing" in any meaningful sense. Without an annotation service 
(even a private one for my own use) I can't republish those edits.

So, overall, I think yes, this is an access control issue.

---

**But**, there is one important aspect in which I think this does 
touch on the model, and I suspect that @shepazu may be thinking in 
these terms.  A potential user interface for annotating:

1. May need to be able to signal to a user that an annotation comes 
from a particular group. 
2. May need to know whether a user can create annotations in the group
 in order to correctly display or hide editing controls.
3. May need to know what permissions the user has on specific 
annotations within the group as a result of a role conferred within 
that group (such as "moderator", "administrator", "teacher", etc.)

It's not immediately clear to me that any of these considerations 
place hard requirements on the model, as all of them could in 
principle be achieved by other means (the client maintains state about
 where each annotation came from, and identity/permissions information
 also could come from elsewhere). But I think there is one very 
important scenario that we're not yet really considering: federation.

If a client retrieves an annotation from its "canonical" data store 
(whatever that means) then I can maintain state about where it came 
from and who's allowed to do what with it.

But what if a client retrieves an annotation from a data store which 
is republishing that annotation? What if a client retrieves 
annotations through an "aggregator" API that exposes annotations from 
multiple underlying containers through one set of endpoints?

AIUI there is at the moment no support in the model for specifying the
 provenance of such annotations, or for including any kind of 
reference to where changes to such annotations need to be submitted 
(because I would guess the answer would probably not be "back to the 
aggregator").

---

In summary, then:

- There is an access control component to this which (IMO) 
doesn't/shouldn't form part of the model
- There are, however, considerations around display which 
fundamentally boil down to support within the model for discovering an
 annotation's provenance. Perhaps we should open an issue to discuss 
this if we don't have one already?
- I don't think the "audience" field discussed in #8 has anything to 
do with groups. It seems to me that independent of any discussion of 
groups, an "audience" field for hinting display intent to a potential 
user agent is a useful thing to pursue.

-- 
GitHub Notification of comment by nickstenning
Please view or discuss this issue at 
https://github.com/w3c/web-annotation/issues/119#issuecomment-161938933
 using your GitHub account

Received on Friday, 4 December 2015 11:06:28 UTC