Download presentation
Presentation is loading. Please wait.
Published byAiden Fuller Modified over 11 years ago
1
Implementing an OpenSocial Container Lou Moore, hi5.com
2
hi5 The Truly Global Social Network
3
hi5 International Leader Africa Cote d'Ivoire Ghana Tunisia Asia Thailand Mongolia #1 social network in 26 countries: 80M+ registered members 40M WW monthly uniques 80M+ registered members 40M WW monthly uniques 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
4
hi5 Truly Global Social Network 15% 25% 30% 20% 10% hi5 Traffic Across the Globe
5
Offered in 23 Language Options Coming soon: hi5 tool to translate your application! Coming soon: hi5 tool to translate your application! English Español (3 dialects: Español, España & Argentina) Português (2 dialects: Portugal & Brasil) Français Italiano Ελληνικά Русский (traditional & simplified scripts) Deutsch Nederlands Türkçe Română Polski Magyar Česky YkpaÏHCbKa
6
hi5 User Demographics
7
Opportunity to Reach New Users ~20% users overlap ~30% users overlap ~20% users overlap ~40M WW hi5 unique users
8
Motivation Why Platform? Why OpenSocial?
9
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
10
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
11
Defining Your Platform How will applications integrate with your social website?
12
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
13
Views - Profile
14
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 cant do on hi5 Profiles Use viral channels Advertise or cross-promote
15
Views - Canvas Dedicated page for applications Monetization opportunity – advertisements allowed
16
Views - Canvas
17
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
18
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
19
Views - Preview
20
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)
21
Views – Anywhere you choose! Homepage? Photos? Albums? Define your own views in the context of your social site.
22
Permissions Access profile data Add profile module Allow friend updates (activity) Allow notifications Allow email
23
Viral Channels - Activity hi5 Friend Updates are displayed on the users profile and their friends homepages
24
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
25
Viral Channels - Email Limited to 1 per user/app/day
26
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.
27
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 users language will also be introduced.
28
Directory
29
Applications Homepage
30
Implementing a REST API Creating the web services necessary to support OpenSocial
31
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
32
hi5 REST APIs
33
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
34
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&Hi5AuthTo ken=xxxxx
35
OpenSocial REST API Currently no standard REST API across containers OpenSocial REST API spec in progress hi5 will migrate to support this in future
36
Implementing the OpenSocial API Tying it back to your social data
37
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)
38
Shindig Structure
39
Shindig - Features
40
Shindig – opensocial-reference
41
Shindig – opensocial-0.7
42
Shindig – feature.xml
43
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 >
44
jsoncontainer.js – Fetch People
45
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
46
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
47
hi5container.js – Create Activity
48
hi5container.js – Share App
49
Gadgets – Core Prefs –user data including country and language injected into applications io –gadgets.io.makeRequest for remote fetching –signed requests using OAuth
50
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
51
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
52
hi5.js
53
Running a Shindig Server OpenSocial in a high-volume production environment
54
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
55
hi5 Platform Architecture
56
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
57
Building a Thriving Developer Community Communication, Communication, Communication
58
Tools Built-in app editor Language preview Activity preview to come
59
Communication Wiki, Bug Tracker, Forums IRC!! Blog Posts –Clear explanations of viral channels, ranking systems, guidelines –Post often
60
Incentives Free translations Hosting through Joyent
61
Maintaining a Great User Experience Its still all about the users
62
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
63
Mitigating Spamminess Blocking an app Reporting spam on all viral channels Collecting feedback Smart limits on viral channels, ability to monitor and control Its a delicate balance between developer freedom and user experience
64
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.
65
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
66
Demo Walkthrough of an OpenSocial application on the hi5 platform: PixWall by PixVerse
67
Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.