Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Widgets - the Wookie project


Published on

An overview of our widgets work using W3C, for the Sakai team

Published in: Technology, Art & Photos

Widgets - the Wookie project

  1. 1. Widgets Scott Wilson institute for educational cybernetics university of bolton
  2. 2. A Bit Of Background <ul><li>Direction One: </li></ul><ul><ul><li>IMS learning design and “services” </li></ul></ul><ul><ul><li>TenCompetence EU Project and the “Connection Protocol” </li></ul></ul><ul><li>Direction Two: </li></ul><ul><ul><li>Connecting PLEs and institutions </li></ul></ul><ul><ul><li>Ubolton’s OnlyConnect project </li></ul></ul>
  3. 3. TenCompetence & IMS LD <ul><li>Make LD less like programming </li></ul><ul><li>Move from early to late binding model - more outlining than authoring </li></ul><ul><li>Better integration of authoring and runtime - make the whole thing less abstract, and more like LAMS </li></ul><ul><li>Support dynamic editing from activities by users (including learners) - a.k.a. the widget widget </li></ul>
  4. 4. ReCourse mockup <ul><li>Late binding with runtime integration </li></ul>
  5. 5. Runtime experience
  6. 6. OnlyConnect <ul><li>Use Widgets to enable core institutional services to be distributed in both institutional, departmental, workplace, and personal platforms </li></ul><ul><li>Focus on timetable information and messaging; may in future extend to library and other services </li></ul><ul><li>A lot of backend work needed to funnel down to a few syllables of useful information </li></ul><ul><li>A lot of potential target platforms: WebCT, Moodle, Sharepoint, Wordpress, Elgg (etc) </li></ul>
  7. 9. State of Widgets Today
  8. 10. State of Widgets Today - 2
  9. 11. State of Widgets Today - 3
  10. 12. Unbundled Architecture Yes, its called wookie No, I don’t know why
  11. 13. Standards <ul><li>W3C Widget Specification 1.0 </li></ul><ul><ul><li>Derived from Apple Dashboard, Windows Sidebar, Opera Widgets, Nokia Widgets vendor specifications </li></ul></ul><ul><li>Proprietary vendor specs </li></ul><ul><ul><li>Google Gadgets & OpenSocial </li></ul></ul><ul><ul><li>Netvibes Universal Widget Spec </li></ul></ul><ul><ul><li>Apple iPhone SDK </li></ul></ul><ul><ul><li>Lots and lots more… </li></ul></ul><ul><li>IMS LTI </li></ul>
  12. 14. Adapting/Extending W3C spec <ul><li>Widget instantiation service </li></ul><ul><ul><li>Way for engine to manage instances in a multi-container, multi-user (web) environment and use opaque api key to keep user states separate </li></ul></ul><ul><li>Proxying </li></ul><ul><ul><li>Avoid AJAX security issues without killing functionality </li></ul></ul><ul><li>Shared states </li></ul><ul><ul><li>Widgets with shared state between multiple users, for collaborative tools, games, etc. </li></ul></ul>
  13. 15. Architecture
  14. 16. Widget Config API <ul><li>Offers containers controls for instantiating and controlling widgets from engine </li></ul><ul><li>Invoked from container plugin (e.g. Elgg plugin, Moodle plugin) </li></ul><ul><li>Methods: getWidget, stopWidget, resumeWidget, setProperty </li></ul>
  15. 17. Example <ul><li>HTTP GET engine/getWidget(user_id, run_id, service_id, ‘chat’) </li></ul><ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><widgetdata> </li></ul><ul><li><url>http://localhost:8080/wookie/wservices/;url=http://localhost:8080/wookie/dwr/interface/widget.js&amp;proxy=http://localhost:8080/wookie/proxy</url> </li></ul><ul><li><height>383</height> </li></ul><ul><li><width>255</width> </li></ul><ul><li><maximize>false</maximize> </li></ul><ul><li></widgetdata> </li></ul>
  16. 18. Widget API <ul><li>Extensions to W3C Widget 1.0, itself based on Apple Dashboard </li></ul><ul><li>New methods and events: </li></ul><ul><ul><li>sharedDataForKey(key) </li></ul></ul><ul><ul><li>appendSharedDataForKey(key) </li></ul></ul><ul><ul><li>setSharedDataForKey(key,value) </li></ul></ul><ul><ul><li>Lock </li></ul></ul><ul><ul><li>Unlock </li></ul></ul><ul><li>Enables synchronous collaboration in widgets using reverse AJAX/comet </li></ul>
  17. 19. Collaborative widget Elgg plugin uses its native widget system Converted Apple widgets
  18. 20. Moodle plugin uses “blocks”
  19. 21. Wordpress plugin uses its native widget sidebar
  20. 22. Widget management <ul><li>Basic admin interface for uploading new widgets as W3C widget packages </li></ul><ul><li>Whitelist proxy for enabling remote service access by widgets </li></ul><ul><li>Tagging to enable instantiation of widgets by type rather than id (esp. for portable learning designs) </li></ul>
  21. 24. Access and security <ul><li>Widget engine deliberately uses NO authentication (except for its admin webapp) </li></ul><ul><li>User relationship managed by container only. Engine generates opaque non-guessable keys for each widget instance </li></ul><ul><li>Container can push properties to a widget it instantiates (e.g. display name, moderator status) </li></ul><ul><li>Widgets can send things like completion state data back to container, but not implemented in current version as it requires more work for containers </li></ul>
  22. 25. Implementation <ul><li>Engine </li></ul><ul><ul><li>Java Web App (tomcat or Jboss) </li></ul></ul><ul><ul><li>MySQL </li></ul></ul><ul><ul><li>DWR (Direct Web Remoting) library </li></ul></ul><ul><ul><li>Pretty small (about 1mb WAR plus 11mb of common libs) </li></ul></ul><ul><ul><li>One engine can serve multiple containers </li></ul></ul><ul><li>Widgets </li></ul><ul><ul><li>Chat, Voting, Forum </li></ul></ul><ul><ul><li>Converted Apple widgets (add W3C manifest, remove/re-route apple dependencies) </li></ul></ul><ul><li>Plugins </li></ul><ul><ul><li>Wordpress, Moodle, Elgg. All PHP using platform API </li></ul></ul>
  23. 26. For the future <ul><li>Grabbable widgets - dragging the whole thing off into your own personal containers straight out of another container such as VLE. Can do it now… but want to check more security angles! </li></ul><ul><li>oAuth - put the user in control of how widgets gain access to remote services </li></ul><ul><li>Widget state coupling using events and listeners (already prototyped by Palette project at Lausanne) </li></ul>
  24. 27. Next steps <ul><li>Package and document all our stuff so others can use it more easily </li></ul><ul><li>Work with other OSS projects, particularly Elgg and Moodle, possibly Apache Shindig </li></ul><ul><li>Publish extensions/profile of W3C spec for W3C or other spec bodies to take forwards </li></ul><ul><li>Make more cool widgets </li></ul>
  25. 28. Thanks for listening - over to you http://www. cetis scott