JavaOne 2008 – Making your website social – on OpenSocial API and project SocialSite
developers can create apps that access a social network’s friends and update feeds.
The OpenSocial API is somewhat ironically the next step after an earlier initiative of Facebook that opened up some of its platform with an API and the FBML (FaceBook Markup Language) (see http://wiki.developers.facebook.com/index.php/FBML ), with Face Book not yet part of the OpenSocial movement. The OpenSocial API is expected to be implemented/provided by many of the leading social networks. And it is expected to be soon controlled by the OpenSocial foundation – instead of being hosted by the rather closed Google corporation.
The presentation at CommunityOne by Dave Johnson and Jamey Wood provided a good overview of the developments in terms of social software in the past – starting in 1996 with the first blogs and wikis and propelled in recent years by initiatives such as Friendster (an early one), LinkedIn, Twitter, Dopplr, Facebook, MySpace, Plaxo – and the expected future. The unstoppable march of social aspects of software into the Enterprise is clear to all. If you do not want your company’s website and web-applications to be the static HTML dinosaur but want to explore and exploit new ways of engaging visitors, you have to open up and socialize.
The OpenSocial API certainly helps. However, it has its limitations. Well, what is it to begin with? OpenSocial describes to mechanisms to interact with Social Networking platforms such as Twitter and LinkedIn:
- The OpenSocial REST API
that run on social websites that have implemented the OpenSocial APIs.
These websites, known as OpenSocial containers, allow developers to
access their social information; in return they receive a large suite
of applications for their users. Note that these containers – such as orkut and the other major social networking services – implement the Google Gadget container specification for hosting these social gadgets.
The API supports three areas:
- access to people profiles – support for over 50 characteristics found in many of the social networks, (The People and Friends data API allows client applications to
view and update users’ profiles and relationships. Your client
application can request a list of a user’s Friends and query the
content in an existing Profile) Note: Google’s website states view and update, while the presenters stressed the fact that the people and friends api only allowed read only access.
- read/write access for activities – entries with a timestamp, title, a body, associated media content (he Activities data API allows client applications to view and publish "actions"
in the OpenSocial platform. Your client application can use the API to create new
entries, edit or delete existing entries, and view lists of entries.)
- The Persistence data API allows client applications to view and
update key/value content for their applications. Your client
application can edit or delete content for an existing application,
user, or gadget instance, and query the content in an existing feed.
Dave and Jamey stated that the OpenSocial API is fuzzy on support for groups and how to do authentication. They were a bit vague about support for Friends/Links and said that the People API was read-only. This latter statement seems to contrast wtih the specification on the OpenSocial website, so I am somewhat at a loss here. Note that the API is currently at release 0.7 and is still very much work in progress.
The Apache Shindig project – currently in Incubator at http://incubator.apache.org/shindig/ – will provide us with a few interesting things, including an open source implementation of the Google Gadgets server:
communication, UI layout, and feature extensions, such as the OpenSocial API.
specific functionality (profiles, friends, activities, datastore).
- OpenSocial Data Server — an implementation of the server interface to container-specific
information, including the OpenSocial REST APIs, with clear extension points so others can connect it to their own backends.
Note that Shindig will have both Java and PHP implementations of the server.
Dave and Jamey indicated that Shindig will not have the ability to create the social graph (data). I have not looked into this closely enough – you would think that the Data Server component listed on the Shindig website would allow us to at least implement that functionality if it is not already there. However, I need to find out more about this. Since this missing link is a primary motive for the SocialSite project, it is hard to imagine how this point could be misunderstood by Dave & Jamey. What is very clear is that Shindig is in its very early stages.
Making your Web Site a Social Site
Dave and Jamey continued with discussing how to turn your web site into a social one.
One step beyond this could be the use of white label (hosted) social networking services like Ning, Apppod and KickApps, but that still has your data with someone else.
If you find that a problem, you could leverage Apache Shindig, if and when available, to build your own Social Site server infrastructure.
However, Dave and Jamey suggested that this probably will still leave some things to be desired and proposed an alternative approach: Project SocialSite (see https://socialsite.dev.java.net/ ). " The SocialSite project is delivering social networking functionality by
adding social networking platform support based on the OpenSocialTM
standard to any community site. Any social application written for the
OpenSocial based social network can be seamlessly and easily hosted on
a transformed community site that is powered by the SocialSite project."
SocialSite provides the server infrastructure to host a Social Site, implementing the OpenSocial APIs. SocialSite comes with a bunch of jMaki widgets that can be used to very quickly – mutually coordinated – gadgets exposing ‘social features’ to your website. SocialSite comes with a database for storing the Social graph data.
The demo was pretty smooth. In September we may expect a beta release with a ‘production’ release expected for October. What exactly the status of Project SocialSite is or will be, was unclear to me. It is part of the GlassFish area of dev.java.net – but what exactly it is part of, I do not yet know. And why it could not build on top of Shindig did also not become entirely clear. But it most certainly looks interesting.
See the blog article http://rollerweblogger.org/roller/entry/project_socialsite by one of the presenters, Dave Johnson, on this presentation.
Here is the project website at Java.Net: https://socialsite.dev.java.net/
The homepage for the OpenSocial (API): http://code.google.com/apis/opensocial/
Some very interesting examples of sites and gadgets created using the OpenSocial API: http://opensocial-examples.googlemashups.com/
- JavaOne 2008: OpenSSO – creating federated relationships for secure SaaS, Social Networking and Web 2.0
- JavaOne 2008 day -1: GlassFish un-conference
- JavaOne 2008 kicks off with CommunityOne
- How to lookup information based on IP address – e.g. for Website-visitors
- AJAX Tag Library – Open Source project for easy use of AJAX mechanisms from JSPs