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

Creating OpenSocial Apps
Creating OpenSocial AppsCreating OpenSocial Apps
Creating OpenSocial AppsBastian Hofmann
 
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 Groupminddog
 
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 usersBastian Hofmann
 
Google App Engine - Devfest India 2010
Google App Engine -  Devfest India 2010Google App Engine -  Devfest India 2010
Google App Engine - Devfest India 2010Patrick Chanezon
 
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 ChromeKenneth Auchenberg
 
Distributed Social Networking
Distributed Social NetworkingDistributed Social Networking
Distributed Social NetworkingBastian Hofmann
 
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 BostonJen Simmons
 
Mobile Strategy & Product Dev. - iRush
Mobile Strategy & Product Dev. - iRushMobile Strategy & Product Dev. - iRush
Mobile Strategy & Product Dev. - iRushAndrew Donoho
 
Wish you were here before!
Wish you were here before!Wish you were here before!
Wish you were here before!David King
 
Introduction to DZone
Introduction to DZoneIntroduction to DZone
Introduction to DZoneBrandon Hoe
 
A Smart Assistance for Visually Impaired
A Smart Assistance for Visually ImpairedA Smart Assistance for Visually Impaired
A Smart Assistance for Visually ImpairedIRJET Journal
 
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 OrchestrationsAntonio Pintus
 
Advanced Capabilities of OpenSocial Apps
Advanced Capabilities of OpenSocial AppsAdvanced Capabilities of OpenSocial Apps
Advanced Capabilities of OpenSocial AppsBastian Hofmann
 
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 ShadowAntony Mayfield
 
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...dduin
 
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 allDevelopment Seed
 
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 Bastian Hofmann
 

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
 
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
 
Antonio Pintus- TouchTheWeb 2010
Antonio Pintus- TouchTheWeb 2010Antonio Pintus- TouchTheWeb 2010
Antonio Pintus- TouchTheWeb 2010
 
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

Introduction to rg\injection
Introduction to rg\injectionIntroduction to rg\injection
Introduction to rg\injectionBastian Hofmann
 
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! Bastian Hofmann
 
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 minutesBastian 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 OpenSocialBastian 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 itBastian 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 OpenSocialBastian 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 OpenSocialBastian Hofmann
 
Distributed Identities with OpenID
Distributed Identities with OpenIDDistributed Identities with OpenID
Distributed Identities with OpenIDBastian Hofmann
 
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 IslandsBastian Hofmann
 
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 AppsBastian Hofmann
 
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 usersBastian Hofmann
 
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 Bastian Hofmann
 
Distributed Identities with OpenID
Distributed Identities with OpenIDDistributed Identities with OpenID
Distributed Identities with OpenIDBastian Hofmann
 
OpenSocial - Past, Present, Future
OpenSocial - Past, Present, FutureOpenSocial - Past, Present, Future
OpenSocial - Past, Present, FutureBastian Hofmann
 
Technical Background of VZ-ID
Technical Background of VZ-IDTechnical Background of VZ-ID
Technical Background of VZ-IDBastian 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 successfullBastian Hofmann
 
Distributed Identities with OpenID
Distributed Identities with OpenIDDistributed Identities with OpenID
Distributed Identities with OpenIDBastian Hofmann
 
OpenSocial in der Praxis
OpenSocial in der PraxisOpenSocial in der Praxis
OpenSocial in der PraxisBastian 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

My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 

Recently uploaded (20)

My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 

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