Sockethub - a polyglot approach to social messaging --------------------------------------------------- Position paper for the W3C Workshop on Social Standards, August 7-8th, SF, CA, USA By: Nick Jennings Date: July 8th, 2013 Introduction ------------ As the major social network vendors increase their customer lock-in, and the open social web platform alternatives continue to be dispersed and re-invent the wheel, we're faced with many different, mostly non-interoperable platforms, protocols and APIs to choose from. Developers must spend their time picking and choosing protocols and APIs to integrate into their applications, banking on the increased lock-in of their chosen platforms to ensure the applications’ relevance and longevity. Open-source application developers, are either limited by what they can realize completely in the browser, or faced with tying their application to backend servers to carry out parts of the functionality, or store user data. As users, we find ourselves losing our autonomous internet identity. In order to interact with our friends, we are forced to choose middleman platforms to sign up with, signing away our rights and fragmenting our user data. In addition, the bright future of HTML5 web applications has been mired by the prospect of being forever tied to their vendors’ proprietary back-end. This restricts their usage and their longevity. If a company goes out of business, the app you purchased can no longer be used because the servers that store the data and provide the back-end logic will no longer be running. Likewise, if the company changes its business plan, they may decide to no longer offer the app, even if you’ve paid for it. Imagine a world where your web applications are independent and not on rental. Backend services are generalized and you have the option of choosing where your app can tie-in to make use of server resources. Your user data, and app functionality live on, beyond any one vendor’s control. Sockethub aims to solve one piece of that puzzle, by implementing a polyglot server that can speak all of the various protocols and APIs of the web today. Exposing a single abstracted interface to application developers, this open platform can be run on any server, and provides social and other interactive messaging functionality to the application. Adding one more building block to the goal of server-independent, server-side functionality, Sockethub can help to free our web applications from vendor lock-in. Mission & Goals --------------- In the same way user storage can be put in control of the user, so can other commonly used services - such as messaging (sending messages, whether it be an email, twitter post, comment, or activity stream) that abstracts the various APIs away from the client-side application. Instead of picking and choosing the various protocols and APIs an application will support, developers can design their applications independent of any one protocol. In this way Sockethub can provide a generic messaging service which paints application development in a different light. The end result are web applications built on top of pluggable service back-ends that the user of the app defines. This gives the application more autonomy and potential longevity (able to function and be deployed on any server, and linked to open-source and standard backend services). Developers can begin to write apps for the future, with no monolithic dependencies tying everything to one server, or set of servers. Users can begin to expect more autonomy in their choice of applications and interfacing with other services on the web. Status of the project --------------------- Sockethub has been around for 6 months now, and it is essentially a polyglot messaging service. It uses WebSockets to send & receive simple JSON objects (which are loosely based on ActivityStreams, plans to conform to AS2.0) which define messages. By specifying the 'platform' in the JSON object, developers can integrate with Facebook, Twitter, Email, XMPP and more, using the same object structure. The idea being, developers can write their apps with generic messages represented as JSON objects, and as platforms come and go, the application does not need to change it's protocol or API support constantly. Links ----- [1] http://sockethub.org [2] https://github.com/sockethub/sockethub [3] https://github.com/sockethub/sockethub/blob/master/doc/architecture_overview.md [4] https://github.com/silverbucket/sockethub-presentation