The Early Web
- Mostly static HTML pages
- Content updated manually
- Required learning HTML
- and learning about DNS & hosting
1997-2002: Blogs
1997-2002: Blogs
- A domain name with a blog was one's online identity
- Blogging tools allowed people to focus on creating content rather than code
- People made personal connections via reading and commenting on blogs
- RSS/ATOM feeds for subscribing to others' blogs
- Pingback to know who was linking to who
2002-2006 Rise of Social Networks
- Friendster
- Myspace
- Orkut
- Facebook
Why?
- Easy signup
- Follow people with one click
- Integrated reading and posting experience
Meanwhile...
Trackback - too easily spammed
Pingback - noisy user experience
Decline of Blogs
- Distracted by format wars, blog UX stopped evolving
- People went to social networks to connect to other people
- Silo UX provided more meaningful interactions
- People converted their websites to flat "business cards"...
- ...and moved to where writing was easier
2007: Twitter popularizes simplicity
screenshot: Brian Solis
Twitter App Ecosystem
- Twitter.com
- TweetDeck (Windows, OS X, iOS, Android, Browser)
- Twitterific (OS X, iOS)
- HootSuite (browser based)
- Echofon (Windows, OS X, iOS, Firefox)
- Janetter (Windows, OS X, iOS, Android)
- Tweetings (Windows, OS X)
- Destroy Twitter (Windows, OS X, Linux)
- ... many more!
2010: Federated Social Web Summit
Portland, Oregon
2010: Federated Social Web Summit
- Specs were too hard
- OpenID, OAuth 1, Salmon, XML namespaces everywhere
- Too few implementations
- Too much emphasis on plumbing
"I don't care about federation,
I care about my content,
and my friends."
— Tantek Çelik
Simplify
- OpenID → RelMeAuth → IndieAuth
- Microformats/RDFa → Microformats 2
- Pingback → Webmention
- Make things easier for publishers and consumers
- Driven by user experience
2014: W3C Social Web Working Group
Standardize protocols, APIs and vocabularies
for building the Social Web
w3.org/wiki/socialwg
Group Deliverables
- Social Data Syntax - a JSON-based syntax to transfer status updates and other social info across systems
- Social API - an API that can create social data, as well as consume it
- Federation Protocol - to allow sharing information between disparate systems
Current Specs
- Activity Streams 2.0
- ActivityPub
- Micropub
- Webmention
Spec Lifecycle
- ED - Editor's Draft
- WD - Working Draft
- CR - Candidate Recommendation
- PR - Proposed Recommendation
- REC - Recommendation
Activity Streams 2.0
An activity stream is a collection of actions that have been taken by users in a given system
Activity Streams 2.0
- "Amy posted a note"
- "Ben tagged you in a photo"
- "Chris started following you"
- "Evan invited you to an event"
- "Jessica commented on a post"
Examples
{
"@context": "http://www.w3.org/ns/activitystreams",
"type": "Travel",
"name": "Sally went to work",
"actor": {
"type": "Person",
"name": "Sally"
},
"target": {
"type": "Place",
"name": "Work"
}
}
Examples
{
"@context": "http://www.w3.org/ns/activitystreams",
"type": "Follow",
"name": "Sally followed John",
"actor": {
"type": "Person",
"name": "Sally"
},
"object": {
"type": "Person",
"name": "John"
}
}
Activity Streams 2.0
Current Status:
- Working Draft - requesting CR transition soon
- Replaces previous (XML) version of Activity Streams
- ~2 current interoperable implementations
- Seeking implementers and feedback
ActivityPub
An API to create Activity Streams actions and otherwise manipulate social data
as well as a way to federate Activity Streams actions between servers
Examples
{
"type": "Like",
"actor": "https://example.net/~mallory",
"to": ["https://hatchat.example/sarah/",
"https://example.com/peeps/john/"],
"object": {
"id": "https://example.org/~alice/note/23",
"type": "Note",
"author": "https://example.org/~alice",
"content": "I'm a goat"
}
}
ActivityPub
- Specifies followers/following collections
- "Inbox" and "outbox" streams
- Specifies audience targeting of content
ActivityPub
Current Status:
- Working Draft
- May split into two docs, client-server and server-server
Micropub
An API to create posts such as notes, photos, comments, etc.
Enables using third-party apps to post content to your own website
Creating a Post
h=entry&
content=Hello+world&
category[]=foo&category[]=bar
Creating a Post
{
"type": ["h-entry"],
"properties": {
"content": ["Hello world"],
"category": ["foo","bar"]
}
}
Updating a Post
{
"mp-action": "update",
"url": "http://example.com/post/1",
"replace": {
"content": ["Hello moon"]
}
}
Deleting a Post
{
"mp-action": "delete",
"url": "http://example.com/post/1"
}
Micropub
Current Status:
- Working Draft - requesting CR transition soon
- Several interoperable clients and servers
- Creating posts is stable, read/update/delete is nearly stable
Micropublish
Browser Extension
Pebble App
Lithograph
updates bookmarks to add a screenshot
Webmention
A simple protocol to notify a URL when you link to it
Primarily used for cross-site comments, likes, RSVPs, etc
Example
source=https://aaronparecki.com/2016/06/04/8/&
target=http://werd.io/2016/really-happy-to-be-here-at-indiewebsummit
Webmention
Current Status:
- Candidate Recommendation (CR)
- Dozens of interoperable implementations
- Working on extensions for presentation, anti-spam techniques, and private content
webmention.rocks
Validator / Debugger
Live Demo!
Posting a comment to webmention.rocks
Live Demo!
Receiving a comment from webmention.rocks
Get Involved
- Read the specs w3.org/wiki/Socialwg
- Build something!
- Use the validators
- Use a Micropub app like Quill or OwnYourGram
- Join the conversation by commenting on someone's post with Webmention