Implementing an opensocial container
Download
1 / 67

Implementing an OpenSocial Container - PowerPoint PPT Presentation


  • 107 Views
  • Updated On :

Implementing an OpenSocial Container. Lou Moore, hi5.com. 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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
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

hi5

The Truly Global Social Network


Hi5 international leader l.jpg
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

Macedonia

Luxembourg

Latin America & Caribbean

Mexico

Venezuela

Costa Rica

Honduras

Ecuador

El Salvador

Guatemala

Peru

Nicaragua

Dominican Republic

Cuba

Jamaica

Barbados

  • 80M+ registered members

  • 40M WW monthly uniques


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

hi5 Traffic Across the Globe

25%

15%

20%

10%

30%


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

English

한국어

Español

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

Português

(2 dialects: Portugal & Brasil)

中文

(traditional & simplified scripts)

Français

Italiano

Nederlands

ภาษาไทย

日本語

Русский

Deutsch

Ελληνικά

Türkçe

Polski

Română

YkpaÏHCbKa

Česky

Magyar

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

Motivation

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
Permissions

  • 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
Directory

  • 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

    • http://enunciate.codehaus.org

  • 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
REST API

  • OpenSocial core APIs

    • People

    • Activity

    • Persistence

  • hi5 REST endpoints

    • profile/foaf

    • feed/activity

    • profile/appdata

  • Example call

    • http://api.hi5.com/rest/profile/foaf/23777773


Rest api34 l.jpg
REST API

  • OpenSocial request* APIs

    • requestSendMessage

    • requestCreateActivity

  • hi5 REST endpoints

    • notifications/send

    • message/sendEmails

    • friendUpdates/friendUpdate

  • Example call

    • http://api.hi5.com/rest/notifications/send?toIds=23777773&body=Hey&Hi5AuthToken=xxxxx


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
Shindig

  • 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

    • PRIVATE_MESSAGE and PUBLIC_MESSAGE return NOT_IMPLEMENTED response

  • 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

    • gadgets.io.makeRequest 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
Tools

  • Built-in app editor

  • Language preview

  • Activity preview to come


Communication l.jpg
Communication

  • Wiki, Bug Tracker, Forums

  • IRC!!

  • Blog Posts

    • Clear explanations of viral channels, ranking systems, guidelines

    • Post often


Incentives l.jpg
Incentives

  • 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
Results

  • 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

Demo

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



ad