Implementing an opensocial container
1 / 67

Implementing an OpenSocial Container - PowerPoint PPT Presentation

  • Updated On :

Implementing an OpenSocial Container. Lou Moore, hi5. The Truly Global Social Network. hi5 — International Leader. #1 social network in 26 countries:. Africa Cote d'Ivoire Ghana Tunisia Asia Thailand Mongolia. Europe Portugal Romania Greece Cyprus Malta Albania

Related searches for Implementing an OpenSocial Container

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'Implementing an OpenSocial Container' - isra

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Slide2 l.jpg


The Truly Global Social Network

Hi5 international leader l.jpg
hi5 — International Leader

#1 social network in 26 countries:


Cote d'Ivoire















Latin America & Caribbean



Costa Rica



El Salvador




Dominican Republic




  • 80M+ registered members

  • 40M WW monthly uniques

Hi5 truly global social network l.jpg
hi5 — Truly Global Social Network

hi5 Traffic Across the Globe






Offered in 23 language options l.jpg
Offered in 23 Language Options




(3 dialects: Español, España & Argentina)


(2 dialects: Portugal & Brasil)


(traditional & simplified scripts)















Coming soon:

hi5 tool to translate your application!

Opportunity to reach new users l.jpg
Opportunity to Reach New Users

~20% users overlap

~40M WW hi5 unique users

~20% users overlap

~30% users overlap

Motivation l.jpg


Why Platform? Why OpenSocial?

Why platform l.jpg
Why Platform?

  • Tap talent and creativity of the developer community

  • Provide engaging experience for our users

  • Obtain locally relevant content, provide a locally relevant experience

Why opensocial l.jpg
Why OpenSocial?

  • Standards-based platform for deep integration within hi5

    • Decreases our time to market

    • Leverages open standards

    • Strong opensource community

  • Draw for developers because OpenSocial apps are easily portable

Defining your platform l.jpg

Defining Your Platform

How will applications integrate with your social website?

Views profile l.jpg
Views - Profile

  • User profiles are the center for self-expression on hi5 and are a common feature of social sites

  • A profile page may have many applications

Views profile14 l.jpg
Views – Profile

  • Considerations

    • Performance: Many applications with dynamic content will impact page load times.

    • Styling: hi5 Profiles can be heavily styled so application profile views need to be able to seamlessly blend.

    • Customization: Allow users to control their profile pages via features like module re-ordering.

    • Common Actions: Provide links to View, Share, and Remove applications.

    • What apps can’t do on hi5 Profiles

      • Use viral channels

      • Advertise or cross-promote

Views canvas l.jpg
Views - Canvas

  • Dedicated page for applications

  • Monetization opportunity – advertisements allowed

Views canvas17 l.jpg
Views - Canvas

  • Considerations

    • Vanity URLs for application canvas pages

    • Canvas page should detect if user has installed the application

    • Provide links for users to manage application settings

    • Provide method for users to give feedback to developers

Views preview l.jpg
Views - Preview

  • Non-standard view

  • Way for users to interact with an application without installing it

  • Option for installing application

    • Privacy settings to be applied

  • Displays information about the application

    • Metadata such as summary and description

    • Friends with the application

    • Other apps by the developer

    • Rankings & ratings

Views preview20 l.jpg
Views - Preview

  • Considerations

    • Non-standard view, another size for developers to conform to

    • Permissions model is complex if viral channels allowed, but allows for a richer pre-install experience (beware the blinking red arrow)

Views anywhere you choose l.jpg
Views – Anywhere you choose!

  • Homepage? Photos? Albums? Define your own views in the context of your social site.

Permissions l.jpg

  • Access profile data

  • Add profile module

  • Allow friend updates (activity)

  • Allow notifications

  • Allow email

Viral channels activity l.jpg
Viral Channels - Activity

  • hi5 Friend Updates are displayed on the user’s profile and their friends’ homepages

Viral channels notifications l.jpg
Viral Channels - Notifications

  • Lightweight message sent to a user notifying them of some event.

  • No action required, expire after 2 weeks, and limited to 5 per app/user/day

Viral channels email l.jpg
Viral Channels - Email

  • Limited to 1 per user/app/day

Viral channels invites l.jpg
Viral Channels - Invites

  • Invites are requests sent from a user to a friend inviting them to install an application. Requests do require action on the part of the recipient.

Directory l.jpg

  • Applications must be approved to be added to the hi5 directory.

  • Randomized at launch to maintain a level playing field.

  • Engagement-based metrics will be introduced to rank applications.

  • Sorting by most recent applications and applications that are locally relevant or support the user’s language will also be introduced.

Implementing a rest api l.jpg

Implementing a REST API

Creating the web services necessary to support OpenSocial

Publishing the hi5 web service l.jpg
Publishing the hi5 Web Service

  • Enunciate

    • Opensource java web service framework

    • Publishes endpoints in REST, JSON, and SOAP formats

    • Auto-documenting, annotation-based


  • Authentication

    • auth tokens generated based on valid API Key and hi5 user/password combination

    • Auth token may be obtained via REST call, but is always made available within OpenSocial applications

Rest api l.jpg

  • OpenSocial core APIs

    • People

    • Activity

    • Persistence

  • hi5 REST endpoints

    • profile/foaf

    • feed/activity

    • profile/appdata

  • Example call


Rest api34 l.jpg

  • OpenSocial request* APIs

    • requestSendMessage

    • requestCreateActivity

  • hi5 REST endpoints

    • notifications/send

    • message/sendEmails

    • friendUpdates/friendUpdate

  • Example call


Opensocial rest api l.jpg
OpenSocial REST API

  • Currently no standard REST API across containers

  • OpenSocial REST API spec in progress

  • hi5 will migrate to support this in future

Implementing the opensocial api l.jpg

Implementing the OpenSocial API

Tying it back to your social data

Shindig l.jpg

  • Opensource Apache project – implementation of OpenSocial and Gadgets specifications.

    • Gadget Container JavaScript -- core JavaScript foundation for general gadget functionality.

    • Gadget Server – renders the gadget XML into JavaScript and HTML

    • OpenSocial Container JavaScript -- OpenSocial specific functionality (profiles, friends, activities, datastore)

Data requests l.jpg
Data Requests

  • opensocial.newDataRequest

    • newFetchPersonRequest

    • newFetchPeopleRequest

    • newFetchActivitiesRequest

    • newFetchPersonAppDataRequest

    • newUpdatePersonAppDataRequest

  • Map to hi5 REST endpoints and convert results to OpenSocial objects

    • opensocial.Person

    • opensocial.Activity

    • Persistence returns Map<PersonId, Map<String, String>>

Jsoncontainer js and the socialdata servlet l.jpg
jsoncontainer.js and the SocialData Servlet

  • Request Batching

    • Java servlet handles batched requests and returns one large JSON response

  • All data fetches routed to SocialData servlet via jsoncontainer.js

Viral requests request l.jpg
Viral Requests (request*)

  • opensocial.requestCreateActivity

    • supported fields include TITLE, BODY, MEDIA_ITEMS, URL

    • a and br tags allowed in TITLE and BODY

  • opensocial.requestSendMessage

    • NOTIFICATION and EMAIL implemented


  • opensocial.requestShareApp

    • implemented as rpc call to navigate to invite page

  • Map requests to hi5 REST api, return opensocial.ResponseItem

Gadgets core l.jpg
Gadgets – Core

  • Prefs

    • user data including country and language injected into applications

  • io

    • for remote fetching

    • signed requests using OAuth

Gadgets other features l.jpg
Gadgets – Other Features

  • Views

    • gadgets.views.requestNavigateTo

      • rpc call to navigate to a desired View

    • gadgets.views.getCurrentView

    • gadgets.views.getParams

    • view-params

      • params in json format to be passed into applications

  • Skins

    • gadgets.skins.getProperty

Hi5 feature extending opensocial l.jpg
hi5 Feature – Extending OpenSocial

  • hi5.newFetchAlbumsRequest

  • hi5.ActivityMediaItemField.LINK

  • hi5.PersonField.PRESENCE

  • Capabilities discovery

    • gadgets.util.hasFeature

    • gadgets.views.getSupportedViews

    • opensocial.getEnvironment().supportsField

    • Container declares supported features, views, and fields

Running a shindig server l.jpg

Running a Shindig Server

OpenSocial in a high-volume production environment

Working with shindig l.jpg
Working with Shindig

  • Deployment model

    • Own shindig svn repository

    • Build gadgets.jar

    • Build api war including gadgets.jar (shindig) and friend.jar (hi5) using enunciate

    • Deploy resulting war as web service on tomcat 6

Production shindig stats l.jpg
Production Shindig Stats

  • Currently 30 API/Shindig servers

  • 6.4 billion requests since launch

  • Servers processing on average 200 req/s, 4-500 possible

  • Overall Traffic peak > 7000 req/s

  • Significant efforts invested in making shindig work well with caching in the browser and on Akamai.

  • Learnings contributed back to OpenSocial

Building a thriving developer community l.jpg

Building a Thriving Developer Community

Communication, Communication, Communication

Tools l.jpg

  • Built-in app editor

  • Language preview

  • Activity preview to come

Communication l.jpg

  • Wiki, Bug Tracker, Forums

  • IRC!!

  • Blog Posts

    • Clear explanations of viral channels, ranking systems, guidelines

    • Post often

Incentives l.jpg

  • Free translations

  • Hosting through Joyent

Maintaining a great user experience l.jpg

Maintaining a Great User Experience

It’s still all about the users

Privacy controls l.jpg
Privacy Controls

  • My Apps page with controls for each installed app

  • Ability to select privacy settings on preview/install page

  • Choice to uninstall or remove from profile on Remove link on profile

Mitigating spamminess l.jpg
Mitigating Spamminess

  • Blocking an app

  • Reporting spam on all viral channels

  • Collecting feedback

  • Smart limits on viral channels, ability to monitor and control

  • It’s a delicate balance between developer freedom and user experience

Internationalization localization l.jpg
Internationalization & Localization

  • Basic support available today

  • Activity and Message templates coming soon

  • Crowd-sourced translation services for applications coming soon

  • Developer outreach in global markets, leverage platform to provide a locally relevant experience.

Results l.jpg

  • Production launch 3/31, full launch to 100% of users 4/4

  • 65 applications at launch, 328 today in 21 categories

  • Averaging > 1 million new installs each day

  • 5 apps with > 1 million installs, 11 more with > 500k installs

  • Top apps getting > 1 million daily canvas views

  • ~50% of active users have at least one application installed

  • Active users average ~3 apps on every profile, with as many as 16

Slide66 l.jpg


Walkthrough of an OpenSocial application on the hi5 platform: PixWall by PixVerse