Johan's blog
OpenSocial evolutions
At this moment, I am working on three projects that somehow are related to OpenSocial. This is not a coincidence. Social Networking and related activities are getting more attention from the Internet community. Personally, I don't think there are really new technical things -- it just takes time before the technology and the business models fit together.
Sites offering social networking capabilities often need to interoperate with a number of tools and applications. Developers that want to write applications, tools, gadgets, widgets for "a" social networking site hope that their software also works on other sites.
One of the most popular social networking projects is Facebook, and the Facebook model allows developers to program their own applications on top of Facebook. Pretty cool, unfortunately completely Facebook specific.
The answer of Google, Ning, LinkedIn and some other to the Facebook approach is OpenSocial. The OpenSocial specification (currently at version 0.8) defines 4 areas: 1. The container must implement all methods in the JavaScript API Reference.
2. The container must only use the specified extensibility mechanisms for any container-specific extensions.
3. The container must satisfy the Gadgets API Specification.
4. The container must support the RESTful API Specification.
The last specification requirement is the most interesting to me. OpenSocial clients can use a common REST approach to interact with the OpenSocial Container (be it LinkedIn, Orkut,...)
There is some sort of a Reference Implementation for OpenSocial, living in the Apache incubator zone and called shindig. There is very little documentation about Shindig, but you can download the code from the subversion repository. After some code browsing, I found out that the interfaces ending in Service in the package org.apache.shindig.social.opensocial.spi are the important ones. Implementations of these interfaces will be called when a REST-request is executed on the container.
In my opinion, the main benefit of Shindig is the JavaScript implementation, that allows me as a Java developer to concentrate on the implementation of the social graph and related methods for specific projects. Using the Shindig implementation on top of our data-implementations allows us to be Open-Social compliant relatively easy.
Recently, Sun Microsystems announced the availability of SocialSite. The SocialSite project was announced at JavaOne this year, and the first pieces of code are available now. SocialSite leverages Shindig as well, but at first sight, a different model for implementing the REST API is used. But I need to have a more detailed look at the code...
