# OpenSocial

OpenSocial ist eine Sammlung an Programmierschnittstellen für Anwendungen in webbasierten sozialen Netzwerken. OpenSocial wird von Google entwickelt und wurde am 1. November 2007 veröffentlicht.
Anwendungen, welche die OpenSocial-API nutzen, sind mit jedem anderen sozialen Netzwerk interoperabel, welches dieses auch unterstützt. So können Funktionen von Seiten wie etwa Myspace und Friendster miteinander verknüpft werden. Zum Start von OpenSocial waren in Deutschland lediglich das Business Netzwerk XING und der Einladungs- und Ticketservice amiando dabei.
Ab Dezember 2009 wurde die OpenSocial-API auch von den inzwischen geschlossenen Netzwerken StudiVZ, SchülerVZ und MeinVZ unterstützt.

## Technik

OpenSocial besteht im Wesentlichen aus zwei Teilen. Zum einen aus der „OpenSocial-API“, die Schnittstellen für den einheitlichen Zugriff auf das soziale Netzwerk bereitstellt. Die API selbst, besteht wiederum aus 3 Kernkomponenten.
* Data ermöglicht den Zugriff und Austausch von Personendaten.
* People erlaubt den „Blick“ auf den sozialen Graphen aus „Sicht“ einer Person. Somit lassen sich zum Beispiel personenspezifische Beziehungen (sog. Relationships) abfragen.
* Activities für die textbasierte Kommunikation zwischen Personen
Zum anderen besteht OpenSocial aus den sogenannten „OpenSocial Gadgets“, die mittels der OpenSocial-API Inhalte aus dem sozialen Netzwerk beziehen und beschreiben, wie diese vom Webbrowser darzustellen und zu verwalten sind. Technologisch betrachtet basieren OpenSocial Gadgets auf den Google Gadgets und erweitern diese um nicht-proprietäre Schnittstellen für den Zugriff auf die OpenSocial-API mittels JavaScript-Funktionen oder das OpenSocial-REST-Protokoll. Prinzipiell bestehen Gadgets aus einem XML-Grundgerüst, welches HTML-Text, JavaScript-Code und eventuelle CSS-Referenzen kapselt.
Beide Komponenten zusammen ermöglichen eine einfachere, einheitliche und interoperable Möglichkeit zur Entwicklung von Anwendungen im Kontext des Social Networking, sogenannter Social-Apps. OpenSocial-Anwendungen sollen deshalb die bisher proprietär entwickelten Lösungen ersetzen.

### OpenSocial-Applikationen

Die Entwicklung von OpenSocial-Applikationen erfolgt mittels offener Standards wie z. B. HTML, XML und JavaScript. Alle OpenSocial-Anwendungen benötigen für ihre Ausführung und Anzeige einen sogenannten Container. Dieser dient den Applikationen dabei als eine Art Laufzeitumgebung, welche die OpenSocial-API integriert. Es werden prinzipiell drei Typen (sogenannte Social Design Patterns) von Applikationen unterschieden.

#### Social Mashups

OpenSocial-Applikationen dieser Art sind äußerst schmal konzipiert und kombinieren lediglich Inhalte und Funktionen anderer Applikationen mittels RSS-Web-Feed oder Ajax. Die Ausführung erfolgt innerhalb des sozialen Netzwerks, wobei kein externer Server als Container notwendig ist. Der Vorteil besteht in der guten Skalierbarkeit bezüglich der Ressourcen, deren eingeschränkte Verfügbarkeit jedoch stets beachtet werden muss. Für die Entwicklung von Social Mashups kann (kombinierbar) HTML, JavaScript, CSS, OpenSocial Templates und Flash genutzt werden.

#### Social Application

Anwendungen dieses Typs können eine sehr umfangreiche Funktionalität zur Verfügung stellen und werden im Gegensatz zu den Social Mashups auf einem externen Server gehostet, der als Container für die Verarbeitung und das Rendering der Daten zuständig ist. Ein solches Server-Projekt wurde von der Apache Software Foundation mit dem Namen Shindig entwickelt und vorangetrieben. Der Nachteil einer solchen Social Application besteht in der schlechten Skalierbarkeit bezüglich der Ressourcen, da bei großer Popularität der Anwendung (nicht zuletzt wegen des Funktionsumfangs) die Kapazitätsgrenzen des Servers schnell erreicht sein können. Realisieren lässt sich eine Social Application durch eine Vielzahl von Möglichkeiten, unter anderem HTML, JavaScript, CSS, OpenSocial Templates, Flash, PHP, Python, Java, Perl, .Net-Framework oder Ruby.

#### Social Website / Social Mobile Application

Diese Applikationen werden außerhalb des sozialen Netzwerks ausgeführt. Dennoch tragen beide die Bezeichnung „Social“, da sie Daten aus sozialen Netzwerken mittels der OpenSocial-API über die REST- oder RPC-API beziehen. Der Nutzer erteilt dazu mittels OAuth direkt den Zugriff auf seine Daten.

### OpenSocial REST-Protokoll

Das OpenSocial REST-Protokoll wurde für die Kommunikation zwischen Servern konzipiert und ermöglicht den Austausch von Personendaten, Beziehungsinformationen und Aktivitäten zwischen OpenSocial-Hosts oder Containern. Ein Beispiel hierfür sind OpenSocial-Anwendungen die nicht mehr nur als Gadgets ausgeführt, sondern serverseitig erzeugt werden und z. B. mittels JSP oder ASP über das REST-Protokoll auf Daten eines OpenSocial-Containers zugreifen. Somit lassen sich auf eine Person, inhaltlich „maßgeschneiderte“ Applikationen realisieren. Weiterhin profitieren Entwickler von einer Vielzahl bereits vorhandener Client-Utility-Bibliotheken der gängigsten serverseitigen Sprachen wie z. B. Java, PHP oder Ruby, die durch die REST-API zur Verfügung gestellt werden.

## Geschichte
### Entwicklung

Berichten zufolge steht hinter OpenSocial der Webentwickler Brad Fitzpatrick, der Gründer von LiveJournal. Nachdem er im Jahr 2005 die Firma Danga Interactive, welche LiveJournal betreibt, Six Apart verkaufte, entwickelte Fitzpatrick OpenID. Im Jahr 2007 verließ Fitzpatrick Six Apart, um weiter an der Integration sozialer Netzwerke für Google zu arbeiten.
Gerüchteweise ist OpenSocial ein Teil eines größeren Projekts Googles zum Thema soziale Netzwerke namens „Makamaka“, was hawaiisch „enger Freund mit dem man im freien Austausch steht“ bedeutet.
Seit 1. Januar 2015 wird Opensocial in einer W3C-Arbeitsgruppe weiter entwickelt.

### Implementierungen

2015 existierten über 20 Container, die OpenSocial integrieren. Neben Vertretern wie MySpace, StudiVZ oder XING für Nutzer, existierten auch einige Container speziell für Entwickler und deren Bedürfnisse.

### Hintergrund

OpenSocial wird als eine plattformunabhängige Alternative zu Facebook genannt.
Nachdem Facebook im Mai 2007 begann, Schnittstellen zu veröffentlichen und zu erlauben, dass Dritte Anwendungen für Facebook schreiben, wurde Facebook als Herausforderer von Google angesehen, ein universelles „Web-Betriebssystem“ zu etablieren.