Skip to content

Latest commit

 

History

History
105 lines (69 loc) · 4.53 KB

socialapi.md

File metadata and controls

105 lines (69 loc) · 4.53 KB

Social API

Code name micropump.

Disclaimer: Just kidding about 'micropump', not really trying for a frankenspec with a new name. This is a strawman skeleton document for what the Social (and Federation) API could look like, taking bits from ActivityPump and the Indieweb ecosystem (including Micropub) and SoLiD as they currently stand; all are subject to ongoing development. PRs and issues welcome encouraged necessary.

Status of this document

Very early beginnings of a spec outline.

Overview

People and the content they create are the core componants of the social web; they make up the social graph. This document describes (eventually) a standard way in which people can:

  • create, update and delete social content;
  • connect with other people and subscribe to their content;
  • interact with other people's content;
  • be notified when other people interact with their content;

regardless of what that content is or where it is stored.

This should provide the building blocks for new, interoperable social systems that allow people to express themselves, ideas to be shared, organisations to collaborate, and.. all manner of other exciting things.

Vocabulary

ActivityPump Micropub SoLiD
ActivityStreams 2.0 Microformats2 Any suitable RDF ontology (eg. FOAF, SIOC)

Syntax

ActivityPump Micropub SoLiD
JSON-LD form-encoded or JSON RDF (Turtle or JSON-LD)

Authorization

  • Bearer tokens for authentication
  • Leave obtaining the bearer token out of the spec, since there are already several RFCs for ways to obtain bearer tokens.
  • ...access control...

Identity

Not to be over-thought. Terminology:

ActivityPump Micropub SoLiD
Actor from ActivityStreams2.0 author from microformats2 Any suitable ontology term, eg. foaf:Agent

Engage debate: relationship between people (personas, no IRL requirement; or orgs or groups or whatever), profiles (documents about people) and accounts.

We are not trying to standardize identity on the web, but we need to be clear about our core assumptions.

Publishing

Exposing content

Publish a feed/stream that others can read (subject to permissions).

ActivityPump Indieweb
JSON at discoverable outbox HTML page marked up with microformats2 (ie. h-entrys inside a h-feed)

Creating content

POST to an endpoint that can suitably handle the data.

ActivityPump Micropub
Endpoint discoverable outbox rel="micropub"
Create { Form-encoding:
"@type": "Create", h=entry&
"published": "2015-05-15T13:06:00+02:00", content=hello+moon&
"actor": "http://rhiaro.co.uk/about#me", category[]=indieweb&
"object": { category[]=micropub&
"content": "hello world", author=http://rhiaro.co.uk/about#me&
"category": ["indieweb","micropub"] published=2015-05-15T13:06:00+02:00
} JSON:
} {
"type": [h-entry],
"properties": {
"content": ["hello world"],
"category": ["indieweb","micropub"]
}
}
Update
Delete

Subscribing

  • follow activity
  • PuSH

Propagating

Propagating content

  • AP section 8, posting to inbox
  • webmentions

Updating the social graph

side effects, adding to collections etc