Slides from my session at Google I/O covering the latest and most important trends of the Social Web and dive deep into where this is all going, at the conceptual level.
From the concepts of digital identity, relationships, and social objects, this session will cover emerging technologies like WebFinger, Salmon, ActivityStrea.ms, OpenID, and OAuth.
http://code.google.com/events/io/2010/sessions/open-and-social-web.html
1. The open & social web
Social Web - Chris Messina
This session will cover the latest and most important trends of the Social Web and dive deep into where this is all going, at both technical and conceptual levels. From the concepts of digital identity, relationships, and social
objects, this session will cover emerging technologies like WebFinger, Salmon, ActivityStrea.ms, OpenID, OAuth and OpenSocial.
Session type: 101
Attendee requirements: A web developer background and an interest in the social web.
Tags: ActivityStrea.ms, Salmon, WebFinger, PubSubHubbub, PortableContacts, OpenID, OAuth, OpenSocial
Hashtag: #googlesocial
2. The Open & Social Web
Chris Messina
May 19
Today I’m going to talk to you about Google and the Social web [CLICK] but really this is more
about the social web.
5. @chris.messina
buzz.google.com/chrismessina
@chrismessina
#io #googlesocial
Before we begin, : chris.messina on Buzz; chrismessina on Twitter.
The hashtag is #googlesocial
6. View live notes and ask questions
about this session on Google Wave:
http://j.mp/io-googlesocial
Before I begin I’d like to invite you to view live notes and ask questions about this session on
Google Wave
at j.mp/io-googlesocial
one more thing.
7. SURGEON GENERAL’S WARNING:
THIS PRESENTATION
IS LITE ON CODE
Photo by Bob B. Brown - http://flic.kr/p/7g21oL
THIS PRESENTATION IS LITE ON CODE. If you were expecting code... [CLICK]
8. Bridging the Islands:
Building fluid social experiences across websites
Joseph Smarr & John Panzer
3:00pm - 4:00pm in Room 9
I suggest you check out “Bridging the Islands” presented by Joseph Smarr and John Panzer
this afternoon from 3:00pm to 4:00pm in Room 9.
Now, I did want to make this experience less excruciating if you INSIST on seeing code...
here’s a little moment of zen for you... ready? [CLICK]
11. </head>
Ok, I hope that will hold you over. [CLICK]
Let’s get into the meat of the talk... starting with a PROLOGUE to give you a sense for what
I’m going to talk about today.
12. <body>
Ok, I hope that will hold you over. [CLICK]
Let’s get into the meat of the talk... starting with a PROLOGUE to give you a sense for what
I’m going to talk about today.
13. Prologue
Ok, I hope that will hold you over. [CLICK]
Let’s get into the meat of the talk... starting with a PROLOGUE to give you a sense for what
I’m going to talk about today.
14. First, these are two characters that you’re going to get to know over the course of this story.
these are “open web technologists”
they play an important role throughout our story... [CLICK]
15. “Open Web Technologists”
First, these are two characters that you’re going to get to know over the course of this story.
these are “open web technologists”
they play an important role throughout our story... [CLICK]
16. Chapter 1
for example, in chapter 1, they introduce OpenID, a decentralized identity technology.
17. Chapter 1
for example, in chapter 1, they introduce OpenID, a decentralized identity technology.
18. Chapter 2
in chapter 2, they develop WebFinger, a technology for discovering information about email
addresses.
19. Chapter 2
in chapter 2, they develop WebFinger, a technology for discovering information about email
addresses.
20. Chapter 3
And finally, in Chapter 3 they introduce Activity Streams, Salmon, and PubSubHubbub
...which make it possible to share rich activities across networks, in real time, and then
comment back with equal fidelity.
21. Chapter 3
And finally, in Chapter 3 they introduce Activity Streams, Salmon, and PubSubHubbub
...which make it possible to share rich activities across networks, in real time, and then
comment back with equal fidelity.
22. The Open & Social Web
these three chapters are the start of the story of the open and social web.
and so we begin...
40. you see, when Kate and Jack left to go to the new island, they left their family and friends
behind.
41. you see, when Kate and Jack left to go to the new island, they left their family and friends
behind.
42. As it happened, visiting other islands had become a hassle.
Immigration was a real pain in the butt, and having to fill out forms like these [CLICK]
43. As it happened, visiting other islands had become a hassle.
Immigration was a real pain in the butt, and having to fill out forms like these [CLICK]
44. ...really turned people off from traveling.
Especially when EVERY island wanted you to register with them!
You could no longer just show up and hang out.
45. ...really turned people off from traveling.
Especially when EVERY island wanted you to register with them!
You could no longer just show up and hang out.
46. ...really turned people off from traveling.
Especially when EVERY island wanted you to register with them!
You could no longer just show up and hang out.
47. Worse still, every island forced people to learn a secret chant that they had to recite every
time they came back to the island. [CLICK]
48. @!j
&4K
m$2
Worse still, every island forced people to learn a secret chant that they had to recite every
time they came back to the island. [CLICK]
49. @!j
&4K
m$2
Worse still, every island forced people to learn a secret chant that they had to recite every
time they came back to the island. [CLICK]
50. $%&"'
()*+!
!"#
&/0
*-1
$,&")
)*+-.
it was simply too much and over time, people just melted down from the stress of having to
manage all these secrete chants!
51. it was simply too much and over time, people just melted down from the stress of having to
manage all these secrete chants!
60. Photo by Teresa Stanton
OpenID is like a personal skeleton key for all your web accounts.
By using an account that you already have to sign up for another website, not only is it more
convenient, but you are able to start developing your own universal web identity — that, if
you CHOOSE TO, you can own.
61. Unique OpenID Relying Parties
As of July 1, 2009
Data from Janrain
So as we’ve seen an explosion in the number of OpenID relying parties in the last five years
— users are carefully considering which account they want to use to sign in.
62. Unique OpenID Relying Parties
As of July 1, 2009
50,000
40,000
30,000
20,000
10,000
0
5
06
06
06
6
07
07
07
7
08
08
08
8
09
09
/0
/0
/0
/0
1/
4/
7/
1/
4/
7/
1/
4/
7/
1/
7/
10
10
10
Data from Janrain
10
So as we’ve seen an explosion in the number of OpenID relying parties in the last five years
— users are carefully considering which account they want to use to sign in.
63. Unique OpenID Relying Parties
As of July 1, 2009
50,000
40,000
30,000
20,000
10,000
0
5
06
06
06
6
07
07
07
7
08
08
08
8
09
09
/0
/0
/0
/0
1/
4/
7/
1/
4/
7/
1/
4/
7/
1/
7/
10
10
10
Data from Janrain
10
So as we’ve seen an explosion in the number of OpenID relying parties in the last five years
— users are carefully considering which account they want to use to sign in.
64. OpenID usage trends
OpenID Providers on UserVoice
34% 33%
10%
15%
8%
Google Facebook Yahoo! Other
Twitter
Data from Janrain, May 2010
I want you to look at these graphs very carefully. Each color represents a different identity
provider.
Google - 34%
Facebook - 33%
Twitter - 15%
Yahoo - 10%
65. OpenID usage trends
OpenID Providers on Interscope Records
8%
12%
12%
52%
6%
10%
Google Facebook Yahoo! Other
Twitter MySpace
Data from Janrain, May 2010
...and on each site, people use different identity providers depending on the context.
Google 12%
Facebook 43%
MySpace 24%
66. OpenID usage trends
OpenID Providers on sulit.com.ph
10%
24%
1%
64%
Google Facebook Yahoo! Other
Chart from Janrain, January 2009
Especially when you’re thinking about an international audience, everything changes.
Yahoo - 64%
Google - 24%
Facebook - 10%
67. OpenID usage trends
Sign in preferences across all Janrain properties
23.5%
Google
38.8%
Facebook
Yahoo!
Other (MySpace, Windows Live, AOL, etc)
13.0%
Twitter
5.8%
18.9%
Data from Janrain, May 2010
And across all the sites that use RPX, a third-party authentication widget, we see a different
composition:
Google - 37%
Facebook - 26%
Yahoo - 11%
Other - 18%
Twitter - 6%
72. So back with the islands, people were able to travel and visit each other just fine, but a new
problem emerged with people finding homes on new islands.
73. Chapter 2:
Staying connected
So back with the islands, people were able to travel and visit each other just fine, but a new
problem emerged with people finding homes on new islands.
78. Before Jack and Kate left to go live at the new island, their family and friends could just send
messages to “Kate” or call up “Jack”.
When they moved to the new island, their family and friends now needed to specify WHICH
Kate and WHICH Jack they wanted to send a message to, making it much harder to stay in
touch.
79. ? ?
Before Jack and Kate left to go live at the new island, their family and friends could just send
messages to “Kate” or call up “Jack”.
When they moved to the new island, their family and friends now needed to specify WHICH
Kate and WHICH Jack they wanted to send a message to, making it much harder to stay in
touch.
80. As it happened, the open web technologists got together and decided to solve this problem
once and for all...
81. As it happened, the open web technologists got together and decided to solve this problem
once and for all...
83. The Hammer Stack
Discovery for the open web
WebFinger relies on an emerging set of technologies and formats that together we call “The
Hammer Stack”
84. How WebFinger works
Enter email: Email Lookup
Let’s walk through WebFinger works in practice.
So I’ll type my email in here and click LOOKUP [CLICK]
85. How WebFinger works
Enter email: chris.messina@gmail.com Lookup
Let’s walk through WebFinger works in practice.
So I’ll type my email in here and click LOOKUP [CLICK]
86. How WebFinger works
Enter email: chris.messina@gmail.com Lookup
Let’s walk through WebFinger works in practice.
So I’ll type my email in here and click LOOKUP [CLICK]
87. How WebFinger works
Discovering a user’s WebFinger profile
chris.messina@gmail.com
We take the email I’ve supplied, split it at the @ symbol, and use grab the domain’s host-
meta to discover the user’s WebFinger endpoint.
88. How WebFinger works
Discovering a user’s WebFinger profile
chris.messina@gmail.com
{
domain
We take the email I’ve supplied, split it at the @ symbol, and use grab the domain’s host-
meta to discover the user’s WebFinger endpoint.
89. How WebFinger works
Discovering a user’s WebFinger profile
chris.messina@gmail.com
{
domain
We take the email I’ve supplied, split it at the @ symbol, and use grab the domain’s host-
meta to discover the user’s WebFinger endpoint.
90. How WebFinger works
Use host meta to retrieve an LRDD document
$curl http://gmail.com/.well-known/host-meta
91. How WebFinger works
Use host meta to retrieve an LRDD document
$curl http://gmail.com/.well-known/host-meta
92. How WebFinger works
Use host meta to retrieve an LRDD document
$curl http://gmail.com/.well-known/host-meta
93. How WebFinger works
Server returns LRDD document
<?xml version='1.0' encoding='UTF-8'?>
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'
xmlns:hm='http://host-meta.net/xrd/1.0'>
<hm:Host xmlns='http://host-meta.net/xrd/1.0'>gmail.com</hm:Host>
<Link rel='lrdd'
template='http://www.google.com/s2/webfinger/?q={uri}'>
<Title>Resource Descriptor</Title>
</Link>
</XRD>
94. How WebFinger works
Server returns LRDD document
<?xml version='1.0' encoding='UTF-8'?>
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'
xmlns:hm='http://host-meta.net/xrd/1.0'>
<hm:Host xmlns='http://host-meta.net/xrd/1.0'>gmail.com</hm:Host>
<Link rel='lrdd'
template='http://www.google.com/s2/webfinger/?q={uri}'>
<Title>Resource Descriptor</Title>
</Link>
</XRD>
95. How WebFinger works
Plugin acct: into URI Template
http://www.google.com/s2/webfinger/?q={uri}
so let’s bring back my email address and turn it into an acct: URI and plug it into the URI
template we got from the host-meta file.
96. How WebFinger works
Plugin acct: into URI Template
chris.messina@gmail.com
http://www.google.com/s2/webfinger/?q={uri}
so let’s bring back my email address and turn it into an acct: URI and plug it into the URI
template we got from the host-meta file.
97. How WebFinger works
Plugin acct: into URI Template
acct:chris.messina@gmail.com
http://www.google.com/s2/webfinger/?q={uri}
so let’s bring back my email address and turn it into an acct: URI and plug it into the URI
template we got from the host-meta file.
98. How WebFinger works
Plugin acct: into URI Template
http://www.google.com/s2/webfinger/?q={uri}
acct:chris.messina@gmail.com
so let’s bring back my email address and turn it into an acct: URI and plug it into the URI
template we got from the host-meta file.
99. How WebFinger works
Plugin acct: into URI Template
http://www.google.com/s2/webfinger/?q={uri}
acct:chris.messina@gmail.com
so let’s bring back my email address and turn it into an acct: URI and plug it into the URI
template we got from the host-meta file.
100. How WebFinger works
Retrieve WebFinger document
$curl http://www.google.com/s2/webfinger/?q=acct:chris.messina@gmail.com
101. How WebFinger works
Retrieve WebFinger document
$curl http://www.google.com/s2/webfinger/?q=acct:chris.messina@gmail.com
102. How WebFinger works
Retrieve WebFinger document
$curl http://www.google.com/s2/webfinger/?q=acct:chris.messina@gmail.com
103. How WebFinger works
XRD Profile
<?xml version='1.0'?>
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'>
<Subject>acct:chris.messina@gmail.com</Subject>
<Alias>http://www.google.com/profiles/chris.messina</Alias>
<Link rel='http://portablecontacts.net/spec/1.0'
href='http://www-opensocial.googleusercontent.com/api/people/'/>
<Link rel='http://webfinger.net/rel/profile-page'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='http://microformats.org/profile/hcard'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='http://gmpg.org/xfn/11'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='http://specs.openid.net/auth/2.0/provider'
href='http://www.google.com/profiles/chris.messina'/>
<Link rel='describedby'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='describedby'
href='http://s2.googleusercontent.com/webfinger/?q=chris.messina%40gmail.com&fmt=foaf'
type='application/rdf+xml'/>
<Link rel='http://schemas.google.com/g/2010#updates-from'
href='http://buzz.googleapis.com/feeds/102034052532213921839/public/posted'
type='application/atom+xml'/>
</XRD>
from here I can grab any service that I need.
104. How WebFinger works
XRD Profile
<?xml version='1.0'?>
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'>
<Subject>acct:chris.messina@gmail.com</Subject>
<Alias>http://www.google.com/profiles/chris.messina</Alias>
<Link rel='http://portablecontacts.net/spec/1.0'
href='http://www-opensocial.googleusercontent.com/api/people/'/>
<Link rel='http://webfinger.net/rel/profile-page'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='http://microformats.org/profile/hcard'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='http://gmpg.org/xfn/11'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='http://specs.openid.net/auth/2.0/provider'
href='http://www.google.com/profiles/chris.messina'/>
<Link rel='describedby'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='describedby'
href='http://s2.googleusercontent.com/webfinger/?q=chris.messina%40gmail.com&fmt=foaf'
type='application/rdf+xml'/>
<Link rel='http://schemas.google.com/g/2010#updates-from'
href='http://buzz.googleapis.com/feeds/102034052532213921839/public/posted'
type='application/atom+xml'/>
</XRD>
from here I can grab any service that I need.
105. and so now if you wanted to do something like OpenID...
106. How WebFinger works
XRD Profile
<?xml version='1.0'?>
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'>
<Subject>acct:chris.messina@gmail.com</Subject>
<Alias>http://www.google.com/profiles/chris.messina</Alias>
<Link rel='http://portablecontacts.net/spec/1.0'
href='http://www-opensocial.googleusercontent.com/api/people/'/>
<Link rel='http://webfinger.net/rel/profile-page'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='http://microformats.org/profile/hcard'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='http://gmpg.org/xfn/11'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='http://specs.openid.net/auth/2.0/provider'
href='http://www.google.com/profiles/chris.messina'/>
<Link rel='describedby'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='describedby'
href='http://s2.googleusercontent.com/webfinger/?q=chris.messina%40gmail.com&fmt=foaf'
type='application/rdf+xml'/>
<Link rel='http://schemas.google.com/g/2010#updates-from'
href='http://buzz.googleapis.com/feeds/102034052532213921839/public/posted'
type='application/atom+xml'/>
</XRD>
you would just take that XRD file...
107. How WebFinger works
XRD Profile
<?xml version='1.0'?>
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'>
<Subject>acct:chris.messina@gmail.com</Subject>
<Alias>http://www.google.com/profiles/chris.messina</Alias>
<Link rel='http://portablecontacts.net/spec/1.0'
href='http://www-opensocial.googleusercontent.com/api/people/'/>
<Link rel='http://webfinger.net/rel/profile-page'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='http://microformats.org/profile/hcard'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='http://gmpg.org/xfn/11'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='http://specs.openid.net/auth/2.0/provider'
href='http://www.google.com/profiles/chris.messina'/>
<Link rel='describedby'
href='http://www.google.com/profiles/chris.messina'
type='text/html'/>
<Link rel='describedby'
href='http://s2.googleusercontent.com/webfinger/?q=chris.messina%40gmail.com&fmt=foaf'
type='application/rdf+xml'/>
<Link rel='http://schemas.google.com/g/2010#updates-from'
href='http://buzz.googleapis.com/feeds/102034052532213921839/public/posted'
type='application/atom+xml'/>
</XRD>
and look for the rel value that you need and the appropriate endpoint.
108. Putting it together
Making OpenID easier using an email address
Enter email: Email Connect
Lookup
So, what if we turned this lookup service into an OpenID experience?
Let’s try this with an email address! I hit connect...
109. Putting it together
Making OpenID easier using an email address
Enter email: Email Connect
So, what if we turned this lookup service into an OpenID experience?
Let’s try this with an email address! I hit connect...
110. Putting it together
Making OpenID easier using an email address
Enter email: chris.messina@gmail.com Connect
So, what if we turned this lookup service into an OpenID experience?
Let’s try this with an email address! I hit connect...
111. Putting it together
Making OpenID easier using an email address
Enter email: chris.messina@gmail.com Connect
So, what if we turned this lookup service into an OpenID experience?
Let’s try this with an email address! I hit connect...
112. and if I’m already logged in, I’ll be taken to a page like this, where I can click on button to
sign in.
119. Which brings us to the third part of our story... keeping in touch and sharing.
120. Chapter 3:
Keeping in touch
and sharing
Which brings us to the third part of our story... keeping in touch and sharing.
121. so one other problem that islanders encountered was the slow delivery of correspondence.
essentially they had to keep checking: was there a new message? how about now? how about
now?
122. so one other problem that islanders encountered was the slow delivery of correspondence.
essentially they had to keep checking: was there a new message? how about now? how about
now?
123. so one other problem that islanders encountered was the slow delivery of correspondence.
essentially they had to keep checking: was there a new message? how about now? how about
now?
125. and tracking all of their activities in order to keep their friends and family up to date.
126. but sharing richer and richer media meant a need for more efficient and faster ways of
sending this content around.
127. , Kate
d r Kate nd
H yd Isla
hn is t 01209
!
s k e nst
-ja
but sharing richer and richer media meant a need for more efficient and faster ways of
sending this content around.
128. some resourceful islanders got together and decided to solve this problem once and for all
with a series of technologies...
129. some resourceful islanders got together and decided to solve this problem once and for all
with a series of technologies...
131. Rather than having to constantly check to see if there were new messages, now Kate could
just sit back and relax. Whenever Walt sent a message, it would
132. Rather than having to constantly check to see if there were new messages, now Kate could
just sit back and relax. Whenever Walt sent a message, it would
133. hms hubbub
Rather than having to constantly check to see if there were new messages, now Kate could
just sit back and relax. Whenever Walt sent a message, it would
134. hms hubbub
Hubs stand in the middle and deliver content to the subscribers in real time.
135. (Slowed down 1000x)
hms hubbub
Hubs stand in the middle and deliver content to the subscribers in real time.
137. 1999
This story starts back in 1999 when a format called RSS was introduced by Netscape as a
content-gathering mechanism for My Netscape Network (MNN) back when portals were all
the rage (pre-social networks).
By providing a simple snapshot-in-a-document, web site producers acquired audience
through the presence of their content on My Netscape.
138. so, you’d have someone like the NYTimes wanting to grow their online audience...
139. ...and they’d use RSS to get their content into the Netscape portal.
140. Copyright 2000 ZWave, LLC
...and they’d use RSS to get their content into the Netscape portal.
141. RSS
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<item>
<title>When Will Location-Based Coupons Take Off?</title>
<link>http://bits.blogs.nytimes.com/2010/03/12/when-will-
location-based-mobile-coupons-take-off/</link>
<pubDate>Fri, 12 Mar 2010 21:38:26 +0000</pubDate>
<creator>By CLAIRE CAIN MILLER</creator>
<description>
People want to receive location-based cellphone coupons,
but most have not, according to a Web analytics firm.
</description>
</item>
</channel>
</rss>
RSS looks like this.
142. RSS
title + link + description
the only mandatory fields in RSS are title, link, and description — which makes it an
extremely flexible format. The only problem is that aggregators have to do a lot of
guesswork about what’s in it.
this was complicated by the various flavors of RSS (0.9, 0.91, 0.92, 0.93, 2.0 et al)
143. 2005
this in 2005, a group of people got together to create a “better specified” syndication format
called Atom.
144. Atom
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<entry>
<title>When Will Location-Based Coupons Take Off?</title>
<link rel=”alternate”>http://bits.blogs.nytimes.com/2010/03/12/when-will-
location-based-mobile-coupons-take-off/</link>
<id>urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6</id>
<updated>Fri, 12 Mar 2010 21:38:26 +0000</updated>
<author>
<name>By CLAIRE CAIN MILLER</name>
</author>
<summary>
People want to receive location-based cellphone coupons,
but most have not, according to a Web analytics firm.
</summary>
</entry>
</feed>
here’s what ATOM looks like.
145. Atom
title + link + summary +
author + id + updated
so, in five years, the required elements of RSS essentially doubled, and we now had a unique
way to identity a feed entry, the author, and when it was last changed.
146. even still, this format was really still designed for the case of syndicating ARTICLES into
PORTALS.
147. Copyright 2000 ZWave, LLC
even still, this format was really still designed for the case of syndicating ARTICLES into
PORTALS.
149. so, you take an article like this, turn it into RSS or ATOM...
150. so, you take an article like this, turn it into RSS or ATOM...
151. and the most interesting thing the browser can do for you is turn this rich and well designed
page into something like this... [click]
152. and the most interesting thing the browser can do for you is turn this rich and well designed
page into something like this... [click]
153. and yet we know that people are performing more and more activities online.
and yet, regardless of its type, sites only publish this information as RSS or Atom
154. so no matter what, to sites like Friendfeed, Facebook, or Google Buzz, all these activities all
look the same.
155. icons by Fast Icon
so how do you differentiate all these different feeds when you only have one basic format?
158. actor verb object target
the ActivityStreams model presents an “actor verb object” tuple, with an “target” parameter
159. Atom
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<entry>
<title>...</title>
<link rel=”alternate”>...</link>
<id>...</id>
<updated>...</updated>
<author>
<name>...</name>
</author>
<summary>
...
</summary>
</entry>
</feed>
so let’s take a typical Atom entry template...
160. Atom
title + link + summary +
author + id + updated
(remember that the foundation of Atom is title, link, summary, author, id, and the updated
time.)
161. Atom+ActivityStreams
title + link + summary +
author + id + updated
+ verb + object-type + target
and let’s layer in verb, object-type, and target — reusing “author” for the actor element...
163. Atom+ActivityStreams
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/">
<entry>
<title>...</title>
<link rel=”alternate”>...</link>
<id>...</id>
<updated>...</updated>
<author>
<activity:object-type>person</activity:object-type>
<name>...</name>
</author>
<activity:verb>post</activity:verb>
<activity:object>
<activity:object-type>note</activity:object-type>
<content type=”html”>
...
</content>
</activity:object>
</entry>
</feed>
here are the new parts.
164. Atom+ActivityStreams
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/">
<entry>
<title>...</title>
<link rel=”alternate”>...</link>
<id>...</id>
<updated>...</updated>
<author>
person
<activity:object-type>person</activity:object-type>
<name>...</name>
</author>
post
<activity:verb>post</activity:verb>
<activity:object>
note
<activity:object-type>note</activity:object-type>
<content type=”html”>
...
</content>
</activity:object>
</entry>
</feed>
so, see what this adds for the aggregator?
165. person post note
as the most basic example, we’re essentially telling the aggregator that a person posted a
note.
166. person shared link
but this model works for someone sharing a link...
167. person started following person
or someone following someone else...
168. service updated status
or if a service updates its status.
169. so before activity streams, all of this syndicated data was treated the same and lead to
overload!
170. so before activity streams, all of this syndicated data was treated the same and lead to
overload!
171. so before activity streams, all of this syndicated data was treated the same and lead to
overload!
172. icons by Fast Icon
but now, with activity streams and relevancy filters, the most relevant, useful data streams to
you based on the appropriate context.
173. icons by Fast Icon
but now, with activity streams and relevancy filters, the most relevant, useful data streams to
you based on the appropriate context.
174. Salmon
So what happens when you get that nugget of information that begs to be responded to?
If you’re on the same island as the sender, well, you walk right up to them... but if they’re not
— and they live on another island, that’s where Salmon comes in.
175. Just as before, when you receive content, you want to respond to it. Salmon is one emerging,
secure mechanism to push comments across the web.
PubSubHubbub doesn’t work in this case because it uses a one-way channel. Instead, we rely
on salmon’s excellent sense of smell to navigate their way back to where they came from.
176. Just as before, when you receive content, you want to respond to it. Salmon is one emerging,
secure mechanism to push comments across the web.
PubSubHubbub doesn’t work in this case because it uses a one-way channel. Instead, we rely
on salmon’s excellent sense of smell to navigate their way back to where they came from.
177. 4 !"#$%&'
3'#$*!"#$%&'
(&)*+,%#-.
/01/2
5"#-6,!
—6#5'
Just as before, when you receive content, you want to respond to it. Salmon is one emerging,
secure mechanism to push comments across the web.
PubSubHubbub doesn’t work in this case because it uses a one-way channel. Instead, we rely
on salmon’s excellent sense of smell to navigate their way back to where they came from.
178. 4 !"#$%&'
3'#$*!"#$%&'
(&)*+,%#-.
/01/2
5"#-6,!
—6#5'
Just as before, when you receive content, you want to respond to it. Salmon is one emerging,
secure mechanism to push comments across the web.
PubSubHubbub doesn’t work in this case because it uses a one-way channel. Instead, we rely
on salmon’s excellent sense of smell to navigate their way back to where they came from.
179. We can also use the same mechanism to notify people when they are mentioned in posts.
Think of salmon mentions as evolved trackbacks where you can now send a pingback to
someone by using WebFinger to discover their salmon endpoint!
180. 4 !"#$%&'
3'#$*!"#$%&'
(&)*+,%#-.
/01/2
5"#-6,!
—6#5'
We can also use the same mechanism to notify people when they are mentioned in posts.
Think of salmon mentions as evolved trackbacks where you can now send a pingback to
someone by using WebFinger to discover their salmon endpoint!
181. 4 !"#$%&'
3'#$*!"#$%&'
(&)*+,%#-.
/01/2
5"#-6,!
—6#5'
'4 !"#$%&'
3'#$*!"#$%&
(&)*+,%#-.
/01/2
5"#-6,!
—6#5'
We can also use the same mechanism to notify people when they are mentioned in posts.
Think of salmon mentions as evolved trackbacks where you can now send a pingback to
someone by using WebFinger to discover their salmon endpoint!
182. 4 !"#$%&'
3'#$*!"#$%&'
(&)*+,%#-.
/01/2
5"#-6,!
—6#5'
#&*+%,-.#('
"#$%"&'()@
8 ,91:"#$0 !
/&*+%,- 012)-,3),-
45647
;<=>?!
—$"-,
We can also use the same mechanism to notify people when they are mentioned in posts.
Think of salmon mentions as evolved trackbacks where you can now send a pingback to
someone by using WebFinger to discover their salmon endpoint!
183. 2"+3"#$*
!"#$@%&"''(%
2"4+)56+
+89":7 )&"''(%*+,,,
nst ! -./01
—:%&7+;
We can also use the same mechanism to notify people when they are mentioned in posts.
Think of salmon mentions as evolved trackbacks where you can now send a pingback to
someone by using WebFinger to discover their salmon endpoint!
184. http://j.mp/pubsubhubbub
http://activitystrea.ms
http://salmon-protocol.org
to learn more about these technologies, visit j.mp/pubsubhubbub, activitystrea.ms, and
salmon-protocol.org
185. And so now we’ve put together three very exciting technologies and once again...
186. And so now we’ve put together three very exciting technologies and once again...
190. Chapter 1
We first learned about how the problem of inter-island identity was solved with OpenID...
191. Chapter 1
We first learned about how the problem of inter-island identity was solved with OpenID...
192. Chapter 2
then we learned about how WebFinger could act as a kind of forwarding service to make it
possible for people to stay in touch even aftey moved...
and a secondary benefit was to make the process of using OpenID easier.
193. Chapter 3
Finally we learned about Activity Streams, Salmon, and PubSubHubbub which make it possible
to share rich activities across networks, in real time, and then respond with equal fidelity.
194. Chapter 3
Finally we learned about Activity Streams, Salmon, and PubSubHubbub which make it possible
to share rich activities across networks, in real time, and then respond with equal fidelity.
195. Google and the Social Web
so let’s tie this back to Google and the Social Web.
196. Credit: xkcd - xkcd.com/256
At Google, we see the entire web as one big social environment, bridged by a number of
open technologies....
197. Though they are still emerging and involving, Google is proud to support OpenID, WebFinger,
OAuth, ActivityStreams, PubSubHubbub, and Salmon.
Together these technologies represent several of the underpinning technologies that will
form the foundation of the future web.
198. Though they are still emerging and involving, Google is proud to support OpenID, WebFinger,
OAuth, ActivityStreams, PubSubHubbub, and Salmon.
Together these technologies represent several of the underpinning technologies that will
form the foundation of the future web.
199. And so that brings me to Google Buzz, Google’s latest entry into the social scene.
As it turns out, all the technologies I just told you about help to power the Buzz platform.
This helps frame the context for the work that Google is doing on the social web.
In fact...
200. “ The idea is that someday, any host on
the web should be able to implement
these open protocols ... without
any one company in the middle.
DeWitt Clinton, Google
Photo by Joi Ito
Writing about Google Buzz, DeWitt Clinton said:
“The idea is that someday, any host on the web should be able to implement these open
protocols and send messages back and forth in real time with users from any network,
without any one company in the middle.
201. “ Google Buzz will be just another node
(a very good node, I hope)
among many peers.”
DeWitt Clinton, Google
Photo by Joi Ito
This is really important. The goal of Google Buzz, on one hand, is to create an excellent
social experience for Google users...
202. Image from the Opte Project
...and on the other to promote the adoption and development of technologies that expand
the size and participation on the social web.
206. Don’t forget to checkout out the
Google Wave discussion:
http://j.mp/io-googlesocial
Make sure to check out the backchannel for this talk at j.mp/io-googlesocial
207. What's the hubbub about Google Buzz APIs?
Chris Chabot, Marco Kaiser (Seesmic), Ming Yong (Socialwok)
1:45pm - 2:45pm in Room 8
make sure to check out Chris Chabot’s talk called “What's the hubbub about Google Buzz
APIs?” featuring Loic Le Meur and Ming Yong from 1:45pm until 2:45pm in Room 8
208. Bridging the Islands:
Building fluid social experiences across websites
Joseph Smarr & John Panzer
3:00pm - 4:00pm in Room 9
And, for then for the code-heavy Part II of this talk, please see “Bridging the Islands”
presented by Joseph Smarr and John Panzer this afternoon from 3:00pm to 4:00pm in Room
9.
209. Fireside chat with the Social Web team
David Glazer, DeWitt Clinton, John Panzer,
Joseph Smarr, Sami Shalabi & Todd Jackson
Tomorrow (May 20)
2:15pm - 3:15pm in Fireside Chat Room
Fireside chat with the Social Web team
David Glazer, DeWitt Clinton, John Panzer,
Joseph Smarr, Sami Shalabi & Todd Jackson
Tomorrow (May 20)
2:15pm - 3:15pm in Fireside Chat Room
210. Answers & Questions
Now I should have time for questions...
And PLEASE COME UP TO THE MICS — and remember, a question begins with a capital letter
and ends with a question mark!