Friend Connect and OpenSocial


Google Friend Connect - 
Awaken and Strengthen Any Website's Community


Our experiences on the web become richer and more useful when we can interact with people who share our interests.  Google Friend Connect is a service that lets webmasters easily add social features to their sites, whether it's a members gadget that lets people join the site, a comments gadget to facilitate dialog or a collaborative music playlist.

Any website can be a social community
Finding information online is easy, but connecting with others looking for the same thing and sharing our knowledge with new people, in context, can be more difficult.  Google Friend Connect lets any website instantly awaken and strengthen its community with just a simple snippet of code. Site owners only need to copy and paste the code into their site's HTML to integrate a members gadget that lets visitors join the site, see profiles of other members, and discover new like-minded friends.


Engagement without development
With Friend Connect, site owners can easily encourage members to engage more deeply with one another and with content on the site by adding social gadgets from the Friend Connect Features Gallery.  This gallery includes a wide range of social gadgets, such as commenting tools, polls, and more, which can be installed in a matter of seconds.  Any third-party developer can build a gadget for Friend Connect using OpenSocial, and developers can now submit their applications to be included in the Features Gallery.




Built on open standards
Friend Connect supports OpenSocial applications as well as other open standards, like OpenID and OAuth.  This means that users can sign join a site through Friend Connect using their Google, Yahoo, AOL, Netlog, or OpenID credentials, and invite friends from Google Talk, Twitter, Plaxo, and more.   Any social network or service can join this open eco-system by implementing these standards. 




http://www.google.com/friendconnect









An Introduction to OpenSocial version 0.9

OpenSocial helps people do more things with the people they know anywhere on the web by providing developers with a rich, flexible platform for building social applications that can run on many sites. OpenSocial v0.9, the newest version of the specification, aims to make application development, testing, and deployment easier and faster, while reducing the learning curve for new app developers.

Here is an overview of the new features in OpenSocial v0.9:


Lightweight JavaScript APIs
OpenSocial v0.9's new lightweight JavaScript API has all the power, flexibility, and granularity of the old JavaScript API, while reducing the amount of code necessary to access social data.

How streamlined is the new JavaScript API?  With OpenSocial v0.8, this is how an application requests information about the user viewing a webpage:

var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), "req");
req.send(callback);

Here is the same request in version 0.9:

osapi.people.getViewer().execute(callback);

Proxied Content

Previous versions of OpenSocial allowed developers to build AJAX applications that run primarily on social networking sites.  However, this reliance on JavaScript left many developers' server-side web programming skills under-utilized.
Proxied Content lets server-side developers specify a URL for each view (e.g. profile, canvas) of their application rather than inlining JavaScript and HTML.  When the app requests a view, the container will call the URL (or fetch the data from cache) and render the HTML returned directly from the application server.

This small code change has several advantages:
  • Converting existing web applications into OpenSocial apps requires fewer steps
  • Containers can sanitize content before rendering to protect against phishing and XSS attacks.
  • Fewer roundtrips means lower latency, especially when combined with data pipelining

Data Pipelining

The first time an OpenSocial application loads, it often retrieves social data from the container using a DataRequest and then sends that data to remote servers using a makeRequest.  This requires many steps, and because the container must load the app's IFrame before the app can begin making requests, the end user may be left staring at a 'Loading...' message for longer than necessary.


Data pipelining lets developers specify what social data their application will need in advance. The container can then include that data in the app's IFrame, which makes it immediately available and reduces latency for the end user. 
Before data pipelining:

With data pipelining:

Templates and OpenSocial Markup Language 

OpenSocial Templates give developers a straightforward approach to creating data-driven interfaces for apps while separating markup language from programming logic. Templates make code cleaner, more reusable, and much easier to maintain than using JavaScript to manipulate the DOM. 

OpenSocial Markup Language is a series of special tags within Templates that perform common tasks (such as displaying a user's profile image or a dialog for selecting friends from a list).  Developers can customize OSML for their containers with extension tags or create custom tags that can be used in their own applications.

Also new in OpenSocial: The OpenSocial Directory

Today, social app developers must submit their applications on each OpenSocial container individually to take full advantage of OpenSocial's wide distribution. Likewise, it's difficult for new containers to tap into OpenSocial's large developer base and find great apps for their sites. 

The OpenSocial Directory is a centralized location for developers and containers to submit, review, and share OpenSocial applications. In the initial release, we've included applications that are live on several popular OpenSocial sites, like MySpace, orkut, and hi5.  Going forward, we plan to include approved apps from more containers and allow developers to submit their own apps. 

For news and updates about OpenSocial, please visit blog.opensocial.org.