0
Widgets Meetup, London, 13 Oct 2009 Wookies and Widgets Scott Wilson (University of Bolton) Scott. bradley [email_address]...
Wookie is not a clever acronym (so if you spell it WOOKIE you’re shouting!)
Apache Wookie (incubating) <ul><li>Entered incubator July ‘09  </li></ul><ul><li>originally developed in Framework 6 IP </...
How Wookie Works <ul><li>Servlet, runs in Tomcat or Jetty </li></ul><ul><li>Provides REST API for applications to access w...
Wookie REST API <ul><li>GET /widgets  gets the list of widgets installed </li></ul><ul><li>POST /widgetinstances  instanti...
Typical lifecycle <ul><li>GET /widgets -> render as a gallery for the user to pick which one to add </li></ul><ul><li>POST...
Plugins <ul><li>LAMS </li></ul><ul><li>Moodle </li></ul><ul><li>Wordpress (needs improving) </li></ul><ul><li>Elgg 1.0 (ne...
Widget APIs <ul><li>< feature name= &quot;http://wave.google.com&quot;  required= &quot;true&quot; /> </li></ul><ul><li>W3...
Shindig integration <ul><li>Basic integration, adds Shindig servlet in install </li></ul><ul><li>Wookie generates tokens f...
Proposed features <ul><li>Inter-widget communications (IWC) </li></ul><ul><li>More bondi/DAP APIs </li></ul>
Anatomy of a Widget <ul><li>Config.xml <- W3C Widgets P&C Spec </li></ul><ul><li>Icon </li></ul><ul><li>HTML start file </...
A Silly Example: config.xml <ul><li><?xml   version = &quot;1.0&quot;   encoding = &quot;utf-8&quot; ? > </li></ul><ul><li...
A Silly Example: HTML & JS <ul><li><html> </li></ul><ul><li><body   onload = &quot;document.getElementById(‘name’).innerTe...
Cooler example: webcam <ul><li><html > </li></ul><ul><li><head> </li></ul><ul><li><script> </li></ul><ul><li>function take...
Future stuff <ul><li>Wookie hosting? UK/EU App Store? </li></ul><ul><li>SocialSite integration </li></ul><ul><li>Better Sh...
Get involved! <ul><li>Send subscribe message to  [email_address] </li></ul><ul><li>Submit issue reports, feature requests,...
Upcoming SlideShare
Loading in...5
×

Wookie Meetup

768

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
768
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Wookie Meetup"

  1. 1. Widgets Meetup, London, 13 Oct 2009 Wookies and Widgets Scott Wilson (University of Bolton) Scott. bradley [email_address] Twitter: scottbw
  2. 2. Wookie is not a clever acronym (so if you spell it WOOKIE you’re shouting!)
  3. 3. Apache Wookie (incubating) <ul><li>Entered incubator July ‘09 </li></ul><ul><li>originally developed in Framework 6 IP </li></ul><ul><ul><li>Funded projects tend to build prototypes, not communities </li></ul></ul><ul><li>http://incubator.apache.org/wookie/ </li></ul>
  4. 4. How Wookie Works <ul><li>Servlet, runs in Tomcat or Jetty </li></ul><ul><li>Provides REST API for applications to access widgets using a plug-in </li></ul><ul><li>Provides JavaScript API objects for widgets at runtime </li></ul><ul><li>Admin UI for installing and managing W3C Widgets </li></ul><ul><li>Server-side storage, and push events </li></ul>
  5. 5. Wookie REST API <ul><li>GET /widgets gets the list of widgets installed </li></ul><ul><li>POST /widgetinstances instantiates a widget </li></ul><ul><li>POST /participants adds a participant to a widget instance </li></ul><ul><li>Lots more at http://incubator.apache.org/wookie/wookie-rest-api.html </li></ul>
  6. 6. Typical lifecycle <ul><li>GET /widgets -> render as a gallery for the user to pick which one to add </li></ul><ul><li>POST /widgetinstances -> create an instance of the widget for the user, returns the URI and widget height/width </li></ul><ul><li>POST /participants -> add user as a participant in the instance </li></ul><ul><li>Create iframe with src, height and width set </li></ul>
  7. 7. Plugins <ul><li>LAMS </li></ul><ul><li>Moodle </li></ul><ul><li>Wordpress (needs improving) </li></ul><ul><li>Elgg 1.0 (needs improving) </li></ul>
  8. 8. Widget APIs <ul><li>< feature name= &quot;http://wave.google.com&quot; required= &quot;true&quot; /> </li></ul><ul><li>W3C Widget Object (default) </li></ul><ul><li>Google Wave Gadget API </li></ul><ul><li>Bondi camera API </li></ul><ul><li>SCORM CMI API </li></ul><ul><li>… anything else! </li></ul>
  9. 9. Shindig integration <ul><li>Basic integration, adds Shindig servlet in install </li></ul><ul><li>Wookie generates tokens for shindig opensocial applications </li></ul><ul><li>Wookie handles getPref/setPref using W3C Widget object </li></ul><ul><li>Doesn’t handle Shindig data interface </li></ul><ul><li>Needs more work! </li></ul>
  10. 10. Proposed features <ul><li>Inter-widget communications (IWC) </li></ul><ul><li>More bondi/DAP APIs </li></ul>
  11. 11. Anatomy of a Widget <ul><li>Config.xml <- W3C Widgets P&C Spec </li></ul><ul><li>Icon </li></ul><ul><li>HTML start file </li></ul><ul><li>JavaScript code </li></ul><ul><li>Zip it up, change ext to .wgt, and you’re done </li></ul>
  12. 12. A Silly Example: config.xml <ul><li><?xml version = &quot;1.0&quot; encoding = &quot;utf-8&quot; ? > </li></ul><ul><li>< widget xmlns= &quot;http://www.w3.org/ns/widgets&quot; id= &quot;http://www.getwookie.org/widgets/tea&quot; version = &quot;1.0” height= &quot;150” width= &quot;125&quot; > </li></ul><ul><li>< name > Tea </ name > </li></ul><ul><li>< description > A silly Tea widget </ description > </li></ul><ul><li>< icon src= &quot;tea.jpg&quot; /> </li></ul><ul><li>< content src= &quot;index.htm&quot; /> </li></ul><ul><li>< feature name= &quot;http://wave.google.com&quot; required= &quot;true&quot; /> </li></ul><ul><li>< author > Scott Wilson </ author > </li></ul><ul><li></ widget > </li></ul>
  13. 13. A Silly Example: HTML & JS <ul><li><html> </li></ul><ul><li><body onload = &quot;document.getElementById(‘name’).innerText=wave.getViewer().getDisplayName()&quot; > </li></ul><ul><li><img src = &quot;tea.jpg&quot; /> </li></ul><ul><li><p style = &quot;font-size:9pt&quot; > Time for a break, <span id = &quot;name&quot; > mate </span></p> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  14. 14. Cooler example: webcam <ul><li><html > </li></ul><ul><li><head> </li></ul><ul><li><script> </li></ul><ul><li>function takePicture(){ </li></ul><ul><li>var camera = bondi.camera.getCameras()[ 0 ]; camera.takePicture(function(x){document.getElementById(&quot;picture&quot;).src=x;},function(){alert( &quot;nope&quot; );}); } </li></ul><ul><li></script> </li></ul><ul><li></head> </li></ul><ul><li><body> </li></ul><ul><li><button onclick = &quot;takePicture()&quot; > Take Picture </button> </li></ul><ul><li><img id = &quot;picture&quot; src = &quot;&quot; width = &quot;64&quot; height = &quot;64&quot; /> </li></ul><ul><li></body> </li></ul><ul><li></html> </li></ul>
  15. 15. Future stuff <ul><li>Wookie hosting? UK/EU App Store? </li></ul><ul><li>SocialSite integration </li></ul><ul><li>Better Shindig integration </li></ul><ul><li>OpenAjax stuff? </li></ul>
  16. 16. Get involved! <ul><li>Send subscribe message to [email_address] </li></ul><ul><li>Submit issue reports, feature requests, patches: http://issues.apache.org/jira/browse/WOOKIE </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×