3. What is OpenSocial?
• Open Specification
– 1.0 version released in March
– Many companies involved
• Lightweight web components
• Modularity in mind
• Social features
4. Write once, run anywhere
• Many social networking sites are OpenSocial
compatible
– MySpace, Hi5, LinkedIn, iGoogle, Orkut…
• Eclipse
– e4 team working on an OpenSocial
implementation too
5. Enterprise usage
• Many enterprise-oriented gadgets
– Calendar, To-Do List, Map, Doodle, …
– Atlassian provides gadgets for JIRA metrics
• Bringing OpenSocial support into an existing
application is not that hard
– Existing web apps: Apache Shindig
– Rich client apps: e4!
• “Social Enterprise”
6. Social, you said?
• Many APIs to crawl user’s social network
• Data model
– Person (friends, groups, tastes, …)
• AppData for each gadget
– Activities (music being listened, …)
– Messages, Albums, …
7.
8. Gadget/module definition
• XML file
– Metadata
– Dependencies
– Application implementation
• In-line HTML / CSS / JavaScript
• or URL to external definition (a la IFRAME)
11. The simple way…
• Stand-alone HTML/JS/CSS in your preferred
editor
• Worry about gadget.xml later
– Debug made easier
• Wrap in gadget.xml at the very end
– “url” content-type => IFRAME
12. OpenSocial
Development Environment
• Built-in Shindig server for local testing
• Forms editor for the gadget definition
• Social data handling (embedded database)
• Testing
– Easy iGoogle deployment
– Performance testing with Firefox
13.
14. Why?
• Deploy existing gadgets into views
• … and develop new ones leveraging Eclipse
services
– Only HTML, CSS & Javascript
– Not mandatory to know the Eclipse API
– OpenSocial spec fits quite well in Eclipse
architecture
– De-facto self-hosting
15. Collaborative development
• Make e4 « social-aware »
– Communicate with co-workers
– Share information (project, code snippets) with
your social network
– Share gadgets themselves (« Coworker John
suggests you to add the XYZ gadget »)
16.
17. Implementation overview
• HTML rendering: SWT Browser widget
• Since 3.5, the Browser is on steroids:
– Browser#evaluate(String) allows
evaluation of arbitrary JavaScript from your Java
code
– BrowserFunction allows to have Java
implementation for JavaScript functions
18. Implementation overview
• Modules express dependencies towards features
– Extension point to register new OpenSocial features in
the container
– OSGi Resolver to solve constraints expressed by a
Module
• Available features in the container: mapped to Bundles
• Features required by a module: Require-Bundle
directives
• Eclipse specific APIs exposed through
the e4 OpenSocial feature
19. Plan
• Create bridges to more Eclipse Application
Services
• Merge some of recent investigations made in
http://github.com/kartben
• ATF integration (JS/CSS debugging support)
• Social REST APIs directly exposed by ECF