open social & cmis oasistc-20100712
DESCRIPTION
Some ideas and starting points on how OpenSocial and CMIS may play nice together. It would be nice to get some thoughts here: http://wiki.opensocial.org/index.php?title=Align_CMIS_and_OpenSocial or here: http://groups.google.com/group/opensocial-and-gadgets-specTRANSCRIPT
Some thoughts for discussion: OpenSocial & CMIS
Mark Weitzel Secretary, OpenSocial Founda@on
[email protected] Eric Woods
Discussion Topics
• Overview of OpenSocial • A look at the API • A general ques@on • More ques@ons, some ideas, some first steps…
Overview of OpenSocial
• History • OpenSocial Founda@on • Specifica@on • Open source
Overview of OpenSocial: History
• Started in 2007 as response to Facebook – Google, MySpace, Yahoo!, hi5, Flixster
• Very broad adop@on in Social Networking space – Global reach – Most using on Apache Shindig
• Increasing adop@on by enterprises & enterprise vendors
• Established from the outset as a community effort – Some technology seeded by Google
• 2008 started OpenSocial Founda@on
Overview of OpenSocial: Founda@on
• Board – 5 Corporate Members
(Bri@sh Telecom, Google, IBM, MySpace, Yahoo!)
– 2 Community Elected Members (Mark Halvorson – Atlassian, Paul Lindner – LinkedIn)
• Officers – President: David Peck (MySpace)
– Treasurer: Karthik Suri (Yahoo!) – Secretary: Mark Weitzel (IBM)
• Community – Open to all – No cost to par@cipate
The OpenSocial Foundation is a non-profit corporation created to sustain the free and open development of the OpenSocial specification.
Overview of OpenSocial: Development Process
• All development done transparently
• Lead with code – Propose an idea – Create a prototype – Modify the spec
– Community vote
Overview of OpenSocial: The Spec
• Defines a Web 2.0 Component model (OpenSocial Gadgets—Not the same as Google Gadgets)
• Defines a social data model • Layered to accommodate levels of compliance
• Designed to be extended • Current version is 1.0
– 1.1 under development
– 1.2 tenta@ve plan
OpenSocial Specifica-on
Core Gadget Social Gadget
Core API Social API Server
Core Data
Overview of OpenSocial: The Spec • Web 2.0 component model (OpenSocial Gadgets)
– JavaScript API • Social API
– JavaScript & REST • Templates • Discovery
Social People Groups Ac@vi@es AppData
Albums Media Items Messages
Gadgets
Templates Preferences App Data Life Cycle Events
Inter-‐applica@on events Features OAuth & Request Signing Data Pipelining
Views Versions Localiza@on Tabs
Skins Batch Requests
A quick look at the API: JavaScript Gegng Friends osapi.people.get({userId: '@owner', groupId: '@friends'}).execute(function(result) { if (!result.error) { alert('You have ' + result.totalResults + ' friends'); } });
Gegng Specific Fields (“Proper@es”) osapi.people.getViewer({fields: ['displayName', 'birthday']}).execute(function(result) { if (!result.error) { alert('Your name is ' + result.displayName + '!'); alert('Your birthday is ' + result.birthday + '!'); } });
Gegng Specific Fields (“Proper@es”) osapi.people.getViewer({fields: ['displayName', 'birthday']}).execute(function(result) { if (!result.error) { alert('Your name is ' + result.displayName + '!'); alert('Your birthday is ' + result.birthday + '!'); } });
A quick look at the API: Data Pipelining & Templates
Templates <script type="text/os-template"> <div style="font-size: 20px">Hello ${Viewer.displayName}! </div> </script>
Data Pipelining <Content type="html”> <![CDATA[ <script xmlns:os="http://ns.opensocial.org/2008/markup" type="text/os-data"> <os:ViewerRequest key="Viewer" fields="name, birthday"/> <os:HttpRequest key="mydata" href="http://example.com/api"/> </script> ... HTML content here ... ]]> </Content>
A quick look at the API: REST General Pajern HTTPVerb http://baseURL/serviceName/userID/selector?queryParameters
Services
• People
• Groups
• Ac@vi@es • AppData
• Albums
• MediaItems
• Messages
Examples GET http://api.example.org/people/userID/@friends?sortBy=updated
GET http://api.example.org/people/userID/@friends
GET http://api.example.org/people/@me/@friends
Try it!! http://www-opensocial.googleusercontent.com/api/people/108384687998576846752/@self
http://www-opensocial.googleusercontent.com/api/people/108384687998576846752/@self?format=xml
http://www-opensocial.googleusercontent.com/api/people/108384687998576846752/@self?format=atom
It is expected that new services will be added as more capability defined in OpenSocial, e.g. via extensions
A General Ques@on
Given that we have a number of vendors that are acAvely working on products and soluAons that use both OpenSocial and CMIS…
and similar concepts appear in each spec…
…as OpenSocial and CMIS emerge in the enterprise, can we provide a consistent, open, standards based programming model to our customers that leverages the strengths of each specificaAon, promotes interoperability, and fosters sharing and collaboraAon between communiAes?
More ques@ons, some ideas, some first steps… • Are there “low hanging fruit” that we can do to “test the
waters”? – Build CMIS gadgets to demonstrate parts of Chemistry
– Build gadgets to show how the APIs can work together
– Add OpenSocial MediaItems as a CMIS Document subclass
– Create a CMIS based extension for exis@ng OS MediaItems
Some First Steps… (will be done in open source – not sure which project) • MediaItems & Albums seem to overlap with CMIS
• Created a bi-directional mapping utility Next Steps… • In process of integrating mapping utility as binding with Shindig • Demonstrate complimentary APIs via OpenSocial Gadget
• Retrieve document info (CMIS) & Person info (OS) • Create document (CMIS) & Post Activity (OS)
More ques@ons, some ini@al ideas, some first steps…
• Moving forward, what makes sense? – What changes are necessary to OpenSocial to bejer support CMIS?
• Add new “CMIS-‐style” MediaItems (or extensions)
• Formalize rela@onships
– Create CMIS “bindings” for OpenSocial JavaScript? • Leverage simple OS API programming model, Templates, Features
• Adds social constructs “for free” – OAuth support in Chemistry?
Links & References
• hjp://wiki.opensocial.org/index.php?@tle=Align_CMIS_and_OpenSocial