Draft Soc 2008 (rev 2.1), 18/03/2008
* Added support for Service.module
Draft Soc 2008 (rev 2), 18/03/2008
* Added support for OpenSocial SPI
Draft Soc 2008 (rev 1), 18/03/2008
* Formal Draft
Discussion of Ideas
The Emerging Platforms
FaceBook is probably the leading social application available but it only allows application building within its platform and it server side codes has remained unavailable to the open source community. Developers must also host their server side codes while communicating to Facebook via REST API and FBML to render the application view,.
Ning is close in second with more open approach compared to FaceBook by allowing developers to modify the underlying code written on PHP and provides hosting as well. Still most of the server side technology to provide data storage is kept under wraps therefore the code must still reside on the Ning servers for it to work.
OpenSocial is probably the most promising framework being developed but it still a long way to go and currently the efforts being done is focused on client side (the applications) and not much on the server side (the platform implementation to run the application). Right now, Orkut is the only sand box that runs OpenSocial applications and it's less than stable.
Views as Widgets will try to fill this gap for the mean time but the development plan will include the eventual integration with OpenSocial.
Finally, however enticing FaceBook and OpenSocial platform is, not all websites had this API nor has the site owners will always have the ability to build a platform to support them.
What we propose
Most of Drupal's usage is for presentation of content and aggregation. Before we syndicate contents as pure data using RSS/ATOM but with introductions of FaceBook applications, Google Gadgets and the likes has opened the concept of syndicated logic with data. What this means is site owners can now distribute how their data is presented as well as the how users will interact with their data.
Now think of Drupal modules as application; with Views as Widgets we are not just allowing syndication of content (data, including media type contents) but the modules (logic) themselves. In short any of the modules that has views or can be rendered as views will have the ability to be embedded on any site.
Why code embedding and not another platform.
For now we have to keep it simple while providing an easy way via API to extend/transform the widget to support platforms such as FaceBook and Google Gadgets.
We believe this project will live-up to the goal of Drupal to "eliminate the developer" in terms on application syndication.
Why join this project
Aaron made an awesome blog post to explain why this project is probably one of the coolest idea there is. Check out: Drupal will Explode your Site into a Million Pieces, and Why You Want That.
* API for building modules to integrate with existing modules such as Themes/Color, Stats, etc.
* Allows Widget builder modules, developers can create a module that output the widget code for specific social network. Example: FBML Widget for Facebook and XML for Google Gadget.
* Embed Shortcuts. Example: an "Add to Facebook" button or "Add to Myspace" button on Views that has Web Widgets is enabled.
* Customizable themes using templates and color schemes
* Initial supported modules: Facebook module and Google Gadgets and Service.module
* API support for OpenSocial SPI for hosting OpenSocial Apps.
* http://en.wikipedia.org/wiki/Web_widget - refinition reference.
* http://drupal.org/handbook/modules/viewss - reference for extending view module.
* http://drupal.org/project/component - reference for providing theme-able widgets.
* http://drupal.org/handbook/modules/color - reference for extending color module.
* http://developers.facebook.com/documentation.php - FaceBook API
* http://code.google.com/apis/gadgets/ - Google Gadgets API
* http://code.google.com/apis/opensocial/docs/0.7/spec.html - OpenSocial API specification.
* http://drupal.org/project/services - reference for modifying services to support other platforms such as OpenSocial.