Project Syndroid


Published on

A proposed architecture for a Gadget API that allows deployment of OpenSocial/Gears enabled gadgets to Android, iGoogle, OSX Dashboard, Google Desktop, etc

Published in: Technology, Education
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Project Syndroid

  1. Project Syndroid <ul><li>Gadgets on a Cloud Computing Platform </li></ul>Ray Cromwell CTO
  2. Problem: Gadgets can span many Clouds Android iGoogle OSX Google Desktop Yahoo And many Flash widget startups
  3. Clouds <ul><li>Android and J2ME are Java </li></ul><ul><li>What of iPhone SDK? Objective-C? Javascript? </li></ul><ul><li>iGoogle, Yahoo, Google Desktop, OSX Dashboard, Javascript </li></ul><ul><li>Browser and Android have different persistent storage APIs too </li></ul>
  4. Fatigue <ul><li>Developers duplicate work </li></ul><ul><li>Write same widget over and over </li></ul><ul><li>New environments like OpenSocial and Gears make it more problematic </li></ul>
  5. Help! <ul><li>Wouldn’t it be nice to write a Gadget just once? </li></ul><ul><li>And deploy it everywhere natively ? </li></ul><ul><li>And take advantage of OpenSocial and Gears-like storage? </li></ul><ul><li>And abstract away network I/O? </li></ul>
  6. Syndroid <ul><li>Synthesis of Android and GWT </li></ul><ul><li>Write Gadgets to a restricted API </li></ul><ul><li>Compile to Javascript or Dalvik or (later) Actionscript </li></ul><ul><li>Run on Android, iGoogle, OSX, Yahoo, et al </li></ul>
  7. How? <ul><li>New subset of Android declarative UI XML </li></ul><ul><ul><li>UI widgets with Android, Browser, Flex implementations </li></ul></ul><ul><ul><li>Abstract Canvas system for Graphics </li></ul></ul><ul><ul><ul><li>Proven Cross GWT->Android->Flash </li></ul></ul></ul><ul><ul><li>Persistent Storage API </li></ul></ul><ul><ul><li>OpenSocial Proxy Container </li></ul></ul>
  8. Picture = 2^10 Words Syndroid Gadget XML + Java + Packaging UI Elements Networking OpenSocial Storage Android GWT Flex/AIR Shindig OSX Dashboard Google Desktop Cloud Agnostic Cloud Specific
  9. UI Elements <ul><li>Define subset of Android/GWT widgets useful for Gadgets </li></ul><ul><li>Map to UI XML and Java implementation classes </li></ul><ul><li>Restricted LCD event handling </li></ul>
  10. UI Elements <ul><li>Full Canvas API supportable </li></ul><ul><ul><li>Proven GWT->Android->Flash implementation in Chronoscope </li></ul></ul><ul><ul><li>Custom UI elements can be created across the cloud! (games and graphs for example) </li></ul></ul>
  11. Networking <ul><li>Common Gadget Operations </li></ul><ul><ul><li>Fetch RSS/Atom/JSON Data </li></ul></ul><ul><ul><li>Submit Forms </li></ul></ul><ul><ul><ul><li>Especially useful with File Upload </li></ul></ul></ul><ul><li>OpenSocial environment layered on top </li></ul>
  12. OpenSocial <ul><li>What does it mean to run an OpenSocial container in an Android phone? </li></ul><ul><ul><li>Use Address Book as social network? </li></ul></ul>
  13. No! <ul><li>I want Orkut/Plaxo/Ning/etc widgets to run in my phone and show data from those containers. </li></ul>
  14. Solution: Proxy Container Syndroid OpenSocial Gadget Android Syndroid OpenSocial API Syndroid Networking Proxy Internet Any Shindig
  15. OpenSocial Proxy <ul><li>Uses optional proxy server to access foreign container interfaces </li></ul><ul><li>In cases where direct access is possible with XHR/JSON, proxy can be avoided </li></ul><ul><li>User deploys Gadget and uses Preference to select destination OpenSocial container </li></ul>
  16. Persistent Storage Syndroid Storage DB and Preferences Android SQLLite Gears Android GWT Desktop AIR Local DB pref
  17. Persistent Storage <ul><li>SQL-Like interface to Android, AIR, and Gears Databases </li></ul><ul><ul><li>How to handle non-Gears JS environments? Open Question </li></ul></ul><ul><li>HashMap-style prefs interface for everything else </li></ul>
  18. GWT, the Enabler <ul><li>Single language: Java </li></ul><ul><li>Subset JRE runs in JS, Android, and can be made to run in ActionScript and J2ME </li></ul><ul><li>Code written to GWT JRE + Abstract UI/Event system is Cloud Safe </li></ul><ul><ul><li>Can be translated into multiple environments </li></ul></ul>
  19. Open Question <ul><li>Interaction of Caja and GWT code </li></ul><ul><ul><li>Can GWT be modified to produce Cajoled code for Shindig containers? </li></ul></ul>
  20. Details to finalize <ul><li>Set of widgets </li></ul><ul><li>Event interface </li></ul><ul><li>Packaging and Deployment process </li></ul><ul><li>Toolset </li></ul>
  21. Syndroid <ul><li>Write Gadgets in Java </li></ul><ul><li>Use OpenSocial and Offline Features </li></ul><ul><li>Compile and Deploy as Native Android App </li></ul><ul><li>Compile and Deploy to JavaScript </li></ul><ul><ul><li>and later AIR/Flash </li></ul></ul><ul><li>Support OSX Dashboard, Google Desktop, Vista Sidebar, Yahoo Widgets, .... </li></ul>
  22. Syndroid One Gadget API to Rule Them All