Re: API thoughts

James,

Good thoughts! A few high-level responses:

 1. I think that being too abstract in our specification will make it
    harder to implement.  A software developer who wants to let a user
    post an image (for example) will have a hard time understanding that
    they're actually creating a Social Artifact.
 2. You don't seem to cover social relationships -- membership in a
    group, friendship between people.
 3. The multiple-persona issue is very interesting. It's also probably
    too much for us to bite off. The most mature identity system on the
    Internet, email, has no way to explicitly express equivalence
    between addresses (jasnell@gmail.com == jasnell@us.ibm.com) or that
    a person has changed addresses.

If we try to do One Identity To Rule Them All, it might be too much for 
us to do. I'd rather keep us closer to an Atom Publication Protocol for 
Social Networks.

-Evan

On 2015-01-28 12:28 PM, James M Snell wrote:
> Some thoughts on the Social API...
>
> At the core, the majority of the social APIs reviewed reduce down to a
> handful of relatively simple concepts. Let me see if I can effectively
> classify them.
>
> 1. We have any number of Social Artifacts. These are distinct
> resources that represent various kinds of Things: People, Groups,
> Organizations, Various kinds of content, Responses of various types,
> etc. If you look at the Activity Streams Vocabulary, you can see that
> we already have many (if not most) of these Artifacts already
> identified.
>
> 2. There are a couple of specific Social Artifact that are considered
> central to social systems: that of an Identity and a Profile. The
> Identity represents the authenticated individual. The Profile
> represents a description of the Individual. Secondary to the Identity
> is the Persona. A Persona is some scoped aspect of the Identity. For
> example, "jasnell@us.ibm.com" represents one of my Persona's.
> "jasnell@gmail.com" represents another, as does
> "http://www.twitter.com/jasnell". These are separate Personas mapped
> to the same Identity. A Profile can describe an Identity or a Persona.
> Persona's are themselves a type of Identity. We can formalize this
> using:
>
>    :Identity a owl:Class .
>
>    :Persona a owl:Class ;
>      rdfs:subClassOf :Identity .
>
>    :Profile a owl:Class .
>
>    :hasPersona a owl:ObjectProperty ;
>      rdfs:domain :Identity ;
>      rdfs:range :Persona .
>
>    :describes a owl:ObjectProperty ;
>      rdfs:domain :Profile ;
>      rdfs:range :Identity ;
>      owl:inverseOf :describedBy .
>
>    :describedBy a owl:ObjectProperty ;
>      rdfs:domain :Identity ;
>      rdfs:range :Profile ;
>      owl:inverseOf :describes .
>
> 3. The various kinds of Actor's we have defined as part of the
> Activity Streams Vocabulary are all types of Identities.
>
> 4. All of the other Social Artifacts are owned by an Identity.
>
> 5. All Social Artifacts can be organized into Collections.
>
> 6. Collections are themselves a type of Social Artifact.
>
> 7. Identity, Persona and Profile are all types of Social Artifacts
> that can be owned by an Identity (an Identity can either own itself or
> be owned by another Identity).
>
> Given these presumptions, the Social API needs to provide a means of
> discovering basic information about an Identity, including:
>
> A. Discovery of any Persona's associated with the Identity
> B. Discovery of any Profile's describing the Identity
> C. Discovery of any Social Artifacts owned by the Identity
>
> Further, the Social API ought to allow the owner of a social artifact to:
>
> D. Create, Modify or Delete the Artifact
> E. Permit other Identities to View the Artifact
> F. Permit other Identities to Create, Modify or Delete the Artifact
> G. Permit any Identity to Perform Actions relative to the Artifact
> (Like, Unlike, Share, Comment, Annotate, etc)
> H. Provide a means of recording which Actions have been performed
> relative to an Artifact.
>
> There are at least two key flows to consider:
>
> 1. I have an Identity, I need to discover information about this
> Identity, potentially including what Artifacts are owned by this
> Identity and what Actions I can take on those Artifacts. (e.g. is
> "acct:joe@example.org" the same as "http://example.org/joe" ? Does
> "joe" have a blog? Can I comment on those blog entries? etc)
>
> 2. I have an Artifact, I need to discover what Identity owns this
> artifact and what Actions I can take on the Artifact. (e.g. can I
> "Like" it? can I "Share" it? can I "Comment" on it? etc)
>
> >From here it should be straight forward to construct an API. I'll post
> a few thoughts on that a bit later on.
>
> - James

Received on Monday, 2 February 2015 15:15:19 UTC