SlideShare a Scribd company logo
1 of 64
Download to read offline
OpenSocial done right
                   Implementing OpenSocial for 16m users
                                Bastian Hofmann




Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Agenda




                                                                        2


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Agenda

      What is a Gadget?

      What is OpenSocial?

      What about privacy?

      How do you integrate OpenSocial in your site?

      How to enrich the user experience beyond that?




                                                                        2


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     About VZ-Netzwerke



                 three networks
                                                                                  40% daily logins




      16.5 million users

                                                                        30 minutes per user per day




                                                                                                     3


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Visits April 2010 (IVW)

               VZ                                                                         440.719.168

     T-Online                                                                          403.820.631

           MSN                                                           254.417.174

         Yahoo                                                      196.320.307

        WKW                                                    168.762.246

              Bild                                      137.471.037

  ProSieben                                            133.225.524

         SPON                                        124.266.343

                          0                                      250.000.000             500.000.000

                                                                                                        4


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     and compared with monthly TV reach




                                                                        Every VZ-Network
                                                                        surpasses TV in
                                                                        the digital native user
                                                                        group (14 - 29)




                                                                                                  5


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Apps at VZ-Netzwerke


                                                       over 60 Apps in Gallery, ca. 140 Apps live
    Launch Dec. 2009



                                                       over 14 million installations




                         9 million daily page impressions in canvas view



                                                                                                    6


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     What is a Gadget?

      XML file with HTML and JavaScript (and
       CSS, Images, Flash, ...)

      Application based on the Google
       Gadgets specification

      Can be included on various platforms,
       which support this specification




                                                                        7


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     How to include gadgets?

      The Gadget Server
         renders the Gadget XML
         provides the JavaScript API
         provides the REST (or RPC) API

      Rendered result is included through an
       <iframe> into the parent page (Container)




                                                                        8


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Gadget Features

      Gadget specification includes a
       rich JavaScript API with a
       multitude of features
          preferences
          views
          dynamic-height
          flash
          io
          ...

      Extendabel




                                                                        9


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     One Gadget - Different Views




                                                                        10


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     One Gadget - Different Views

      Profile




                                                                        10


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     One Gadget - Different Views

      Profile
      Canvas




                                                                        10


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     One Gadget - Different Views

      Profile
      Canvas
      Preview




                                                                        10


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     One Gadget - Different Views

      Profile
      Canvas
      Preview
      Group




                                                                        10


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     One Gadget - Different Views

      Profile
      Canvas
      Preview
      Group
      Popup




                                                                        10


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     One Gadget - Different Views

      Profile
      Canvas
      Preview
      Group
      Popup
      Integration




                                                                        10


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Example
      <?xml version="1.0" encoding="UTF-8"?>
      <Module>
          <ModulePrefs title="HelloWorld Gadget" >
               <Require feature="views" />
          </ModulePrefs>
          <Content type="html" view="profile"><![CDATA[
                 <h1>Hello World!</h1>
                 <a href="javascript:gadgets.views.requestNavigateTo(
                                  gadgets.views.getSupportedViews()['canvas'],
                                  {'name':'Bastian'})">go to canvas</a>
        ]]></Content>
           <Content type="html" view="canvas,popup"><![CDATA[
       
               <h1 id="View"></h1><h1 id="Greeting"></h1>
               <script type="text/javascript">
                    gadgets.util.registerOnLoadHandler(function() {
                        document.getElementById('View').innerHTML = 'This is the ' +
                                                  gadgets.views.getCurrentView().getName() + ' view';
                        document.getElementById('Greeting').innerHTML = 'Hello ' +
                                                  gadgets.views.getParams()['name'];
                    });
       
               </script>
        ]]></Content>
      </Module>


                                                                                                  11


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Example
      <?xml version="1.0" encoding="UTF-8"?>
      <Module>
          <ModulePrefs title="HelloWorld Gadget" >
               <Require feature="views" />
          </ModulePrefs>
          <Content type="html" view="profile"><![CDATA[
                 <h1>Hello World!</h1>
                 <a href="javascript:gadgets.views.requestNavigateTo(
                                  gadgets.views.getSupportedViews()['canvas'],
                                  {'name':'Bastian'})">go to canvas</a>
        ]]></Content>
           <Content type="html" view="canvas,popup"><![CDATA[
       
               <h1 id="View"></h1><h1 id="Greeting"></h1>
               <script type="text/javascript">
                    gadgets.util.registerOnLoadHandler(function() {
                        document.getElementById('View').innerHTML = 'This is the ' +
                                                  gadgets.views.getCurrentView().getName() + ' view';
                        document.getElementById('Greeting').innerHTML = 'Hello ' +
                                                  gadgets.views.getParams()['name'];
                    });
       
               </script>
        ]]></Content>
      </Module>


                                                                                                  11


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Example
      <?xml version="1.0" encoding="UTF-8"?>
      <Module>
          <ModulePrefs title="HelloWorld Gadget" >
               <Require feature="views" />
          </ModulePrefs>
          <Content type="html" view="profile"><![CDATA[
                 <h1>Hello World!</h1>
                 <a href="javascript:gadgets.views.requestNavigateTo(
                                  gadgets.views.getSupportedViews()['canvas'],
                                  {'name':'Bastian'})">go to canvas</a>
        ]]></Content>
           <Content type="html" view="canvas,popup"><![CDATA[
       
               <h1 id="View"></h1><h1 id="Greeting"></h1>
               <script type="text/javascript">
                    gadgets.util.registerOnLoadHandler(function() {
                        document.getElementById('View').innerHTML = 'This is the ' +
                                                  gadgets.views.getCurrentView().getName() + ' view';
                        document.getElementById('Greeting').innerHTML = 'Hello ' +
                                                  gadgets.views.getParams()['name'];
                    });
       
               </script>
        ]]></Content>
      </Module>


                                                                                                  11


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Example
      <?xml version="1.0" encoding="UTF-8"?>
      <Module>
          <ModulePrefs title="HelloWorld Gadget" >
               <Require feature="views" />
          </ModulePrefs>
          <Content type="html" view="profile"><![CDATA[
                 <h1>Hello World!</h1>
                 <a href="javascript:gadgets.views.requestNavigateTo(
                                  gadgets.views.getSupportedViews()['canvas'],
                                  {'name':'Bastian'})">go to canvas</a>
        ]]></Content>
           <Content type="html" view="canvas,popup"><![CDATA[
       
               <h1 id="View"></h1><h1 id="Greeting"></h1>
               <script type="text/javascript">
                    gadgets.util.registerOnLoadHandler(function() {
                        document.getElementById('View').innerHTML = 'This is the ' +
                                                  gadgets.views.getCurrentView().getName() + ' view';
                        document.getElementById('Greeting').innerHTML = 'Hello ' +
                                                  gadgets.views.getParams()['name'];
                    });
       
               </script>
        ]]></Content>
      </Module>


                                                                                                  11


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Example
      <?xml version="1.0" encoding="UTF-8"?>
      <Module>
          <ModulePrefs title="HelloWorld Gadget" >
               <Require feature="views" />
          </ModulePrefs>
          <Content type="html" view="profile"><![CDATA[
                 <h1>Hello World!</h1>
                 <a href="javascript:gadgets.views.requestNavigateTo(
                                  gadgets.views.getSupportedViews()['canvas'],
                                  {'name':'Bastian'})">go to canvas</a>
        ]]></Content>
           <Content type="html" view="canvas,popup"><![CDATA[
       
               <h1 id="View"></h1><h1 id="Greeting"></h1>
               <script type="text/javascript">
                    gadgets.util.registerOnLoadHandler(function() {
                        document.getElementById('View').innerHTML = 'This is the ' +
                                                  gadgets.views.getCurrentView().getName() + ' view';
                        document.getElementById('Greeting').innerHTML = 'Hello ' +
                                                  gadgets.views.getParams()['name'];
                    });
       
               </script>
        ]]></Content>
      </Module>


                                                                                                  11


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Example
      <?xml version="1.0" encoding="UTF-8"?>
      <Module>
          <ModulePrefs title="HelloWorld Gadget" >
               <Require feature="views" />
          </ModulePrefs>
          <Content type="html" view="profile"><![CDATA[
                 <h1>Hello World!</h1>
                 <a href="javascript:gadgets.views.requestNavigateTo(
                                  gadgets.views.getSupportedViews()['canvas'],
                                  {'name':'Bastian'})">go to canvas</a>
        ]]></Content>
           <Content type="html" view="canvas,popup"><![CDATA[
       
               <h1 id="View"></h1><h1 id="Greeting"></h1>
               <script type="text/javascript">
                    gadgets.util.registerOnLoadHandler(function() {
                        document.getElementById('View').innerHTML = 'This is the ' +
                                                  gadgets.views.getCurrentView().getName() + ' view';
                        document.getElementById('Greeting').innerHTML = 'Hello ' +
                                                  gadgets.views.getParams()['name'];
                    });
       
               </script>
        ]]></Content>
      </Module>


                                                                                                  11


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Example
      <?xml version="1.0" encoding="UTF-8"?>
      <Module>
          <ModulePrefs title="HelloWorld Gadget" >
               <Require feature="views" />
          </ModulePrefs>
          <Content type="html" view="profile"><![CDATA[
                 <h1>Hello World!</h1>
                 <a href="javascript:gadgets.views.requestNavigateTo(
                                  gadgets.views.getSupportedViews()['canvas'],
                                  {'name':'Bastian'})">go to canvas</a>
        ]]></Content>
           <Content type="html" view="canvas,popup"><![CDATA[
       
               <h1 id="View"></h1><h1 id="Greeting"></h1>
               <script type="text/javascript">
                    gadgets.util.registerOnLoadHandler(function() {
                        document.getElementById('View').innerHTML = 'This is the ' +
                                                  gadgets.views.getCurrentView().getName() + ' view';
                        document.getElementById('Greeting').innerHTML = 'Hello ' +
                                                  gadgets.views.getParams()['name'];
                    });
       
               </script>
        ]]></Content>
      </Module>


                                                                                                  11


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Example
      <?xml version="1.0" encoding="UTF-8"?>
      <Module>
          <ModulePrefs title="HelloWorld Gadget" >
               <Require feature="views" />
          </ModulePrefs>
          <Content type="html" view="profile"><![CDATA[
                 <h1>Hello World!</h1>
                 <a href="javascript:gadgets.views.requestNavigateTo(
                                  gadgets.views.getSupportedViews()['canvas'],
                                  {'name':'Bastian'})">go to canvas</a>
        ]]></Content>
           <Content type="html" view="canvas,popup"><![CDATA[
       
               <h1 id="View"></h1><h1 id="Greeting"></h1>
               <script type="text/javascript">
                    gadgets.util.registerOnLoadHandler(function() {
                        document.getElementById('View').innerHTML = 'This is the ' +
                                                  gadgets.views.getCurrentView().getName() + ' view';
                        document.getElementById('Greeting').innerHTML = 'Hello ' +
                                                  gadgets.views.getParams()['name'];
                    });
       
               </script>
        ]]></Content>
      </Module>


                                                                                                  11


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Example
      <?xml version="1.0" encoding="UTF-8"?>
      <Module>
          <ModulePrefs title="HelloWorld Gadget" >
               <Require feature="views" />
          </ModulePrefs>
          <Content type="html" view="profile"><![CDATA[
                 <h1>Hello World!</h1>
                 <a href="javascript:gadgets.views.requestNavigateTo(
                                  gadgets.views.getSupportedViews()['canvas'],
                                  {'name':'Bastian'})">go to canvas</a>
        ]]></Content>
           <Content type="html" view="canvas,popup"><![CDATA[
       
               <h1 id="View"></h1><h1 id="Greeting"></h1>
               <script type="text/javascript">
                    gadgets.util.registerOnLoadHandler(function() {
                        document.getElementById('View').innerHTML = 'This is the ' +
                                                  gadgets.views.getCurrentView().getName() + ' view';
                        document.getElementById('Greeting').innerHTML = 'Hello ' +
                                                  gadgets.views.getParams()['name'];
                    });
       
               </script>
        ]]></Content>
      </Module>


                                                                                                  11


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Example
      <?xml version="1.0" encoding="UTF-8"?>
      <Module>
          <ModulePrefs title="HelloWorld Gadget" >
               <Require feature="views" />
          </ModulePrefs>
          <Content type="html" view="profile"><![CDATA[
                 <h1>Hello World!</h1>
                 <a href="javascript:gadgets.views.requestNavigateTo(
                                  gadgets.views.getSupportedViews()['canvas'],
                                  {'name':'Bastian'})">go to canvas</a>
        ]]></Content>
           <Content type="html" view="canvas,popup"><![CDATA[
       
               <h1 id="View"></h1><h1 id="Greeting"></h1>
               <script type="text/javascript">
                    gadgets.util.registerOnLoadHandler(function() {
                        document.getElementById('View').innerHTML = 'This is the ' +
                                                  gadgets.views.getCurrentView().getName() + ' view';
                        document.getElementById('Greeting').innerHTML = 'Hello ' +
                                                  gadgets.views.getParams()['name'];
                    });
       
               </script>
        ]]></Content>
      </Module>


                                                                                                  11


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     And what is OpenSocial?

      Extension of the Gadget JavaScript API

      an open standard

      enables gadgets to access the social graph of users




                                                                        12


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




                                                                        13


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




                                                                        13


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




                                                                        14


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     What about privacy? Example of our solution.




                                                                        15


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     What about privacy? Example of our solution.

             Visibility




                                                                        15


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     What about privacy? Example of our solution.

             Visibility
                Visibility on a user‘s profile page can be changed individually for
                  friends or other people.




                                                                                       15


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     What about privacy? Example of our solution.

             Visibility
                Visibility on a user‘s profile page can be changed individually for
                  friends or other people.




                                                                                       15


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     What about privacy? Example of our solution.

             Visibility
                Visibility on a user‘s profile page can be changed individually for
                  friends or other people.

             Communication




                                                                                       15


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     What about privacy? Example of our solution.

             Visibility
                Visibility on a user‘s profile page can be changed individually for
                  friends or other people.

             Communication
                Gadget needs user permissions for communication (Messages, Activity
                 Stream, Notifications, ...)




                                                                                       15


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     What about privacy? Example of our solution.

             Visibility
                Visibility on a user‘s profile page can be changed individually for
                  friends or other people.

             Communication
                Gadget needs user permissions for communication (Messages, Activity
                 Stream, Notifications, ...)




                                                                                       15


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     What about privacy? Example of our solution.

             Visibility
                Visibility on a user‘s profile page can be changed individually for
                  friends or other people.

             Communication
                Gadget needs user permissions for communication (Messages, Activity
                 Stream, Notifications, ...)

             Access




                                                                                       15


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     What about privacy? Example of our solution.

             Visibility
                Visibility on a user‘s profile page can be changed individually for
                  friends or other people.

             Communication
                Gadget needs user permissions for communication (Messages, Activity
                 Stream, Notifications, ...)

             Access
                Access to user data is handled through a special vcard




                                                                                       15


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     VCards




                                                                        16


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     VCards

      Wile installing a gadget, the user has
       to assign an existing or new vcard to
       it




                                                                        16


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     VCards

      Wile installing a gadget, the user has
       to assign an existing or new vcard to
       it




                                                                        16


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     VCards

      Wile installing a gadget, the user has
       to assign an existing or new vcard to
       it

      Data on vcard can differ to the user‘s
       profile




                                                                        16


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     VCards

      Wile installing a gadget, the user has
       to assign an existing or new vcard to
       it

      Data on vcard can differ to the user‘s
       profile




                                                                        16


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     VCards

      Wile installing a gadget, the user has
       to assign an existing or new vcard to
       it

      Data on vcard can differ to the user‘s
       profile

      Gadget has only access to data of
       users which have installed the gadget




                                                                        16


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Implementing OpenSocial yourself


        Reference OpenSource Implementation:
         Apache Shindig

        Available as Java and PHP version

           Gadget Container JavaScript
           Gadget Rendering Server
           OpenSocial Container JavaScript
           OpenSocial Data Server (REST + RPC)




                                                                        17


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Get the party started


                  Apache

                  PHP

                  MySQL

                  Shindig

                  Partuza




                                                                        18


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




                                              And that‘s all?




                                                                        19


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Connection to backend




                                                                        20


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Container logic


        Resizing

        View navigation

        SecurityToken
         updates

        Calling platform
         dialogs

        Preferences



                                                                        21


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Views




                                                                        22


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Gallery, Installation Flow, ...




                                                                        23


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Sandbox




                                                                        24


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Approval process


      Better quality

      Better security

      Apps are less buggy

      Apps add value for the users

      Better reach for individual apps

      More activity in apps




                                                                        25


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Payment




                                                                        26


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Advertising




                                                                        27


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Viral features




                                                                        28


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Taking it one step further




                                                                        29


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Embedding




                                                                        30


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Doing it right




                                                                        31


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Doing it right


       Open standards

       Data privacy

       Include apps wisely

       Don‘t forget the developers




                                                                        31


Mittwoch, 2. Juni 2010
VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net




     Further information ...

      http://www.opensocial.org

      Our blog: http://developer.studivz.net

      Our wiki: http://developer.studivz.net/wiki

      Become a developer and get access to our sandbox:
       http://www.studivz.net/Developer and http://www.meinvz.net/Developer

      Or implement an OpenSocial container yourself:
       http://shindig.apache.org/
       http://code.google.com/p/partuza/


                                                                              32


Mittwoch, 2. Juni 2010
Thank you!

     Contact:
     Bastian Hofmann
     bhofmann@vz.net
     http://www.studivz.net/bastian http://www.meinvz.net/bastian
     http://twitter.com/BastianHofmann
     http://www.slideshare.net/bashofmann




Mittwoch, 2. Juni 2010

More Related Content

Similar to OpenSocial Done Right

Developing Plugins on OpenVBX at Greater San Francisco Bay Area LAMP Group
Developing Plugins on OpenVBX at Greater San Francisco Bay Area LAMP GroupDeveloping Plugins on OpenVBX at Greater San Francisco Bay Area LAMP Group
Developing Plugins on OpenVBX at Greater San Francisco Bay Area LAMP Group
minddog
 
Creating OpenSocial Apps for millions of users
Creating OpenSocial Apps for millions of usersCreating OpenSocial Apps for millions of users
Creating OpenSocial Apps for millions of users
Bastian Hofmann
 
Browser Extensions in Mozilla Firefox & Google Chrome
Browser Extensions in Mozilla Firefox & Google ChromeBrowser Extensions in Mozilla Firefox & Google Chrome
Browser Extensions in Mozilla Firefox & Google Chrome
Kenneth Auchenberg
 
Distributed Social Networking
Distributed Social NetworkingDistributed Social Networking
Distributed Social Networking
Bastian Hofmann
 
Introduction to DZone
Introduction to DZoneIntroduction to DZone
Introduction to DZone
Brandon Hoe
 
Advanced Capabilities of OpenSocial Apps
Advanced Capabilities of OpenSocial AppsAdvanced Capabilities of OpenSocial Apps
Advanced Capabilities of OpenSocial Apps
Bastian Hofmann
 
Aegir one drupal to rule them all
Aegir one drupal to rule them allAegir one drupal to rule them all
Aegir one drupal to rule them all
Development Seed
 

Similar to OpenSocial Done Right (20)

Creating OpenSocial Apps
Creating OpenSocial AppsCreating OpenSocial Apps
Creating OpenSocial Apps
 
Developing Plugins on OpenVBX at Greater San Francisco Bay Area LAMP Group
Developing Plugins on OpenVBX at Greater San Francisco Bay Area LAMP GroupDeveloping Plugins on OpenVBX at Greater San Francisco Bay Area LAMP Group
Developing Plugins on OpenVBX at Greater San Francisco Bay Area LAMP Group
 
Creating OpenSocial Apps for millions of users
Creating OpenSocial Apps for millions of usersCreating OpenSocial Apps for millions of users
Creating OpenSocial Apps for millions of users
 
Social Network and Online Community
Social Network and Online CommunitySocial Network and Online Community
Social Network and Online Community
 
Google App Engine - Devfest India 2010
Google App Engine -  Devfest India 2010Google App Engine -  Devfest India 2010
Google App Engine - Devfest India 2010
 
Browser Extensions in Mozilla Firefox & Google Chrome
Browser Extensions in Mozilla Firefox & Google ChromeBrowser Extensions in Mozilla Firefox & Google Chrome
Browser Extensions in Mozilla Firefox & Google Chrome
 
Distributed Social Networking
Distributed Social NetworkingDistributed Social Networking
Distributed Social Networking
 
CSS3: The Future is Now at Drupal Design Camp Boston
CSS3: The Future is Now at Drupal Design Camp BostonCSS3: The Future is Now at Drupal Design Camp Boston
CSS3: The Future is Now at Drupal Design Camp Boston
 
Mobile Strategy & Product Dev. - iRush
Mobile Strategy & Product Dev. - iRushMobile Strategy & Product Dev. - iRush
Mobile Strategy & Product Dev. - iRush
 
Wish you were here before!
Wish you were here before!Wish you were here before!
Wish you were here before!
 
Introduction to DZone
Introduction to DZoneIntroduction to DZone
Introduction to DZone
 
A Smart Assistance for Visually Impaired
A Smart Assistance for Visually ImpairedA Smart Assistance for Visually Impaired
A Smart Assistance for Visually Impaired
 
Antonio Pintus- TouchTheWeb 2010
Antonio Pintus- TouchTheWeb 2010Antonio Pintus- TouchTheWeb 2010
Antonio Pintus- TouchTheWeb 2010
 
Connecting Smart Things through Web services Orchestrations
Connecting Smart Things through Web services OrchestrationsConnecting Smart Things through Web services Orchestrations
Connecting Smart Things through Web services Orchestrations
 
Advanced Capabilities of OpenSocial Apps
Advanced Capabilities of OpenSocial AppsAdvanced Capabilities of OpenSocial Apps
Advanced Capabilities of OpenSocial Apps
 
iCrossing client event - You & Your Web Shadow
iCrossing client event - You & Your Web ShadowiCrossing client event - You & Your Web Shadow
iCrossing client event - You & Your Web Shadow
 
6-10-2010-PEMCI 2010
6-10-2010-PEMCI 20106-10-2010-PEMCI 2010
6-10-2010-PEMCI 2010
 
Wish you were here before!' Who Gains from Collaboration between Computer Sci...
Wish you were here before!' Who Gains from Collaboration between Computer Sci...Wish you were here before!' Who Gains from Collaboration between Computer Sci...
Wish you were here before!' Who Gains from Collaboration between Computer Sci...
 
Aegir one drupal to rule them all
Aegir one drupal to rule them allAegir one drupal to rule them all
Aegir one drupal to rule them all
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands
 

More from Bastian Hofmann

Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocial
Bastian Hofmann
 
The Identity Problem of the Web and how to solve it
The Identity Problem of the Web and how to solve itThe Identity Problem of the Web and how to solve it
The Identity Problem of the Web and how to solve it
Bastian Hofmann
 
Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocial
Bastian Hofmann
 
Technical Background of VZ-ID
Technical Background of VZ-IDTechnical Background of VZ-ID
Technical Background of VZ-ID
Bastian Hofmann
 
How to make your social games successfull
How to make your social games successfullHow to make your social games successfull
How to make your social games successfull
Bastian Hofmann
 

More from Bastian Hofmann (20)

Introduction to rg\injection
Introduction to rg\injectionIntroduction to rg\injection
Introduction to rg\injection
 
IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution!
IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution! IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution!
IGNITE OpenSocial 2.0 - Viva La OpenAppRevolution!
 
How to create OpenSocial Apps in 45 minutes
How to create OpenSocial Apps in 45 minutesHow to create OpenSocial Apps in 45 minutes
How to create OpenSocial Apps in 45 minutes
 
Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocial
 
The Identity Problem of the Web and how to solve it
The Identity Problem of the Web and how to solve itThe Identity Problem of the Web and how to solve it
The Identity Problem of the Web and how to solve it
 
Mashing up JavaScript
Mashing up JavaScriptMashing up JavaScript
Mashing up JavaScript
 
Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocial
 
Crossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocialCrossing the Boundaries of Web Applications with OpenSocial
Crossing the Boundaries of Web Applications with OpenSocial
 
Distributed Identities with OpenID
Distributed Identities with OpenIDDistributed Identities with OpenID
Distributed Identities with OpenID
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the IslandsOpening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands
 
Mashing up JavaScript – Advanced Techniques for modern Web Apps
Mashing up JavaScript – Advanced Techniques for modern Web AppsMashing up JavaScript – Advanced Techniques for modern Web Apps
Mashing up JavaScript – Advanced Techniques for modern Web Apps
 
Mashing up JavaScript
Mashing up JavaScriptMashing up JavaScript
Mashing up JavaScript
 
Creating social games for millions of users
Creating social games for millions of usersCreating social games for millions of users
Creating social games for millions of users
 
How to create social apps for millions of users
How to create social apps for millions of users How to create social apps for millions of users
How to create social apps for millions of users
 
Distributed Identities with OpenID
Distributed Identities with OpenIDDistributed Identities with OpenID
Distributed Identities with OpenID
 
OpenSocial - Past, Present, Future
OpenSocial - Past, Present, FutureOpenSocial - Past, Present, Future
OpenSocial - Past, Present, Future
 
Technical Background of VZ-ID
Technical Background of VZ-IDTechnical Background of VZ-ID
Technical Background of VZ-ID
 
How to make your social games successfull
How to make your social games successfullHow to make your social games successfull
How to make your social games successfull
 
Distributed Identities with OpenID
Distributed Identities with OpenIDDistributed Identities with OpenID
Distributed Identities with OpenID
 
OpenSocial in der Praxis
OpenSocial in der PraxisOpenSocial in der Praxis
OpenSocial in der Praxis
 

Recently uploaded

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Recently uploaded (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

OpenSocial Done Right

  • 1. OpenSocial done right Implementing OpenSocial for 16m users Bastian Hofmann Mittwoch, 2. Juni 2010
  • 2. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Agenda 2 Mittwoch, 2. Juni 2010
  • 3. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Agenda  What is a Gadget?  What is OpenSocial?  What about privacy?  How do you integrate OpenSocial in your site?  How to enrich the user experience beyond that? 2 Mittwoch, 2. Juni 2010
  • 4. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net About VZ-Netzwerke three networks 40% daily logins 16.5 million users 30 minutes per user per day 3 Mittwoch, 2. Juni 2010
  • 5. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Visits April 2010 (IVW) VZ 440.719.168 T-Online 403.820.631 MSN 254.417.174 Yahoo 196.320.307 WKW 168.762.246 Bild 137.471.037 ProSieben 133.225.524 SPON 124.266.343 0 250.000.000 500.000.000 4 Mittwoch, 2. Juni 2010
  • 6. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net and compared with monthly TV reach Every VZ-Network surpasses TV in the digital native user group (14 - 29) 5 Mittwoch, 2. Juni 2010
  • 7. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Apps at VZ-Netzwerke over 60 Apps in Gallery, ca. 140 Apps live Launch Dec. 2009 over 14 million installations 9 million daily page impressions in canvas view 6 Mittwoch, 2. Juni 2010
  • 8. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net What is a Gadget?  XML file with HTML and JavaScript (and CSS, Images, Flash, ...)  Application based on the Google Gadgets specification  Can be included on various platforms, which support this specification 7 Mittwoch, 2. Juni 2010
  • 9. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net How to include gadgets?  The Gadget Server  renders the Gadget XML  provides the JavaScript API  provides the REST (or RPC) API  Rendered result is included through an <iframe> into the parent page (Container) 8 Mittwoch, 2. Juni 2010
  • 10. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Gadget Features  Gadget specification includes a rich JavaScript API with a multitude of features  preferences  views  dynamic-height  flash  io  ...  Extendabel 9 Mittwoch, 2. Juni 2010
  • 11. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net One Gadget - Different Views 10 Mittwoch, 2. Juni 2010
  • 12. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net One Gadget - Different Views  Profile 10 Mittwoch, 2. Juni 2010
  • 13. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net One Gadget - Different Views  Profile  Canvas 10 Mittwoch, 2. Juni 2010
  • 14. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net One Gadget - Different Views  Profile  Canvas  Preview 10 Mittwoch, 2. Juni 2010
  • 15. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net One Gadget - Different Views  Profile  Canvas  Preview  Group 10 Mittwoch, 2. Juni 2010
  • 16. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net One Gadget - Different Views  Profile  Canvas  Preview  Group  Popup 10 Mittwoch, 2. Juni 2010
  • 17. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net One Gadget - Different Views  Profile  Canvas  Preview  Group  Popup  Integration 10 Mittwoch, 2. Juni 2010
  • 18. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ <h1>Hello World!</h1> <a href="javascript:gadgets.views.requestNavigateTo(                             gadgets.views.getSupportedViews()['canvas'],                             {'name':'Bastian'})">go to canvas</a> ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[   <h1 id="View"></h1><h1 id="Greeting"></h1> <script type="text/javascript"> gadgets.util.registerOnLoadHandler(function() { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; });   </script> ]]></Content> </Module> 11 Mittwoch, 2. Juni 2010
  • 19. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ <h1>Hello World!</h1> <a href="javascript:gadgets.views.requestNavigateTo(                             gadgets.views.getSupportedViews()['canvas'],                             {'name':'Bastian'})">go to canvas</a> ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[   <h1 id="View"></h1><h1 id="Greeting"></h1> <script type="text/javascript"> gadgets.util.registerOnLoadHandler(function() { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; });   </script> ]]></Content> </Module> 11 Mittwoch, 2. Juni 2010
  • 20. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ <h1>Hello World!</h1> <a href="javascript:gadgets.views.requestNavigateTo(                             gadgets.views.getSupportedViews()['canvas'],                             {'name':'Bastian'})">go to canvas</a> ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[   <h1 id="View"></h1><h1 id="Greeting"></h1> <script type="text/javascript"> gadgets.util.registerOnLoadHandler(function() { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; });   </script> ]]></Content> </Module> 11 Mittwoch, 2. Juni 2010
  • 21. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ <h1>Hello World!</h1> <a href="javascript:gadgets.views.requestNavigateTo(                             gadgets.views.getSupportedViews()['canvas'],                             {'name':'Bastian'})">go to canvas</a> ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[   <h1 id="View"></h1><h1 id="Greeting"></h1> <script type="text/javascript"> gadgets.util.registerOnLoadHandler(function() { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; });   </script> ]]></Content> </Module> 11 Mittwoch, 2. Juni 2010
  • 22. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ <h1>Hello World!</h1> <a href="javascript:gadgets.views.requestNavigateTo(                             gadgets.views.getSupportedViews()['canvas'],                             {'name':'Bastian'})">go to canvas</a> ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[   <h1 id="View"></h1><h1 id="Greeting"></h1> <script type="text/javascript"> gadgets.util.registerOnLoadHandler(function() { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; });   </script> ]]></Content> </Module> 11 Mittwoch, 2. Juni 2010
  • 23. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ <h1>Hello World!</h1> <a href="javascript:gadgets.views.requestNavigateTo(                             gadgets.views.getSupportedViews()['canvas'],                             {'name':'Bastian'})">go to canvas</a> ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[   <h1 id="View"></h1><h1 id="Greeting"></h1> <script type="text/javascript"> gadgets.util.registerOnLoadHandler(function() { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; });   </script> ]]></Content> </Module> 11 Mittwoch, 2. Juni 2010
  • 24. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ <h1>Hello World!</h1> <a href="javascript:gadgets.views.requestNavigateTo(                             gadgets.views.getSupportedViews()['canvas'],                             {'name':'Bastian'})">go to canvas</a> ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[   <h1 id="View"></h1><h1 id="Greeting"></h1> <script type="text/javascript"> gadgets.util.registerOnLoadHandler(function() { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; });   </script> ]]></Content> </Module> 11 Mittwoch, 2. Juni 2010
  • 25. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ <h1>Hello World!</h1> <a href="javascript:gadgets.views.requestNavigateTo(                             gadgets.views.getSupportedViews()['canvas'],                             {'name':'Bastian'})">go to canvas</a> ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[   <h1 id="View"></h1><h1 id="Greeting"></h1> <script type="text/javascript"> gadgets.util.registerOnLoadHandler(function() { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; });   </script> ]]></Content> </Module> 11 Mittwoch, 2. Juni 2010
  • 26. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ <h1>Hello World!</h1> <a href="javascript:gadgets.views.requestNavigateTo(                             gadgets.views.getSupportedViews()['canvas'],                             {'name':'Bastian'})">go to canvas</a> ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[   <h1 id="View"></h1><h1 id="Greeting"></h1> <script type="text/javascript"> gadgets.util.registerOnLoadHandler(function() { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; });   </script> ]]></Content> </Module> 11 Mittwoch, 2. Juni 2010
  • 27. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Example <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="HelloWorld Gadget" > <Require feature="views" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ <h1>Hello World!</h1> <a href="javascript:gadgets.views.requestNavigateTo(                             gadgets.views.getSupportedViews()['canvas'],                             {'name':'Bastian'})">go to canvas</a> ]]></Content> <Content type="html" view="canvas,popup"><![CDATA[   <h1 id="View"></h1><h1 id="Greeting"></h1> <script type="text/javascript"> gadgets.util.registerOnLoadHandler(function() { document.getElementById('View').innerHTML = 'This is the ' + gadgets.views.getCurrentView().getName() + ' view'; document.getElementById('Greeting').innerHTML = 'Hello ' + gadgets.views.getParams()['name']; });   </script> ]]></Content> </Module> 11 Mittwoch, 2. Juni 2010
  • 28. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net And what is OpenSocial?  Extension of the Gadget JavaScript API  an open standard  enables gadgets to access the social graph of users 12 Mittwoch, 2. Juni 2010
  • 29. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net 13 Mittwoch, 2. Juni 2010
  • 30. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net 13 Mittwoch, 2. Juni 2010
  • 31. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net 14 Mittwoch, 2. Juni 2010
  • 32. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net What about privacy? Example of our solution. 15 Mittwoch, 2. Juni 2010
  • 33. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net What about privacy? Example of our solution.  Visibility 15 Mittwoch, 2. Juni 2010
  • 34. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net What about privacy? Example of our solution.  Visibility  Visibility on a user‘s profile page can be changed individually for friends or other people. 15 Mittwoch, 2. Juni 2010
  • 35. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net What about privacy? Example of our solution.  Visibility  Visibility on a user‘s profile page can be changed individually for friends or other people. 15 Mittwoch, 2. Juni 2010
  • 36. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net What about privacy? Example of our solution.  Visibility  Visibility on a user‘s profile page can be changed individually for friends or other people.  Communication 15 Mittwoch, 2. Juni 2010
  • 37. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net What about privacy? Example of our solution.  Visibility  Visibility on a user‘s profile page can be changed individually for friends or other people.  Communication  Gadget needs user permissions for communication (Messages, Activity Stream, Notifications, ...) 15 Mittwoch, 2. Juni 2010
  • 38. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net What about privacy? Example of our solution.  Visibility  Visibility on a user‘s profile page can be changed individually for friends or other people.  Communication  Gadget needs user permissions for communication (Messages, Activity Stream, Notifications, ...) 15 Mittwoch, 2. Juni 2010
  • 39. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net What about privacy? Example of our solution.  Visibility  Visibility on a user‘s profile page can be changed individually for friends or other people.  Communication  Gadget needs user permissions for communication (Messages, Activity Stream, Notifications, ...)  Access 15 Mittwoch, 2. Juni 2010
  • 40. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net What about privacy? Example of our solution.  Visibility  Visibility on a user‘s profile page can be changed individually for friends or other people.  Communication  Gadget needs user permissions for communication (Messages, Activity Stream, Notifications, ...)  Access  Access to user data is handled through a special vcard 15 Mittwoch, 2. Juni 2010
  • 41. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net VCards 16 Mittwoch, 2. Juni 2010
  • 42. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net VCards  Wile installing a gadget, the user has to assign an existing or new vcard to it 16 Mittwoch, 2. Juni 2010
  • 43. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net VCards  Wile installing a gadget, the user has to assign an existing or new vcard to it 16 Mittwoch, 2. Juni 2010
  • 44. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net VCards  Wile installing a gadget, the user has to assign an existing or new vcard to it  Data on vcard can differ to the user‘s profile 16 Mittwoch, 2. Juni 2010
  • 45. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net VCards  Wile installing a gadget, the user has to assign an existing or new vcard to it  Data on vcard can differ to the user‘s profile 16 Mittwoch, 2. Juni 2010
  • 46. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net VCards  Wile installing a gadget, the user has to assign an existing or new vcard to it  Data on vcard can differ to the user‘s profile  Gadget has only access to data of users which have installed the gadget 16 Mittwoch, 2. Juni 2010
  • 47. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Implementing OpenSocial yourself  Reference OpenSource Implementation: Apache Shindig  Available as Java and PHP version  Gadget Container JavaScript  Gadget Rendering Server  OpenSocial Container JavaScript  OpenSocial Data Server (REST + RPC) 17 Mittwoch, 2. Juni 2010
  • 48. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Get the party started  Apache  PHP  MySQL  Shindig  Partuza 18 Mittwoch, 2. Juni 2010
  • 49. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net And that‘s all? 19 Mittwoch, 2. Juni 2010
  • 50. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Connection to backend 20 Mittwoch, 2. Juni 2010
  • 51. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Container logic  Resizing  View navigation  SecurityToken updates  Calling platform dialogs  Preferences 21 Mittwoch, 2. Juni 2010
  • 52. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Views 22 Mittwoch, 2. Juni 2010
  • 53. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Gallery, Installation Flow, ... 23 Mittwoch, 2. Juni 2010
  • 54. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Sandbox 24 Mittwoch, 2. Juni 2010
  • 55. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Approval process Better quality Better security Apps are less buggy Apps add value for the users Better reach for individual apps More activity in apps 25 Mittwoch, 2. Juni 2010
  • 56. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Payment 26 Mittwoch, 2. Juni 2010
  • 57. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Advertising 27 Mittwoch, 2. Juni 2010
  • 58. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Viral features 28 Mittwoch, 2. Juni 2010
  • 59. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Taking it one step further 29 Mittwoch, 2. Juni 2010
  • 60. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Embedding 30 Mittwoch, 2. Juni 2010
  • 61. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Doing it right 31 Mittwoch, 2. Juni 2010
  • 62. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Doing it right Open standards Data privacy Include apps wisely Don‘t forget the developers 31 Mittwoch, 2. Juni 2010
  • 63. VZnet Netzwerke Ltd. l studiVZ.net l schuelerVZ.net l meinVZ.net Further information ...  http://www.opensocial.org  Our blog: http://developer.studivz.net  Our wiki: http://developer.studivz.net/wiki  Become a developer and get access to our sandbox: http://www.studivz.net/Developer and http://www.meinvz.net/Developer  Or implement an OpenSocial container yourself: http://shindig.apache.org/ http://code.google.com/p/partuza/ 32 Mittwoch, 2. Juni 2010
  • 64. Thank you! Contact: Bastian Hofmann bhofmann@vz.net http://www.studivz.net/bastian http://www.meinvz.net/bastian http://twitter.com/BastianHofmann http://www.slideshare.net/bashofmann Mittwoch, 2. Juni 2010