590 likes | 628 Views
Programming Social Applications talk at ConvergeSE 2011 (Columbia, SC)
E N D
Programming Social Applications Jonathan LeBlanc Principal Software Engineer Yahoo! Developer Network Twitter: @jcleblanc Web: http://www.jcleblanc.com
What We’re Going to Cover • The Social Application: Core Concepts • Finger to Webfinger: Find User Social Data • Return of the Semantic Web: The Open Graph Protocol • Defining User Actions: Activity Streams • Controlling Content Syndication: PubSubHubbub and Salmon
What We’re Going to Cover • The Social Application: Core Concepts • Finger to Webfinger: Find User Social Data • Return of the Semantic Web: The Open Graph Protocol • Defining User Actions: Activity Streams • Controlling Content Syndication: PubSubHubbub and Salmon
Core Concepts: What Makes up a Social Application? The Social Graph Sharing Model Relationship Model
Core Concepts: The Different Sharing Models The Opt-in Model The Opt-out Model
Core Concepts: Relationship Models Follower Model Connection Model Group Model
What We’re Going to Cover • The Social Application: Core Concepts • Finger to Webfinger: Find User Social Data • Return of the Semantic Web: The Open Graph Protocol • Defining User Actions: Activity Streams • Controlling Content Syndication: PubSubHubbub and Salmon
WebFinger http://code.google.com/p/webfinger/
WebFinger: Origin Through the Finger Protocol finger jleblanc@yahoo-inc.com Login name: jleblanc In real life: Jonathan LeBlanc Home phone: 123-4567 Office: Sunnyvale, CA Last Login: Tue Jun 21 15:41 on ttys000 jleblanc@yahoo-inc.com http://www.jcleblanc.com
WebFinger: PerformingWebFinger Discovery curl http://gmail.com/.well-known/host-meta <XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0' xmlns:hm='http://host-meta.net/xrd/1.0'> <hm:Hostxmlns='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>
WebFinger: PerformingWebFinger Discovery curl http://www.google.com/s2/webfinger/?q=nake dtechnologist@gmail.com The User Profile: http://www.google.com/profiles/nakedtechnologist The portable contacts link: http://www- opensocial.googleusercontent.com/api/people/118167 121283215553793/ The public Google Buzz feed: https://www.googleapis.com/buzz/v1/activities/118167 121283215553793/@public
WebFinger: Homework Using the well-known host-meta file, attempt to obtain your public profile from www.yahoo.com
What We’re Going to Cover • The Social Application: Core Concepts • Finger to Webfinger: Find User Social Data • Return of the Semantic Web: The Open Graph Protocol • Defining User Actions: Activity Streams • Controlling Content Syndication: PubSubHubbub and Salmon
The Open Graph Protocol http://ogp.me/
Open Graph Protocol: How Web Semantics Work Geo <span class="geo"> <span class="latitude">52.48</span>, <span class="longitude">-1.89</span> </span> vCard <div class="vcard"> <div class="fn">Joe Doe</div> <div class="org">The Example Company</div> <div class="tel">604-555-1234</div> <a class="url" href="http://site.com/">http://site.com/</a> </div>
Open Graph Protocol: The Meta Data Format <html xmlns:og="http://ogp.me/ns#"> <head> <title>Restaurant at Wente Vineyards – Livermore</title> <meta property="og:url" content="http://www.yelp.com/biz/gATFcG9HTaXJpg"> <meta property="og:type" content="restaurant"> <meta property="og:title" content="The Restaurant at Wente Vineyards"> <meta property="og:image" content="http://media2.px.yelpcdn.com/iVSnIs"> ... </head> ... </html>
Open Graph Protocol: What is Defined? • Basic Metadata • Location • Contact Information • Video Data • Audio Data • Objects • People • Places • Products and Entertainment • Websites • Activities • Businesses • Groups • Organizations
Open Graph Protocol: Drawbacks How do we differentiating like objects from one another? How do we define definitions for an entire page versus a single object?
Open Graph Protocol: Homework Construct an Open Graph meta-data parser, then extract Open Graph meta-data from a restaurant page on www.yelp.com Hint: The www.ogp.me page has parser helpers.
What We’re Going to Cover • The Social Application: Core Concepts • Finger to Webfinger: Find User Social Data • Return of the Semantic Web: The Open Graph Protocol • Defining User Actions: Activity Streams • Controlling Content Syndication: PubSubHubbub and Salmon
Activity Streams http://activitystrea.ms/
Activity Streams: What is an Activity? Mary added to a new photo into her collection. • Mary: The Actor • Photo: The Object • Collection: The Target
Activity Streams: The Standard JSON Object { "items" : [{ "verb": "post", "published": "2011-02-18T16:26:43Z", "provider": { "url": "http://providersite.com/activity-stream" }, "title": "Mary added a photo to her album.", "actor": { ... }, "object" : { ... }, "target": { ... } }] }
Activity Streams: The Actor Mary added to a new photo into her collection. "actor": { "url": "http://providersite.com/mary", "objectType": "person", "id": "tag:provider.com,20110218,162643:mary", "image": { "url": "http://providersite.com/mary/image", "width": 125, "height": 125 }, "displayName": "Mary Smith" },
Activity Streams: The Object Mary added to a new photo into her collection. "object" : { "url": "http://site.com/mary/album/place.jpg", "objectType": "http://activitystrea.ms/schema/1.0/photo", "id": "tag:provider.com,20110218,162643:place", "image": { "url": "http://site.com/mary/album/thumb.jpg", "width": 100, "height": 100 } },
Activity Streams: The Target Mary added to a new photo into her collection. "target": { "url": "http://targetsite.com/mary/album/", "objectType": "http://activitystrea.ms/schema/1.0/ photo-album", "id": "tag:example.org,20110218,162643:album4323", "displayName": "Mary's Photo Album", "image": { "url": "http://site.com/mary/album/thumbnail.jpg", "width": 100, "height": 100 } }
Activity Streams: Object Properties Object Properties attachments author content display name downstreamDuplicates id image object type published summary updated upstreamDuplicates url Media Object Properties duration height url width
Activity Streams: Homework Take one of your activities (with a photo) from Facebook and convert it to an activity stream object.
What We’re Going to Cover • The Social Application: Core Concepts • Finger to Webfinger: Find User Social Data • Return of the Semantic Web: The Open Graph Protocol • Defining User Actions: Activity Streams • Controlling Content Syndication: PubSubHubbub and Salmon
PubSubHubbub http://code.google.com/p/pubsubhubbub/
The Salmon Protocol www.salmon-protocol.org