72
OpenSocial Past - Present - Future Bastian Hofmann VZnet Netzwerke Ltd. VZnet Netzwerke Ltd. Saturday, February 5, 2010

OpenSocial - Past, Present, Future

Embed Size (px)

DESCRIPTION

Presentation for the NJIT OpenSocial Hackathon on OpenSocial and it's use cases, OpenSocial Templates and Proxied Content, the OpenSocial Foundation, Apache Shindig and OpenSocial 2.0

Citation preview

Page 1: OpenSocial - Past, Present, Future

OpenSocialPast - Present - Future

Bastian HofmannVZnet Netzwerke Ltd.

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 2: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

2

Agenda– Introduc>on  to  OpenSocial– Apache  Shindig– History• New  stuff  in  OpenSocial  0.9

– How  OpenSocial  is  used  today– The  OpenSocial  Founda>on– OpenSocial  2.0– Federated  Social  Web

Page 3: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

3

 Ques>ons?

 Ask!

Page 4: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

hPp://slideshare.net/bashofmann

Page 5: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

VZ-­‐Networks

Page 6: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 7: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Facts  and  Figures

• 300  employees• 655  servers• 5,400  processors• 13,000  GB  RAM• 5,400  Mbit/s• At  Peak:  120,000  requests/s

Page 8: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

The  technology  behind  it

• PHP  +  Apache  HTTP  Server  +  APC• MySQL  +  Memcached• Java,  Scala  and  Python  Services• NGINX,  Haproxy• Apache  Shindig  (PHP)• RabbitMQ• Project  Voldermort,  Redis,  Apache  Hadoop• Sphinx  Search,  Apache  Solr

Page 9: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

The  technology  behind  it

• Neo4j  Graph  database• Chat:  ejabberd  (Erlang)• Hazelcast,  Ant,  Maven,  Ivy,  Buildout,  RPM• JQuery,  Mustache.js,  GWT• Jenkins,  Sonar• JUnit,  PHPUnit,  Selenium,  PHPMD,  PHPCPD,  Pdepend

• Ganglia,  Nagios,  Smokeping

Page 10: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 11: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

OpenSocial  is  ...

• ...  a  set  of  APIs  to  access  the  social  graph  of  users

• ...  a  specifica>on  for  including  3rd  party  applica>ons  (gadgets)  into  social  services

Page 12: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

What  is  a  Gadget?• XML  file  with  HTML  and  JavaScript  (and  CSS,  Images,  Flash,  ...)

• Applica>on  based  on  the  Google  Gadgets  specifica>on

• Can  be  included  on  various  plajorms

Page 13: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Apache  Shindig

• OpenSource  implementa>on  of  an  OpenSocial  container

• Java  and  PHP  versions  available

• New:  MySpace  is  currently  open  sourcing  their  .NET  implementa>on

hPp://shindig.apache.org/

Page 14: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

The  team

• 26  commiPers  and  PMC  member  from  all  over  the  world

• Currently  vo>ng  on  adding  3  new  ones

• Many,  many  contributors

Page 15: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Rendering

Page 16: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Social  APIs

Page 17: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Proxy

Containervz.net

Gadget  apivz.net

Gadget  Backendcoolgame.com

Shindigapivz.net

Ajax

Ajax

HTTP

Page 18: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

JavaScript  RPC

Containervz.net

Gadget  apivz.net

Method  Call

-­‐  window.postMessage

-­‐  Iframes  with  relay  files

-­‐  Flash

Page 19: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

AuthenJficaJon

• Two-­‐Legged  or  Three-­‐Legged  OAuth

• Security  Token  for  JavaScript  requests  from  gadget

Page 20: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

OAuth  1.0a  Flow +----------+ +---------------+ | -+----(B)-- Request Token -------->| | | End-user | | Authorization | | at |<---(C)-- User authenticates --->| Server | | Browser | | | | -+----(D)-- Verifier -------------<| | +-|----|---+ +---------------+ | | ^ v (B) (D) | | | | | | ^ v | | +---------+ | | | |>---(A)-- Redirect URL ---------------| | | Web |<---(A)-- Request Token + Secret -----| | | Client |>---(E)-- Request Token, Verifier ----' | | |<---(E)-- Access Token + Secret -------------' +---------+

                   Every Request: Client Credentials, Nonce, Timestamp, Signature

hPp://oauth.net/

Page 21: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 22: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

EngagehPp://shindig.apache.org/community/index.html

Page 23: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 24: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Releases

• 0.5:  November,  1st  2007• 0.6:  December,  21st  2007• 0.7:  February,  4th  2008• 0.8:  May,  28th  2008• 0.9:  April,  16th  2009• 1.0:  March,  15th  2010• 1.1:  November,  18th  2010

Page 25: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 26: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

OpenSocial  Reach

Page 27: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

What  changed?  (APer  0.8)

• Templates• Data  Pipelining• Proxied  Content• OSML• New  APIs:  photos  and  media  items• New,  simple  JavaScript  API

hPp://opensocial-­‐resources.googlecode.com/svn/spec/1.1/OpenSocial-­‐Specifica>on-­‐Release-­‐Notes.xml

Page 28: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Data  Pipelining<script xmlns:os="http://ns.opensocial.org/2008/markup" type="text/os-data">    <os:PeopleRequest key="Viewer" userId="@viewer" groupId="@self" fields="@all" />    <os:PeopleRequest key="Owner" userId="@owner" groupId="@self"/>    <os:PeopleRequest key="ViewerFriends" userId="@viewer" groupId="@friends"/>    <os:HttpRequest key="httpFriends" href="http://localhost:8062/vz_demo_gadget/backend/externalFriends.json"/></script>

Page 29: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Displaying  data<script type="text/javascript">var viewers= opensocial.data.DataContext.getDataSet("ViewerFriends");var html="<ul>";for (var i=0; i < viewers.length; i++) { html += "<li>" + viewers[i].displayName + "</li>";}document.getElementById("div").innerHTML = html;</script>

BAD

Page 30: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Templates<script type="text/os-template" require="ViewerFriends"> <ul>   <li><b>Viewer Friends:</b></li>    <li repeat="${ViewerFriends}">    <span>Showing friend ${Context.Index} of ${Context.Count}:</span>      <span>Name: ${Cur.displayName}</span>    </li> </ul></script>

<Require  feature="opensocial-­‐templates"></Require>

Page 31: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Templates<script type="text/os-template" require="fruits" autoUpdate="true">    <ul>      <li repeat="${fruits}">        #${Context.Index}: ${Cur.name} from ${Cur.origin}      </li>    </ul></script>

<script type="text/javascript">opensocial.data.DataContext.putDataSet("fruits", [{name:"Apple", origin: "Germany"}, {name:"Orange", origin: "Spain"}] );</script>

Page 32: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Templates

<script type="text/os-template" autoUpdate="true">    <h3>Testing calculation</h3>    <div>2 + 1 = ${2 + 1}</div></script>

Page 33: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Templates<script type="text/os-template" require="fruit" autoUpdate="true">   <h3>Fruit: <span>${fruit}</span></h3>   <p if="${fruit == 'Orange'}">from Spain</p></script>

<a href="javascript:;" id="changeFruit">change</a>

<script type="text/javascript">opensocial.data.DataContext.putDataSet( "fruit", "Apple" );document.getElementById('changeFruit').onclick = function() {    opensocial.data.DataContext.putDataSet( "fruit", "Orange" );}</script>

Page 34: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Proxied  Content

Page 35: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Proxied  Content

<Content type="html" view="profile,canvas,popup" authz="signed" href="http://example.com/canvas.php"></Content>

Page 36: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

<?phprequire_once "../lib/oauth.php";class MyOAuthSignatureMethod_RSA_SHA1 extends OAuthSignatureMethod_RSA_SHA1 {        protected function fetch_public_cert(&$request) {            $s = curl_init();            curl_setopt($s,CURLOPT_URL,$_GET['xoauth_signature_publickey']);            curl_setopt($s, CURLOPT_RETURNTRANSFER, 1);            $cert = curl_exec($s);            curl_close($s);            return $cert;        }        protected function fetch_private_cert(&$request) {            return;        }}$request = OAuthRequest::from_request();$server = new MyOAuthSignatureMethod_RSA_SHA1();$return = $server->check_signature($request, null, null, $_GET['oauth_signature']);

if (! $return) {        die('invalid signature');}

$postBody = json_decode(file_get_contents('php://input'), true);$viewerId = $_GET['opensocial_viewer_id'];

Page 37: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Use  Cases

37

Page 38: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 39: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Apps  and  Games  @VZnet

33  Mio.  Installs

1,8  Mio.  DAU

5,5  Mio.  MAU

Page 40: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

VZ-­‐Apps  compared  to  other  gaming  sites

  Daily  Unique  Visitors  (Mio) Time  on  Site  (min)

VZ-­‐Apps 1,80 10:50jetztspielen.de 1,30 13:50gameduell 1,10 20:00

SpieleJpps.de 1,00 09:00king.com 1,00 28:00BigPoint 1,00 05:40

1001spiele.de 0,46 20:00spielkarussel 0,43 14:40gamesload 0,29 04:30fe_spielen 0,24 14:20spielen.de 0,18 12:30

Yahoo!  Spiele 0,16 04:30spiele-­‐zone.de 0,12 12:00sevengames 0,11 05:50

Google! Adplanner, Feb 2010

Page 41: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Top  Developers  at  VZnet

Beijing  ELEX4.6  Mio.

Plinga2.08  Mio.

i-­‐Jet  Media1.33  Mio.

Wooga1,28  Mio.

Monthly active users within all applications

Page 42: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Good  Example:  Dorfleben  (HalfQuest)

Page 43: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Demo

43

Page 44: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 45: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 46: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 47: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 48: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 49: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Demo

49

Page 50: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 51: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 52: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Engage

hPp://www.opensocial.org/

-­‐  Build  Apps-­‐  Build  Containers

Page 53: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

The  OpenSocial  FoundaJon

➡The  OpenSocial  Founda1on  is  a  non-­‐profit  corpora1on  created  to  sustain  the  free  and  open  development  of  OpenSocial  specifica1ons.  The  Founda1on  helps  facilitate  the  development  of  new  specifica1ons  and  ensures  that  the  technical  direc1on  remains  in  the  hands  of  the  community.

hPp://www.opensocial.org/page/opensocial-­‐founda>on-­‐faq

Page 54: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

FuncJons

• Organize  specifica>on  development

• Developer  outreach

• PR

• Legal

Page 55: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

OrganizaJon

• Board  Members:– Paul  Lindner  (Google)– Jason  Gary  (IBM)– Dan  Theurer  (Yahoo)– Chris  Chole  (MySpace)–Mark  Halvorson  (Community  Rep.,  Atlassian)– Evan  Prodomou  (Community  Rep.,  Status.NET)

Page 56: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

OrganizaJon

• Officers–Mark  Weitzel  (President,  Jive)– Helen  Chen  (Secretary,  Cisco)– Karthik  Suri  (Treasurer,  Yahoo)

Page 57: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 58: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Engage

hPp://www.opensocial.org/

-­‐  Write  the  Spec-­‐  Help  people-­‐  Promote-­‐  Documenta>on

Page 59: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

OpenSocial  2.0

Page 60: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Mobile

Page 61: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

61

Page 62: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

62

Page 63: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Page 64: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Mobile  Apps  &  Games  on  VZnet

Page 65: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Demo

65

Page 66: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Mobile  Views<Module>    <ModulePrefs>    </ModulePrefs>    <Content type="html" view="mobile">    </Content></Module>

<Module>    <ModulePrefs>    </ModulePrefs>    <Content type="html" view="canvas"

media="screen, touch and resolution > 90dpi" >

    </Content></Module>

Page 67: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

View-­‐level  Features<Module>    <ModulePrefs>      <Require feature="opensocial-1.1" />      <Require feature="pubsub" views="default, canvas"/>      <Require feature="mobile_feature" views="mobile"/>      <Require feature="views" />    </ModulePrefs>    <Content type="html" view="default, canvas">    </Content>    <Content type="html" view="mobile">    </Content></Module>

hPp://docs.opensocial.org/display/OSD/View+Level+Features+Proposal

Page 68: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Embedded  Experiences

• Contextual  gadgets,  embeddable  into– Emails– Feeds– etc.

hPp://docs.opensocial.org/display/OSD/Embedded+Experiences

Page 69: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

BePer  group  support

Page 70: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

AcJvityStrea.ms

• open  specifica>on  for  syndica>ng  social  ac>vi>es  (feeds)

• already  adopted  by  Facebook,  MySpace,  Windows  Live,  Google  Buzz,  Opera,  and  many  others

Page 71: OpenSocial - Past, Present, Future

VZnet  Netzwerke  Ltd.  -­‐  Saturday,  February  5,  2010

Federated  Social  Web

hPp://federatedsocialweb.net