Enterprise
OpenSocial White paper
Introduction
Enterprises are collections of people, and thus
inherently social. Employees of any organization benefit from
social connections, group affiliations and relationships both
within their own business and between other businesses. As a
result, social networking capabilities have become increasingly
popular in business-to-consumer, business-to-business, and internal
enterprise collaboration applications. New technologies and
standards such as Web 2.0 and OpenSocial [1] are helping software
providers better model relationships between people, allowing
end-users to benefit from such relationships in day-to-day business
processes within their own enterprise, and across business
networks.
OpenSocial emerged from the demands of
consumer-facing social networking sites, including MySpace,
LinkedIn, and Ning. Well before the
specification was complete, those sites went live with OpenSocial
implementations, proving that OpenSocial is ready for both Internet
scale web communities and enterprise applications.
The rise of online social networking, and the
changing nature of the consumer web, have both made OpenSocial
increasingly relevant to business and enterprises. Beyond social
capabilities for accessing and sharing user profile, relationship
and activity data, OpenSocial can also be used as a general purpose
web application integration technology, providing open standards
for browser-based components known as Gadgets.
This paper discusses general
requirements for enterprise social systems and describes how
OpenSocial can be used by enterprises today to address them.
Not all requirements are met today, however, so the
paper also outlines the current gaps
and discusses how the specification might evolve to meet
them. Naturally, no paper that focuses on
working transparently in an open community would be complete
without a call to action.
The paper concludes with an
introduction to the companies driving enterprise requirements for
OpenSocial, provide guidance to resources to learn more and
encourages you, the reader, to become actively involved.
Who should read this
document?
This document is intended for IT professionals, development
managers, and Chief Technology Officers (CTOs) who are leading
organizational changes through social computing by embracing
standards and Web 2.0 approaches.
A brief
history of OpenSocial
Before diving into how OpenSocial can benefit the enterprise, it
is helpful first to understand OpenSocial's history, especially the
evolution from its Social Networking Site (SNS) roots into a
broader platform for social interaction and application
interoperability. As social networking became more popular, there
was increasing pressure on these sites to add differentiated
capabilities and attract more users. A business model was also
emerging where vendors wanted to offer their services into these
social networks. Before OpenSocial, the notion of deploying an
application into a social network was strictly a proprietary
exercise. What's worse, if they had applications for each platform,
they had to maintain them, account for programming model
dissimilarities, translate each one, and so on.
OpenSocial provided a solution to these problems by serving as
an open, community-driven, set of specifications that standardized
the construction and deployment of social applications. It provided
a common programming and deployment model for Web 2.0 user
interface components, for accessing social graphs, and for working
with activities. Applications built to the OpenSocial specification
could be deployed into any social network that complied with the
specification.
In November of 2007, OpenSocial was launched. Independent
developers finally had a framework they could use to build
applications that would run in any OpenSocial compliant site.
OpenSocial was
quickly adopted by many traditional social network sites including
MySpace, Orkut, hi5, and Ning. The population of end-users - the
people running OpenSocial applications on various OpenSocial
container sites - began to grow exponentially. In addition to a
strong upsurge in the overall population of end-users, the
OpenSocial global developer community also blossomed and quickly
provided numerous new applications for these new OpenSocial
containers to plug into their sites. The benefit to the community
of social network providers was immediate - they now had a vast
pool of OpenSocial developers from which to draw from in
order to enhance their application offerings. Similarly, developers
benefited by being able to deploy their applications to a variety
of social network, and not just one targeted specifically.
As OpenSocial continued its fast paced growth in the first year, so
did its evolution. In the early days of OpenSocial, its primary
focus was consumer social networks. In mid 2008 however, an
architectural enhancement known as the "REST APIs" was introduced
in version 0.8 of the OpenSocial specification.
[2] The REST
APIs
[3] provided a programmatic mechanism for integrating
back end systems, a common requirement within enterprises. In 2009,
as version 0.9
[4] was released, OpenSocial's overall end user
population had reportedly reached approximately 800 milion. This
number is based on the self reported end user populations of
containers that now support OpenSocial.
[5]
OpenSocial
Architectural Concepts
Broadly speaking, OpenSocial defines two concepts. The first is
gadgets, a component model based upon HTML, Cascading
Style Sheets (CSS), and JavaScriptTM, that describes how content gets managed and
rendered inside a Web browser. If you use sites like iGoogle, then
you are already familiar with gadgets. The second is a set of APIs
for accessing and working with social data. These APIs define how
you access information about a person, their relationships, and
their activities. These APIs are made available for use in gadgets,
via a set of JavaScript APIs, as well as programmatically via
REST. OpenSocial applications can take the form of gadgets
that can be embedded into any container that supports the
OpenSocial specification or traditional SOA services for
integration. Taken together, the gadget component model, social
APIs, and REST interfaces, provide a programming model that enables
the creation of standards-based social applications.
OpenSocial
Gadgets
Briefly, gadgets are small, pluggable
"mini-applications" that are extremely easy to install in any Web
page. In one form or another, the concept of gadgets has been
around for some time. Portlets, as an example, have been part of
the JEE programming model [6] for several years. In the Web
2.0 space, the OpenAjax Alliance has a component called a widget
that is similar to OpenSocial's gadgets.
One of the most attractive qualities of gadgets is that they are a
lightweight pluggable Web application components which are
extremely easy to develop and can be employed in a multitude of
ways. However, OpenSocial gadgets lend themselves extremely well to
the social nature of the Web. It is very easy to share these
applications via gadgets among connected people. Additionally, the
OpenSocial specification defines basic lifecycle events that allow
the provider of the gadget to understand and track how their
application is moving among people.
OpenSocial
gadgets are sometimes confused with Google Gadgets. This is due, in
part to the term "gadgets", but also because they have a shared
history. Google Gadgets have been in use
by Google for several years, beginning with iGoogle. Because they
were easy to build and
deploy, Google Gadgets became widespread with thousands of third
party authored applications quickly becoming available for install.
With the launch of OpenSocial, Google donated the entire gadget
technology to the community and a reference implementation to open
source. The community naturally evolved Google's original
contribution into what is now OpenSocial gadgets and added social
APIs. [7] The
combination of these social APIs and pluggable gadget architecture
is what has led to the widespread adoption of OpenSocial technology
in social networks around the world.
The core
social APIs
One of OpenSocial's key
goal is to enhance communication among people that are connected
via a "social graph". In the traditional sense, a social graph
merely consists of the "friend" connections that people already
have. In an enterprise this could be people working on projects
together or who have dependencies on one another to achieve certain
goals or accomplish tasks. For example, application
developers need to work with database administrators (DBA) and
systems programmers to get things done. A developer cannot
often promote an application change until the DBA has made database
changes or the sys prog has made system or policy changes. Or
alternatively, the developer can make changes without talking to
the DBA that can have negative system impacts that are only
discovered over time. The patterns of
collaboration codified in the OpenSocial specification greatly
enhance communication within the connected social
graph. The DBA's and application developer's tasks can
be achieved more efficiently and in a timely manner
via
collaboration built into the application. The social graph in this instance offers
specifics benefits to the business by mitigating potential
performance impacts to the system.
A simple example, in a
business context, might be a managemer/employee relationship. Such
business relationships (unlike the non-business types) could be
1-to-many and many such relationships are also asymmetrical
(A could be the manager of employee B, however, the
reverse is not true).
Figure 1: OpenSocial's Core APIs
Architecturally,
OpenSocial enables this social graph by providing a set of social
APIs that enable communication between people in three core
areas:
- People -
allows for the retrieval of connected people from a specific
person's point of view. For example this allows you to fetch a list
of friends (connected people) of a specific
person.
- Activities - allows for the passing of small messages to
connected people. A common example is a status
update.
- Data -
is a multipurpose data API that allows for the sharing of data
between connected people.
Although relatively simple, these three APIs for
social communications can be utilized in a wide variety of powerful
ways - both in traditional social networking sites as well as in an
enterprise's business contexts (see references for more detailed
information on the APIs). The specification chose to be agnostic to
the "kinds" of relationships. Additional semantics are left to the
discretion of the implementor. This decision allows the industry to
define these relationship types independent of the specification.
Therefore, the OpenSocial programming model is just as applicable
when accessing doctor/patient relationships as it is accessing
those between manager/employee.
The REST
APIs
As OpenSocial began to be widely deployed in consumer facing social
networks, several new use cases emerged - the need to leverage and
share the social data in other web sites, for example. A second use
case involved incorporate existing services that provided social
data through similar, albeit proprietary, APIs. Finally, supporting
back-end business processes, automation, and management required a
programmatic way to access this information systematically and
declaratively, by using standard integration practices such as Web
services. To address these scenarios, OpenSocial introduced a
set of RESTful services, which are referred to as the "REST APIs"
or more precisely, the OpenSocial REST protocol.
This new protocol was created to allow server-to-server
communication of social data between different OpenSocial hosts or
containers. This meant that OpenSocial applications no longer had
to specifically run as gadgets, but instead could be created from
any server-side Web technologies such as JavaTM, Ruby,
Python, and so on. The primary benefit to the enterprise is more
flexibility to leverage their existing server-side infrastructure
to build and deploy standards-based social applications. For
example an OpenSocial application can now be built following the
best practices defined by Service Oriented Architectures, and
implemented with existing JEE technology, including Java Server
Pages (JSP), Java servlets, or other server-side technologies. The
server-side technology simply uses the REST protocol to communicate
with the OpenSocial container to fetch people data, to post
activities, and to perform other OpenSocial functions.
Another positive outcome of the investment in REST APIs within
OpenSocial was a series of client libraries created and released as
open source software. These utility libraries, which were published
in most major server-side languages, including Java, PHP, Ruby, and
Python, greatly simplified the process by which a developer could
communicate with an OpenSocial container. The REST API also enabled
access from mobile devices such Android
[8] based smart phones. For
secured communications to the server, OAuth, the dominant open
source technology/specification for providing secure access to
protected data on the Web, was integrated into the utility
libraries.
OpenSocial
in the Enterprise
Most enterprises host a
heterogeneous mix of software from a wide variety of vendors,
often pieced together to form working
solutions. Even though many leverage
standardized portal technologies, "on the glass" aggregation of
content from multiple, disparate sources remains largely a
programmatic task. Complicating matters is the fact that although
many of the same concepts are represented, each product has its own
unique API. Because of this,
cross-vendor portfolio integration is
difficult at best, and at worst, nearly
impossible. Irrespective of how they're developed, almost all enterprises
are trying to achieve the following
goals:
- Aggregation: the ability to pull in content from other
systems and applications.
- Customization: the ability to manage and control how
information is generally organized and
displayed.
- Personalization: the ability for the displayed content
and applications to be further customized based on the user's
personal profile and preferences, role and security privileges and
other factors.
Web 2.0
technologies have become popular in part because they focus on
simple access patterns to get data (REST), and because they
leverage easily accessible infrastructures to do so (HTTP and
JavaScript). The value of Web 2.0 is that it provides a set of
highly accessible components at a very low cost of entry that are
deployable within existing infrastructures.
As a result, this space has been evolving rapidly. Even as recent
as 2007, there were over eight different Web 2.0 component models
that could be used to build Web 2.0
applications.
OpenSocial's widespread adoption on the
internet has led many enterprises to realize that the same
programming model that is used to reach their customers, can also
be used to integrate applications across key business partners and
within their own organizations. As a result, OpenSocial is emerging
as the dominant, vendor-neutral programming model for collaborative
applications for internal and external audiences.
Why is OpenSocial Relevant to
the enterprise?
Although OpenSocial has primarily targeted consumer social
networks like Ning and MySpace, it holds great promise for
accelerating social application development behind the firewall.
Most on-premise enterprise systems lack support for the types of
human-to-human connections — friending or following, activity
feeds, gadgets, and component exchange — that most popular modern
consumer web applications routinely demonstrate. Those that do
offer this capability had to create their own APIs and programming
model because at the time of their development OpenSocial did not
exist.
As OpenSocial is adopted by enterprise software vendors and
incorporated in to their product offerings, it will accelerate the
development of social features within individual
enterprise applications, and improve interoperability of profile,
activity and gadget data between other OpenSocial-compliant
application containers. The alternative — hundreds of individual
applications, each with their own proprietary implementation of
user profiles, activity streams or gadgets — would create more of
an integration headache for businesses and may impede the adoption
of social capabilities as users flounder within the social silos
each separate application maintains.
Beyond the benefits provided through the wide adoption of
OpenSocial amongst enterprise software vendors, OpenSocial itself
offers a number of benefits to enterprise consumers:
- An open specification: OpenSocial is an open standard,
with active contribution by some of the leading consumer and
enterprise software organizations. The collective learning from
each contributor helps advance the OpenSocial
specification.
- Easy for developers: the OpenSocial gadget specification
is a simple specification to work with, relying at the most basic
level on just HTML. It is well documented and used widely.
Developers can benefit from a large ecosystem and build on the work
of other developers, share their experiences openly through a wide
variety of communities and open source projects.
- Designed for reuse: once a developer understands the
specification, they can apply that knowledge to developing for
multiple systems. Plus, thousands of gadgets already exist that can
be instantly added to any OpenSocial-compliant container.
- Minimizes vendor lock-in: OpenSocial minimizes lock-in
to a single vendor by liberating any integration and development
investments based on it. Gadgets written for one
OpenSocial-container can be used in another OpenSocial-compliant
container. Similarly, applications interface with social data
through standards-based methods which allows applications to work
together more easily and improves code portability.
How is
OpenSocial being used today in the enterprise?
Because of OpenSocial's value
as an infrastructure that provides social capabilities and improves
interoperability through a "gadget" standard, to date it is mostly
being used by enterprise software companies as a way to extend
their products, add new social capabilities, and improve
interoperability between their own portfolios and the portfolios of
other enterprise technology companies. However, enterprises
themselves are beginning to work with the standard to build bespoke
applications — social intranets, portals, dashboards — in advance
of commercial offerings, or because they prefer to build it
themselves. A few examples are provided below:
- Alfresco®: the open source alternative to Enterprise
Content Management (ECM), Alfresco has developed a document-centric
collaboration solution called "Alfresco Share", that exposes its
functionality as OpenSocial gadgets that can be aggregated into
enterprise portals and other OpenSocial containers such as those
offered by Atlassian, eXo, Google and others
- Atlassian, Inc.: makers of the popular bug-tracker,
JIRA, enterprise wiki, Confluence, and a range of tools for
developers and development teams, Atlassian is using OpenSocial
gadgets as a method of integration between its own products, and
other OpenSocial-compliant containers, including ones on the
Internet, like Gmail and iGoogle. JIRA and Confluence are both
OpenSocial gadget containers and producers, and several other
Atlassian products are gadget producers. The company offers
demonstrations of its work with OpenSocial at http://www.atlassian.com/opensocial.
- Cisco:Cisco Pulse™ delivers a
powerful new way to harness the collective expertise of your
workforce, making it quick and easy for employees to find the
people and information they need to get their work done.
Cisco Pulse is using OpenSocial gadgets/API as a method of
integration for applications within enterprise by taking advantage
of standards-based OpenSocial Web Services APIs.
- eXo Platform: eXo Platform's eXo Portal product is an
OpenSocial gadget container, allowing its customers to add gadgets
from external directories, like iGoogle, or from other enterprise
products publishing OpenSocial gadgets, like Atlassian's JIRA.
- Google: Google is increasingly using OpenSocial in its
offerings and products, e.g., Gmail, so the specification will
benefit from Google innovation and ingenuity. As Google looks for
ways to evolve it to benefit large-scale, consumer applications
like Gmail, iGoogle, or Google Wave, the specification itself will
evolve. This will have downstream impact on enterprise systems
using OpenSocial, whether it's a bug tracker or an on-demand CRM
tool.
- IBM®: the company has been successfully
innovating for years now in the area of browser-based component
models, mashup tools and social APIs for the IBM Mashup Center and
Lotus® Connections products. IBM is enthusiastic about
OpenSocial, tracking it closely and actively working with the
community to evolve the specification to help meet our customer's
enterprise requirements, and to interoperate with IBM iWidgets and
OpenAjax Alliance technologies. IBM Rational® is working to
enable use of OpenSocial gadgets in it's Jazz-based software
development and Application Lifecycle Management products during
2010. You can track progress on this effort at http://jazz.net. In addition, IBM's Lotuslive
offering already makes use of OpenSocial. Several internal
integrations use it and the Lotuslive team is actively working with
partners to allow them to extend the Lotuslive platform using
OpenSocial.
- SAP®: Enabling 'best run' business processes is SAP's core
expertise. SAP is working in-house and with our
ecosystem to provide state-of-the-art technology that social
enables our customer's businesses, and their business
networks. 12sprints, one such system
from SAP, is a real-time decision making tool with collaborative
features that brings the right people together with the right
information, and provides pre-defined interactive decision making
tools to rapidly drive their business forward. The OpenSocial
JavaScript and REST APIs provide a framework for the 12sprints
APIs, both for building new decision-making tools and for
communicating with the 12sprints container. The SAP Social Network
Analyzer (SNA) is another component in SAP's social
composite. SAP’s approach is to work with the OpenSocial
standard and the OpenSocial community to better align our solutions
with both API specifications, provide concrete feedback to the
community on enterprise requirements, and contribute to the further
innovation of the specification.
- SocialText: the most recent version of SocialText's
popular collaboration platform supports OpenSocial gadgets.
SocialText used the Gadget container as the basis for their
Dashboard module, which lets individuals personalize and
administrators customize a tailored interface for collaborative
work.
Keep in mind that this list represents just a sampling of
enterprise companies who are now in a position to go public with
their efforts to date with OpenSocial. There are definitely other
enterprise companies currently working and prototyping new
technologies with OpenSocial that are yet unnanounced.
Enterprise
Considerations
To date, enterprise considerations for OpenSocial have been driven
largely by enterprise software vendors interested in or already
using OpenSocial. Discussion initiated at the Google IO conference
in 2009 with representatives from Atlassian, eXo platform, IBM,
SAP, Oracle, and SalesForce.com. Since then the discussions have
expanded to include CubeTreeTM, Lockheed, SocialText,
Cisco, and Alfresco, and it is a collective hope the group will
grow.
Applying OpenSocial within the enterprise introduces variations to
the original requirements and different use cases than those
anticipated by the original authors of the specification. Below
we'll cover familiar enterprise considerations in the areas of
manageability, interoperability, portability, security and tooling.
We'll also discuss a new use cases that needs improved support in
OpenSocial - group collaboration - describing each one briefly and
exploring how the OpenSocial specifications may evolve, or how
vendors might develop specific products and services, to address
them.
Manageability
It is becoming more commonplace for users to be able to "mash up"
content from services outside the direct control of the enterprise.
Today, much of this content is isolated — each gadget represents a
unique, distinct application. However, enterprise mashups have the
requirement for a much more rich integration between the gadgets
within the browser.
This has broad implications for management strategies. For example,
managing the performance characteristics of an application can be
easier when all of the content is delivered from a single source
because understanding the volume and usage patterns can be
determined by instrumenting and monitoring the applications. In the
Web 2.0 space, there are no defined manageability metrics or APIs
that can be implemented to enable effective end-to-end problem
diagnosis. For example, how would a container report management
information back to the providers of gadgets? If there was a
standard mechanism to do this, what information is most relevant
and important?
Another example is the protection of an enterprise's content. One
of the most valuable asset of an enterprise is its data, which
takes many forms and is governed by corporate policies and, in many
instances, by governmental regulations. There are serious
consequences when these policies, rules, and laws are violated.
Enterprise software vendors who offer OpenSocial implementations
must have mechanisms for monitoring and logging all content changes
and interactions, decommissioning users, auditing, flagging
violations and, in some cases, removing any offensive content.
Being able to reconstruct an audit trail is often a key compliance
criterion required to achieve certification from government
agencies.
Achieving this level of management in a world of highly
distributed, dynamically aggregated, situational applications is a
complex and difficult problem. OpenSocial has defined lifecycle
events for social gadgets. Using these, implementors can request
the container report when and why an application is added and
removed. However, support for gadget lifecycle is not consistent
across containers and the initial design points for these events
were not based on enterprise management use cases.
As OpenSocial evolves, strategies for enterprise management will
emerge and will be included as part of the specification. These
strategies must work seamlessly with existing management
infrastructure that enterprises have deployed. Since enterprises
use a variety of tools and techniques to monitor and manage their
web applications vendors that offer OpenSocial implementations
should design, test, and certify that their offerings work with
those tools and techniques.
Interoperability
Enterprises have been working on strategies to aggregate content
from a number of disparate sources for some time which has resulted
in a variety of browser based component models. Many of these
components are "home grown" or "one off" solutions. Others are part
of an integration and extension strategy provided by enterprise
vendors (e.g., IBM's iWidgets). The current state of the art in
enterprise web application development often involves highly
interactive browser-based user interfaces that are often composed
of components that interoperate via eventing. The proliferation of
different kinds of browser components makes it very difficult to
build this kind of interactive mashup where the components share
information with each other in a secure manner.
Several years ago, OpenAjax Alliance (OAA)
[9] was started to help address the issue of
interoperability between gadget models. One key piece of technology
that has been developed is the OAA Hub
[10], which is a set of
JavaScript that provides secure communication across AJAX libraries
and components on the same page. Recently, the enterprise
OpenSocial community has begun to work directly with the OpenAjax
community to integrate their Hub technology (see Security section).
From a specification standpoint, this work is targeted for the
first release after 1.0, but we expect code and prototypes to be
available via open source so this can be used by early
adopters.
By focusing on interoperability and working to ensure components
running inside the browser can securely communicate with each
other, enterprises can effectively manage the rate and pace of
adoption of new technologies. This allows enterprises to control
costs by balancing investments in existing strategies and adopting
new technologies based upon business need.
Portability
One of the primary motivations for the creation of OpenSocial
was the "write once deploy anywhere" approach for social
applications. One of the promises of OpenSocial gadgets is to have
consistent Web 2.0 deployment model. While significant steps have
been made as the specification evolved, we're not quite there yet.
It remains difficult for a gadget of any complexity to simply be
deployed across multiple sites primarily because of subtle
discrepancies between containers.
The OpenSocial community has begun to address these issues in
the 1.0 version of the specification. In addition to clean up and
clarification of many of the APIs and data models, a new compliance
model has been introduced. This will make it easier for sites
providing OpenSocial capability to declare exactly what they
support. Likewise, it will be easier for developers to target a
specific set of functionality. Mechanisms have also been put in
place to allow the gadget to declare a minimal set of capabilities
of the container as defined by the specification
version.
As OpenSocial starts to become an integral part of integration
and collaboration strategy between enterprises it is imperative to
achieve consistent behavior across implementations. We look to
further improve interoperability by increasing the coverage of test
suites and test gadgets, providing more "sandboxes" for testing,
and continuing to refine and mature the OpenSocial
specification.
Security
Like portability, security is not an enterprise-only issue but
there are some enterprise specific considerations in this
area. Security issues common to web applications such as
malicious code and cross-site attacks take on special significance
because of the sheer quantity, legal protection required, and
sensitive nature of enterprise data. As the OpenSocial
specification begins to take into account interoperability between
component models such as iWidgets, and provide gadget-to-gadget
communication via eventing, security will take on new heightened
meaning since gadgets become more pervasive targets for malicious
code or cross-site attacks.
Malicious
Code/ Cross-site attacks
Malicious code or cross-site attacks can lead to an attacker
stealing user sessions, user ID's and passwords, credit card
information or other personal information. If a web-site
doesn't check for this kind of malicious code via certain
mechanisms then personal data will be compromised. One such
way to handle these kinds of attacks is to provide a logical
sandbox model of security that isolates gadgets on a
page.
As an example, IBM’s mashup technology ensures enterprise-level
client-side security via use of the iWidget component model and
tunneling through iFrames between main window events and the
widgets on a page. Communication then between widgets happens
through eventing and gets processed through the OpenAjax Alliance
(OAA) Hub runtime component.
The widgets are generated with their own subdomain by a proxy
and are thus isolated from resources such as DOM elements and
cookies. The widget is thus generated in its own iFrame and
because it has its own subdomain it cannot access its parent or
other resources. The OAA Hub provides much of the processing
for this security. As mentioned earlier, work is currently
underway for the OpenSocial spec to adopt the open source OAA Hub
to meet these kinds of enterprise level security
requirements.
In addition, allowing users to install and run 3rd party code
within a web application is a security risk. The OpenSocial
specifications and implementations are designed to prevent and
limit the damage that a malicious gadget can do. Additionally, we
expect that enterprise software vendors that offer OpenSocial
implementations will provide ways for an administrator to control
what gadgets are allowed to be installed in an OpenSocial powered
site.
Privacy
Enterprise users have some of the same considerations as typical
social network users when it comes to privacy. Enterprise
users, like regular social network users, are concerned about
access to data they consider off limit to others and want a certain
level of control on the data they share with their network.
Additionally, enterprise social network users also have to consider
corporate policies, rules, and government regulations in this
area.
This is an area where some additional work may be necessary in
the OpenSocial specification. We anticipate that enterprise
software vendors that offer OpenSocial implementations will
differentiate by offering fine-grained privacy controls that comply
with appropirate rules and regulations. However, we are also
contemplating proposed extensions that will attempt to provide a
common means to address: fine-grained user-level access control to
data, limits on what data applications can access on behalf of
users, as well as clear understanding of the extent of propagation
of shared data. Currently using the profile access mechanisms and
the REST API some of this privacy construct can be implemented by
applications and containers. The OpenSocial specification
mechanism and process allows such important concepts to evolve in a
grass root fashion while also be provided via a peer-reviewed,
useful, and meritocratic fashion.
Tooling
Parts of OpenSocial Gadget and application development are covered
by existing tools for HTML, JavaScript, and RESTful service
development, but there are gaps. Some of these gaps can be
addressed by tool vendors who, we anticipate, will build special
tooling to support the needs of OpenSocial developers. Others
should be addressed by extending the OpenSocial specification. To
better understand the tooling needs, let's look at the roles
involved in OpenSocial Gadget and application
development.
- Application Developer — Builds an OpenSocial Gadget
by authoring an OpenSocial Specification file, an XML file that can
contain HTML, CSS, and JavaScript code along with references to
JavaScript libraries and other resources. Also creates backend
services required by the Gadget, a set of RESTful services
protected by OAuth; needs tools to help automate Gadget
development, deployment and debugging.
- Application Deployer — Manages the deployment of an
OpenSocial-enabled solution. This may include deploying the Gadget
Specification file, deploying the RESTful services that the Gadget
requires, registering the Gadget, and managing the OAuth keys that
the Gadget uses to call its services; needs tools to help automate
deployment of both Gadget and services.
- Mashup Assembler — Combines Gadgets, custom-code,
and web services together to create a new application, known as a
mashup, for a specific set of users. This type of developer may
have limited programming knowledge and needs a tool that allows the
visual drag-and-drop of Gadgets from a palette and wiring them
together. This role could either be an IT one but could also
be a line-of-business (LOB) role such as a business
analyst.
- System Administrator — Manages an OpenSocial
enabled web application and the gallery of Gadgets available, may
manage Gadget white/black lists, OAuth keys and may review newly
submitted Gadgets for inclusion.
Enterprise developers typically expect an end-to-end tooling
solution; one that supports Gadget and service development, allows
a developer to press a button to have his OpenSocial Application
automatically deployed and supports debugging. If tools are to
support automatic deployment, then we will need an OpenSocial
extension, an API that supports Gadget deployment and/or
registration. Although there is the start of OpenSocial tooling
available via open source, more work is necessary in this area. At
present, we have not defined any specific proposals for supporting
an end-to-end solution.
Support for Group
Collaboration
Group collaboration, shared spaces and communities are common
concepts in enterprise collaboration software and are also
important in consumer-oriented social networking. The notion of a
group does exist in OpenSocial and it is possible to request a list
of available groups and to request users and activities within a
group or set of groups. However, this does not go far enough for
enterprise applications and we anticipate efforts to improve the
specification in the following ways:
- Group Profiles: Groups have titles, descriptions,
charters, slogans, logos and other properties. The OpenSocial
specifications should be enhanced to support the common properties
that are associated with a group. Groups may also have shared
resources, so it may also make sense for Groups to have Media
Albums just as individuals can.
- Group Gadgets / Preferences: A Group typically has a
homepage or possibly a Shared Dashboard of Gadgets that are
preconfigured by the Group owner to show information that is
relevant to the group. The OpenSocial specifications should be
enhanced to support Group Gadgets.
Predictability
Despite the rapid growth of software as a
service, and cloud offerings, enterprise vendors still deliver
products that will be installed behind the firewall in large data
centers. This kind of delivery model requires longer lead times.
Working backwards into testing and development, code needs to be
"frozen" much earlier in the process. As enterprises consume more
and more open source code to include in their offerings, this code
too, must be released at a stable point. This puts pressure on
OpenSocial to define and provide a stable specification that can be
implemented in a reasonable time frame so that it can be consumed
by "downstream" open source projects and enterprise software
vendors.
OpenSocial has intentionally put in place an
agile development process for the specification. It's modeled after
many open source projects where development consists of short
iterations with a well defined scope. When a new feature is
submitted, it's required to have a working prototype that can
demonstrate the concept and prove that it can be implemented. This
approach has many advantages: it encourages rapid evolution of the
specification, promotes involvement from the entire community, and
promotes shorter cycles between a proposed feature and broadly
available code.
In addition to the specification, many vendors
that are providing OpenSocial support are leveraging open source
code. One popular project is Apache Shindig. This project is a
great starting point and provides much of the plumbing required of
an OpenSocial container. Shindig, like many open source projects,
grew very rapidly in an organic fashion, in part because the entire
social networking space was exploding. The OpenSocial community is
working to provide clarity and consistency in the OpenSocial
specification and we anticipate Shindig and other related projects
will follow suit. For example, OpenSocial 1.0 will provide a
cleaner definition of compliance. Delivering open source code that
matched only the level of compliance you required would lead to
increased consumeability and broader adoption of the project. This
would also lower the barrier of entry for enterprises to allow
their developers to participate in open source
projects.
From an enterprise perspective, we look to
improve this approach by working to achieve more predictable
release cycles of the OpenSocial specification and related open
source projects. There are several successful open source projects
that produce an integrated set of deliverables on regular schedule.
The Eclipse Foundation [11] has for several years, through
efforts such as Ganymede [12] and Galileo [13], coordinated the
"simultaneous release" of multiple projects. This regular delivery
cycle provides a level of predictability that enterprise vendors
need in order to plan their development and release cycles. This
has the added benefit of ensuring that the capabilities defined in
the specification follow an expedient path into the enterprise.
Ultimately, this will grow the development community and vendor
ecosystem, broaden the spectrum of enterprise ready gadgets, and
accelerate the adoption and advancement of OpenSocial.
OpenSocial's Vibrant
Ecosystem
Fundamental to the success of any open platform is an ecosystem
that fosters new ideas and collaboration, works transparently, and
maintains low barriers to entry so that all may participate. The
OpenSocial Foundation [14] established these as core tenets when
the it was chartered. Perhaps there is no better example working
illustration of these beliefs than the OpenSocial Development
Process [15].
Contrary to many specification processes, OpenSocial has placed
an emphasis on a highly agile, community-centric approach. The
focus is encouraging new ideas, building consensus around them, and
finally, demonstrating they can be implemented. In fact, the
creation of a new version of the specification is treated in much
the same way as application development, with a short timeline,
well defined scope, working prototypes, and a full review prior to
publication.
There are, however, some very unique characteristics of the
OpenSocial development process. For example, because it was
important that OpenSocial be developed by a community, all
proposals need to have the support of at least five community
members. To ensure that no one person or company can dominate the
specification and essentially "rubber stamp" their approach, each
proposal must have no negative votes.
The OpenSocial community is also working hard to encourage
continuous integration. While the specification process defines how
to incorporate new capability, there is work underway to refine how
extensions can be incubated. The main goal is to provide a
structure in which new ideas can be worked on collaboratively in an
open transparent manner. This allows the inventors to refine their
ideas, build consensus and validate their implementations, prior to
a new version specification actually being "open" for
submissions.
Finally, as with any specification, it is important to have
accountability to maintain a clean intellectual property record. As
part of the specification process, the OpenSocial Foundation
requires that both individuals and corporations agree to a
contribution licensing agreement, as well as a non-assert
agreement. These documents, when executed by members of the
community, assure companies that implement OpenSocial have the
necessary legal protections, which in turn, makes widespread
adoption of the specification possible.
The OpenSocial
Foundation
Although the original community of
people behind OpenSocial had strong similar vested interests in its
overall success, the continued evolution and adoption necessitated
the formation of a more formal body to hand OpenSocial's continued
growth and evolution. To that end, in late 2008 the OpenSocial
Foundation (OSF) was created.
The new OpenSocial Foundation was chartered with
the mission to "sustain the free and open development of OpenSocial
specifications." (www.opensocial.org) Membership in
the OpenSocial Foundation is on an individual basis and free and
open to everyone. To protect implementers of the specification, the
OSF established a set of governing intellectual property rights
that cover all contributions to the specifications by OpenSocial
members.
Because the OpenSocial
specifications and their associated reference implementations are
defined and driven through open, community-oriented processes, this
ensures no one company, including those that founded OSF, can
control the specification or the implementations. With the ground
work in place, OpenSocial has under gone some very rapid growth.
Today, with the noted exception of Facebook, the majority of social
network providers support the specification. OpenSocial empowers
social application developers by reducing development costs,
enabling rapid development, and expanding the reach of their
technology. Broad industry adoption, a vibrant developer ecosystem,
open governance models, combined with a well defined component
model and a programming model for social constructs, form a solid
foundation to bring enterprise applications to the next level of
community and collaboration through support and adoption of
OpenSocial.
Open Source
Initiatives
Apache Shindig - An OpenSocial Reference
Implementation
Complementing the community that defines the specifications are
several open source projects. The most notable one is Apache
Shindig, which serves as a runnable reference implementation of the
OpenSocial specification. At its core, Apache Shindig is
compromised of several components that enable gadget rendering as
well as people and social data management. Shindig is currently an
incubator project governed under the Apache Software Foundation and
although it serves as a code foundation to numerous commercial
social networking sites, it has its own distinct development
process, membership requirements, and software
licenses.
Today there are currently two primary implementations of
Shindig which are in Java and PHP, and both are judiciously
maintained by its development community. The majority of today’s
commercial social networking sites and commercial products have
successfully used Shindig as the foundation for their offerings,
e.g., hi5, Orkut, Ning, Atlassian, LinkedIn, Netlog, along with
numerous others.
OpenSocial Frameworks
As
Apache Shindig provides the plumbing that enables OpenSocial
implementations, it's arguably still a very low level technology.
In this respect there are several notable projects that build on
top of Shindig and serve as a higher level, more complete social
application example. These include the PHP based Partuza (http://code.google.com/p/partuza)
and the Java-based Apache SocialSite (https://socialsite.dev.java.net),
which is in the process of entering the Apache
Incubator.
OpenSocial Client
Libraries
Another important set of complementary libraries is the
OpenSocial client libraries. It supports the REST protocol and
greatly simplifies the coding required to fully utilize these
protocols. The libraries are currently available in multiple
languages including Java, PHP, Python, Ruby, and Objective-C. They
are hosted at multiple locations for each language and typically
follow the pattern: http://code.google.com/p/opensocial-<language>-client/,
e.g. http://code.google.com/p/opensocial-php-client/,
http://code.google.com/p/opensocial-java-client/
and so on.
OpenSocial Tooling
The
OpenSocial Development Environment (OSDE) is an Eclipse project
created to help developers quickly and easily build and test social
applications. The OSDE includes a form based editor for creating
gadgets and an "individual SNS [Social Network Site]" that is used
for unit testing new gadgets. This tooling includes not only the
ability to create and edit gadgets, but also integrates the Java
client libraries to enable developers to build OpenSocial client
applications. This project represents the first, and so far only,
IDE that tries to create the end-to-end tooling
solution.
Conclusion
As you've no doubt noticed in recent times, the social networking
explosion in the consumer space has radically transformed how
people communicate, and interrelate socially. Since its launch in
2007, OpenSocial has also played a major role in this explosion by
offering a standard set of technologies that are entirely managed
in an open manner by the community that it serves.
In a business context, the social element has always been
fundamental to doing business since the dawn of commerce. As
this paper clearly illustrates, the work of transforming OpenSocial
into an enterprise business compatible technology is an ongoing
process. This paper does however serve as a clear example of how
key companies such as IBM, Atlassian, Cisco, CubeTree, Jive,
Oracle, SAP, SocialText, along with others, are now fully engaged
in this task and now fully utilizing OpenSocial's own processes for
evolving towards a more enterprise business friendly technology.
This speaks to the inherent wisdom of how the OpenSocial process
for continued evolution was created, for it is done entirely in an
open and constructive manner where all parties have a vested
interest in seeing OpenSocial continue to evolve to better serve
their needs. Finally, this paper serves as a call to action for
other enterprise software providers to engage in this dialogue and
continue to help OpenSocial evolve towards an evermore enterprise
business compatible technology.
Credits
This white paper represents a
combined effort from a diverse group of dedicated
individuals.
Contributors, in alphabetical order of company
name:
| Alfresco |
Luis Sala (luis.sala); @alfresco.com
|
| Atlassian |
Mike Halvorson (mhalvorson), Jay Simons (jay);
@atlassian.com |
| Cisco |
Thangam Arumugam (tarumuga); @cisco.com |
| Cubetree |
Navin Budhiraja (navin); @cubetree.com |
| Google |
Chris Schalk (cschalk); @google.com |
| IBM |
Tyrone Grandison (tyroneg), Tracy Hutcheson (tracyhut), David
Johnson (dmjohnso), Michael Maximilien (maxim), Mark Weitzel
(weitzelm); @us.ibm.com |
| SAP |
Laurent Bride (laurent.bride), Robert Horne
(robert.horne); John Mayerhofer (john.mayerhofer), David
Meyer (david.meyer); @sap.com |
| SocialText |
Gabriel Wachob (gabe.wachob);
@socialtext.com
|
|
References