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
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.
<head>




Before we get started, a few things.
<head>




Before we get started, a few things.
@chris.messina
                        buzz.google.com/chrismessina

                               @chrismessina
                                 #io #googlesocial


Before we begin, : chris.messina on Buzz; chrismessina on Twitter.

The hashtag is #googlesocial
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.
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]
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]
[Pause for 5 seconds]
[Pause for 5 seconds]
</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.
<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.
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.
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]
“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]
Chapter 1




for example, in chapter 1, they introduce OpenID, a decentralized identity technology.
Chapter 1




for example, in chapter 1, they introduce OpenID, a decentralized identity technology.
Chapter 2




in chapter 2, they develop WebFinger, a technology for discovering information about email
addresses.
Chapter 2




in chapter 2, they develop WebFinger, a technology for discovering information about email
addresses.
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.
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.
The Open & Social Web




these three chapters are the start of the story of the open and social web.

and so we begin...
The Open and Social Web
Chapter 1:
The Trouble with Travel
Once upon a time...




Once upon a time...
“Kate”




there was a character named Kate.
“Jack”




...and a character named Jack.
Jack lived on this island.

Kate lived on this island.
Jack lived on this island.

Kate lived on this island.
One day, they decided to go for a vacation...
One day, they decided to go for a vacation...
Credit: xkcd - xkcd.com/256




traveling from one island to another...
Credit: xkcd - xkcd.com/256




traveling from one island to another...
...To the big island.

As it turned out, Kate and Jack met. And they liked each other. And then... [CLICK]
...To the big island.

As it turned out, Kate and Jack met. And they liked each other. And then... [CLICK]
...To the big island.

As it turned out, Kate and Jack met. And they liked each other. And then... [CLICK]
...fell in love.
...and got married.

But on their wedding day... something missing: their families!
...and got married.

But on their wedding day... something missing: their families!
you see, when Kate and Jack left to go to the new island, they left their family and friends
behind.
you see, when Kate and Jack left to go to the new island, they left their family and friends
behind.
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]
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]
...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.
...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.
...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.
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]
@!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]
@!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]
$%&"'
                                           ()*+!




                                    !"#
                                    &/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!
it was simply too much and over time, people just melted down from the stress of having to
manage all these secrete chants!
The Open and Social Web
The Open and Social Web
The Open and Social Web

The Open and Social Web
some resourceful islanders got together and decided to solve this problem once and for all...
some resourceful islanders got together and decided to solve this problem once and for all...
The Open and Social Web
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.
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.
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.
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.
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%
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%
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%
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%
http://openid.net




to learn more about openid, visit openid.net
And so the innovation of the village geeks were essentially to allow people of all island
nationalities to visit with one another.... [CLICK]
by creating a system of interoperable identity and passport providers
...which made everyone very happy.
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.
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.
“Kate”




You remember Kate?

Well [CLICK], this is where she comes from.
“Kate”




You remember Kate?

Well [CLICK], this is where she comes from.
“Jack”




And Jack?

[CLICK] He came from this island.
“Jack”




And Jack?

[CLICK] He came from this island.
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.
?                                                                       ?




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.
As it happened, the open web technologists got together and decided to solve this problem
once and for all...
As it happened, the open web technologists got together and decided to solve this problem
once and for all...
WebFinger




...using a technology called “WebFinger”
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”
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]
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]
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]
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.
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.
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.
How WebFinger works
Use host meta to retrieve an LRDD document




            $curl http://gmail.com/.well-known/host-meta
How WebFinger works
Use host meta to retrieve an LRDD document




            $curl http://gmail.com/.well-known/host-meta
How WebFinger works
Use host meta to retrieve an LRDD document




            $curl http://gmail.com/.well-known/host-meta
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>
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>
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.
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.
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.
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.
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.
How WebFinger works
Retrieve WebFinger document




   $curl http://www.google.com/s2/webfinger/?q=acct:chris.messina@gmail.com
How WebFinger works
Retrieve WebFinger document




   $curl http://www.google.com/s2/webfinger/?q=acct:chris.messina@gmail.com
How WebFinger works
Retrieve WebFinger document




   $curl http://www.google.com/s2/webfinger/?q=acct:chris.messina@gmail.com
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&amp;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.
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&amp;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.
and so now if you wanted to do something like OpenID...
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&amp;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...
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&amp;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.
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...
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...
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...
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...
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.
Putting it together
Making OpenID easier using an email address




                  Signed in as: Chris Messina

                                                
Putting it together
Making OpenID easier using an email address




                  Signed in as: Chris Messina

                                                
http://webfinger.info




to learn more about webfinger, visit webfinger.info
and so the geeks had created a kind of “forwarding address” or “service discovery protocol”
for the islanders...
and so the geeks had created a kind of “forwarding address” or “service discovery protocol”
for the islanders...
and the people were happy once again.
Which brings us to the third part of our story... keeping in touch and sharing.
Chapter 3:
  Keeping in touch
  and sharing




Which brings us to the third part of our story... keeping in touch and sharing.
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?
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?
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?
meanwhile, people also started capturing richer and richer content.
and tracking all of their activities in order to keep their friends and family up to date.
but sharing richer and richer media meant a need for more efficient and faster ways of
sending this content around.
,          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.
some resourceful islanders got together and decided to solve this problem once and for all
with a series of technologies...
some resourceful islanders got together and decided to solve this problem once and for all
with a series of technologies...
PubSubHubbub




the first technology is called pubsubhubbub
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
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
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
hms hubbub
Hubs stand in the middle and deliver content to the subscribers in real time.
(Slowed down 1000x)




                                      hms hubbub
Hubs stand in the middle and deliver content to the subscribers in real time.
ActivityStreams




let’s start with ActivityStreams.
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.
so, you’d have someone like the NYTimes wanting to grow their online audience...
...and they’d use RSS to get their content into the Netscape portal.
Copyright 2000 ZWave, LLC




...and they’d use RSS to get their content into the Netscape portal.
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.
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)
2005




this in 2005, a group of people got together to create a “better specified” syndication format
called Atom.
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.
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.
even still, this format was really still designed for the case of syndicating ARTICLES into
PORTALS.
Copyright 2000 ZWave, LLC



even still, this format was really still designed for the case of syndicating ARTICLES into
PORTALS.
2010
so, you take an article like this, turn it into RSS or ATOM...
so, you take an article like this, turn it into RSS or ATOM...
and the most interesting thing the browser can do for you is turn this rich and well designed
page into something like this... [click]
and the most interesting thing the browser can do for you is turn this rich and well designed
page into something like this... [click]
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
so no matter what, to sites like Friendfeed, Facebook, or Google Buzz, all these activities all
look the same.
icons by Fast Icon



so how do you differentiate all these different feeds when you only have one basic format?
This is where ActivityStreams comes in.
author title link




In contrast to the basic model of RSS and ATOM...
actor verb object target




the ActivityStreams model presents an “actor verb object” tuple, with an “target” parameter
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...
Atom




                      title + link + summary +
                       author + id + updated




(remember that the foundation of Atom is title, link, summary, author, id, and the updated
time.)
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...
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’s what Atom+ActivityStreams looks like. Similar,
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.
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?
person   post    note




as the most basic example, we’re essentially telling the aggregator that a person posted a
note.
person     shared    link




but this model works for someone sharing a link...
person     started following   person




or someone following someone else...
service   updated   status




or if a service updates its status.
so before activity streams, all of this syndicated data was treated the same and lead to
overload!
so before activity streams, all of this syndicated data was treated the same and lead to
overload!
so before activity streams, all of this syndicated data was treated the same and lead to
overload!
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.
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.
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.
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.
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.
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.
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.
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!
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!
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!
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!
2"+3"#$*
                                                  !"#$@%&"''(%
                    2"4+)56+&#7
                                +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!
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
And so now we’ve put together three very exciting technologies and once again...
And so now we’ve put together three very exciting technologies and once again...
everyone was happy and partied all night long.
...happily ever after




and everyone lived happily ever after...
Epic-logue
Chapter 1




We first learned about how the problem of inter-island identity was solved with OpenID...
Chapter 1




We first learned about how the problem of inter-island identity was solved with OpenID...
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.
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.
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.
Google and the Social Web




so let’s tie this back to Google and the Social Web.
Credit: xkcd - xkcd.com/256




At Google, we see the entire web as one big social environment, bridged by a number of
open technologies....
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.
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.
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...
“ 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.
“ 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...
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.
</body>




And with that... I’d like to conclude.

And thank you for your attention.
</body>




And with that... I’d like to conclude.

And thank you for your attention.
</body>




And with that... I’d like to conclude.

And thank you for your attention.
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
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
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.
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
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!
The Open and Social Web

More Related Content

PPTX
Using Job Aids
PDF
Jay Cross, Aprendizado informal
PPT
Trip in Tibet
KEY
Informal conversation on Informal Learning
PPT
Recipe for Future Learning
PDF
#Kunterbunteskinderbuch: re:publica 2016 - Kinderbücher: Inklusiv. Queer. Int...
PDF
New Assumptions for Designing for the Social Web
PPT
Illich and the_corporation
Using Job Aids
Jay Cross, Aprendizado informal
Trip in Tibet
Informal conversation on Informal Learning
Recipe for Future Learning
#Kunterbunteskinderbuch: re:publica 2016 - Kinderbücher: Inklusiv. Queer. Int...
New Assumptions for Designing for the Social Web
Illich and the_corporation

Similar to The Open and Social Web (20)

PDF
Essay Writing Topics For College
PDF
Key Points Essay On Conservation Of Forests
PDF
The Public Domain Expert Code Breaker Report
PDF
Fast Forward: Deploying our best selves, to build the future of developer co...
PDF
Do You Know The Cookie Man?
PDF
018 Informational Essay Graphic Organizer Exampl
PDF
I own copyright, so I pwn you!
PDF
Outdoors Activities Essay
PDF
Be ready for UKM2.0
PDF
Nicolas Pastorino - eZ Community - Innovation and Open-source inside
PDF
You, the online brand
PDF
Bad College Essays Mistakes You Must Avoid College Essay, Essay
PDF
Editing The Essay - The Best Pl
PDF
100 Inspirational College Quotes For Students 2020
PDF
Essay Type Test Examples
PDF
Abortion Should Not Be Legal Essay. Online assignment writing service.
PDF
Essay On My Favourite Subject English For Class 7
PDF
Short Essay On Qualities Of A Good Student
PDF
Motivationessay - 10 Steps In Writing A Motivation Essay
PDF
Format For Essay Writing Cbse. Online assignment writing service.
Essay Writing Topics For College
Key Points Essay On Conservation Of Forests
The Public Domain Expert Code Breaker Report
Fast Forward: Deploying our best selves, to build the future of developer co...
Do You Know The Cookie Man?
018 Informational Essay Graphic Organizer Exampl
I own copyright, so I pwn you!
Outdoors Activities Essay
Be ready for UKM2.0
Nicolas Pastorino - eZ Community - Innovation and Open-source inside
You, the online brand
Bad College Essays Mistakes You Must Avoid College Essay, Essay
Editing The Essay - The Best Pl
100 Inspirational College Quotes For Students 2020
Essay Type Test Examples
Abortion Should Not Be Legal Essay. Online assignment writing service.
Essay On My Favourite Subject English For Class 7
Short Essay On Qualities Of A Good Student
Motivationessay - 10 Steps In Writing A Motivation Essay
Format For Essay Writing Cbse. Online assignment writing service.
Ad

More from Chris Messina (20)

PDF
Uber Developer Platform Overview for Apigee Webcast
PDF
Joining the conversation
PDF
Joining the Conversation
PDF
Future of the Social Web and How to Stop It
PDF
SWAT0 (variant flow)
PDF
Google & the open, social web
PDF
OpenID & OAuth for the Consumer Web Workshop, Part 1 of 3
PDF
Socialism, Activity Streams, & Federating The Social Web
PDF
Activity Streams, Socialism, & the Future of Open Source
PDF
The Future of the Social Web and How to Stop It
PDF
Google and the Social Web (Mexico City Dev Fest 2010)
PDF
ActivityStrea.ms: Is It Getting Streamy In Here?
PDF
Identity is the platform (Netflix)
PDF
Identity is the platform (Toronto)
PDF
Identity is the Platform (Russian variant)
PDF
Identity is the Platform
PDF
The Open, Social Web Workshop
PDF
Social Network Supermarkets and How to Defeat Them
PDF
Openness In The Era Of Social Web
PDF
The Open, Social Web (N2Y4)
Uber Developer Platform Overview for Apigee Webcast
Joining the conversation
Joining the Conversation
Future of the Social Web and How to Stop It
SWAT0 (variant flow)
Google & the open, social web
OpenID & OAuth for the Consumer Web Workshop, Part 1 of 3
Socialism, Activity Streams, & Federating The Social Web
Activity Streams, Socialism, & the Future of Open Source
The Future of the Social Web and How to Stop It
Google and the Social Web (Mexico City Dev Fest 2010)
ActivityStrea.ms: Is It Getting Streamy In Here?
Identity is the platform (Netflix)
Identity is the platform (Toronto)
Identity is the Platform (Russian variant)
Identity is the Platform
The Open, Social Web Workshop
Social Network Supermarkets and How to Defeat Them
Openness In The Era Of Social Web
The Open, Social Web (N2Y4)
Ad

Recently uploaded (20)

PDF
The influence of sentiment analysis in enhancing early warning system model f...
PPT
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
PDF
A proposed approach for plagiarism detection in Myanmar Unicode text
PPTX
Modernising the Digital Integration Hub
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PPTX
AI IN MARKETING- PRESENTED BY ANWAR KABIR 1st June 2025.pptx
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PDF
CloudStack 4.21: First Look Webinar slides
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PPTX
The various Industrial Revolutions .pptx
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
STKI Israel Market Study 2025 version august
PPTX
Configure Apache Mutual Authentication
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PDF
Architecture types and enterprise applications.pdf
PDF
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
UiPath Agentic Automation session 1: RPA to Agents
The influence of sentiment analysis in enhancing early warning system model f...
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
A proposed approach for plagiarism detection in Myanmar Unicode text
Modernising the Digital Integration Hub
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
AI IN MARKETING- PRESENTED BY ANWAR KABIR 1st June 2025.pptx
Taming the Chaos: How to Turn Unstructured Data into Decisions
CloudStack 4.21: First Look Webinar slides
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
The various Industrial Revolutions .pptx
1 - Historical Antecedents, Social Consideration.pdf
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
STKI Israel Market Study 2025 version august
Configure Apache Mutual Authentication
Getting started with AI Agents and Multi-Agent Systems
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
Architecture types and enterprise applications.pdf
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
Zenith AI: Advanced Artificial Intelligence
UiPath Agentic Automation session 1: RPA to Agents

The Open and Social Web

  • 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.
  • 3. <head> Before we get started, a few things.
  • 4. <head> Before we get started, a few things.
  • 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]
  • 9. [Pause for 5 seconds]
  • 10. [Pause for 5 seconds]
  • 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...
  • 24. Chapter 1: The Trouble with Travel
  • 25. Once upon a time... Once upon a time...
  • 26. “Kate” there was a character named Kate.
  • 28. Jack lived on this island. Kate lived on this island.
  • 29. Jack lived on this island. Kate lived on this island.
  • 30. One day, they decided to go for a vacation...
  • 31. One day, they decided to go for a vacation...
  • 32. Credit: xkcd - xkcd.com/256 traveling from one island to another...
  • 33. Credit: xkcd - xkcd.com/256 traveling from one island to another...
  • 34. ...To the big island. As it turned out, Kate and Jack met. And they liked each other. And then... [CLICK]
  • 35. ...To the big island. As it turned out, Kate and Jack met. And they liked each other. And then... [CLICK]
  • 36. ...To the big island. As it turned out, Kate and Jack met. And they liked each other. And then... [CLICK]
  • 38. ...and got married. But on their wedding day... something missing: their families!
  • 39. ...and got married. But on their wedding day... something missing: their families!
  • 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!
  • 55.
  • 57. some resourceful islanders got together and decided to solve this problem once and for all...
  • 58. some resourceful islanders got together and decided to solve this problem once and for all...
  • 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%
  • 69. And so the innovation of the village geeks were essentially to allow people of all island nationalities to visit with one another.... [CLICK]
  • 70. by creating a system of interoperable identity and passport providers
  • 71. ...which made everyone very happy.
  • 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.
  • 74. “Kate” You remember Kate? Well [CLICK], this is where she comes from.
  • 75. “Kate” You remember Kate? Well [CLICK], this is where she comes from.
  • 76. “Jack” And Jack? [CLICK] He came from this island.
  • 77. “Jack” And Jack? [CLICK] He came from this island.
  • 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...
  • 82. WebFinger ...using a technology called “WebFinger”
  • 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: [email protected] 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: [email protected] 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 [email protected] 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 [email protected] { 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 [email protected] { 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 [email protected] 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:[email protected] 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:[email protected] 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:[email protected] 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:[email protected]
  • 101. How WebFinger works Retrieve WebFinger document $curl http://www.google.com/s2/webfinger/?q=acct:[email protected]
  • 102. How WebFinger works Retrieve WebFinger document $curl http://www.google.com/s2/webfinger/?q=acct:[email protected]
  • 103. How WebFinger works XRD Profile <?xml version='1.0'?> <XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'> <Subject>acct:[email protected]</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&amp;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:[email protected]</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&amp;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:[email protected]</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&amp;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:[email protected]</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&amp;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: [email protected] 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: [email protected] 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.
  • 113. Putting it together Making OpenID easier using an email address Signed in as: Chris Messina 
  • 114. Putting it together Making OpenID easier using an email address Signed in as: Chris Messina 
  • 116. and so the geeks had created a kind of “forwarding address” or “service discovery protocol” for the islanders...
  • 117. and so the geeks had created a kind of “forwarding address” or “service discovery protocol” for the islanders...
  • 118. and the people were happy once again.
  • 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?
  • 124. meanwhile, people also started capturing richer and richer content.
  • 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...
  • 130. PubSubHubbub the first technology is called pubsubhubbub
  • 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.
  • 148. 2010
  • 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?
  • 156. This is where ActivityStreams comes in.
  • 157. author title link In contrast to the basic model of RSS and ATOM...
  • 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...
  • 162. 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’s what Atom+ActivityStreams looks like. Similar,
  • 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+&#7 +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...
  • 187. everyone was happy and partied all night long.
  • 188. ...happily ever after and everyone lived happily ever after...
  • 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.
  • 203. </body> And with that... I’d like to conclude. And thank you for your attention.
  • 204. </body> And with that... I’d like to conclude. And thank you for your attention.
  • 205. </body> And with that... I’d like to conclude. And thank you for your attention.
  • 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!