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.

ROLE Technologies – A possible contribution to Apache Rave?


Published on

A presentation of ROLE technologies at the Apache Rave Hackathon in Utrecht, Netherlands on Jun 13, 2012

Published in: Technology
  • Be the first to comment

ROLE Technologies – A possible contribution to Apache Rave?

  1. 1. ROLE Technologies – A possible contribution to Apache Rave? Dominik Renzel Sten Govaerts Chair of Computer Science 5 Department of Computer ScienceAdvanced Community Information Systems (ACIS) Katholieke Universiteit Leuven, Belgium RWTH Aachen University, Germany Apache Hackathon June 13, 2012, Utrecht, Netherlands This work by Dominik Renzel is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported. ©
  2. 2. ROLE Background & Motivation Currently happening: significant shift in education From passive lectures to interactive (online) group work Online learning tools cherry-picked or handcrafted by educators & learners DIY motto “create, disassemble, repurpose“ applied to educational products Learners & educators create mash-up learning apps, lessons & processes More collaboration, personalization, freedom, effectiveness ROLE: Inherent DIY support using widget-based Personal Learning Environments ©
  3. 3. ROLE Vision • Empower learners to build their ROLE Vision own responsive learning environments Responsiveness • Awareness and reflection of own learning process User-Centered • Individually adapted composition of personal learning environment ©
  4. 4. ROLE Technologies – How to sustain? ? ? ©
  5. 5. The ROLE Sandbox ( Public installation of ROLE SDK for development & testing purposes ROLE Reference Container for Widget-based PLE Space Widget List (add/remove) Member List (join/leave) Space Chat Widgets (max/minimize) Does this already remind you of Apache Rave? ©
  6. 6. ROLE APIs ROLE APIs How to make your widget communicate in real-time – The ROLE Interwidget Communication (IWC) API ©
  7. 7. ROLE XMPP-based Real-time Communication & Collaboration
  8. 8. ROLE Interwidget Communication – Concept ©
  9. 9. ROLE Interwidget Communication – Facts Message-based communication between widgets Two different forms  Single-user-single-browser:  Integration of local widget instances to full applications  Realized with HTML5 Web Messaging (other mechanisms realizable, too)  Multi-user-multi-browser:  Remote user collaboration in real-time  Realized with XMPP Publish-Subscribe Message types  Events: what happened upon sending message  Intents: what should happen on receiving message  (Use of semantic descriptions in message representations) Context  In general: XMPP Publish-Subscribe Channel  ROLE Reference Implementation: ROLE Spaces Refers to Epic RAVE-25
  10. 10. ROLE Interwidget Communication – Client API Function Description connect(callback) Connects the client to local interwidget communication. After successful call, the client is able to publish and receive intents. Received intents are passed to the callback function. disconnect() Disconnects the client from interwidget communication. publish(intent) Publishes a JSON-encoded intent. Initialize ROLE IWC Client var iwcClient = new iwc.Client(); iwcClient.connect(function(intent){ // process intent }); Publish ROLE IWC Intent iwcClient.publish(intent); ©
  11. 11. ROLE IWC – Intent Message Format var intent = { "component": "", "sender":"", "data":"", "dataType":"text/xml", "action":"ACTION_UPDATE", "categories":["category1","category2"], "flags" :["PUBLISH_GLOBAL", "own_flag"], "extras":{"key1":"val1", "key2":"val2"} };  Google Android-like Intents  component(*) (String) - the component name of a specific recipient widget (explicit intent) or the empty string to indicate broadcasting (implicit intent)  sender (String) - sender & sender widget.  action (String) - the action to be performed by receivers (e.g. ACTION_UPDATE)  data(*) (String) - data in form of a URI (e.g.  dataType(*) (String) - the data type in MIME notation (e.g. text/html)  categories (Array) - categories of widgets to process the intent (e.g. ["editor"])  flags (Array) - flags controlling intent processing (e.g. ["PUBLISH GLOBAL"])  extras (JSON) - auxiliary data (e.g. {"examplekey":"examplevalue“}) ©
  12. 12. Efforts in XMPP Community: XMPP over WebSocket  XMPP over WebSocket Gateway (WXG)  Based on "An XMPP Sub-protocol for WebSocket" (J. Moffit, E. Cestari)  Jetty-based implementation (supporting RFC 6455)  Source:  Web Client Library Extension (strophe.js)  (Semi-)transparent BOSH/XMPP over WS  Refers to Strophe Issue 68:  Source:
  13. 13. (XMPP over) BOSH vs. WebSocketProperty BOSH WebSocketConnections Two concurrent OneConnection Persistence Repeated open/close PersistentTransportable Data Textual only Textual, binaryLatency High LowPackage Overhead High (180+ bytes for Low (2 bytes for frame headers per roundtrip) headers)Uptake High LowXMPP Servers Most FewXMPP JS Libraries All Only some experimentalBrowser support Most Few  XMPP over WebSocket to obsolete BOSH with stable specifications and implementations
  14. 14. ROLE Interwidget Communication – Online Resources Documentation  ROLE SDK API Docs (SDK Download)  Sourceforge MediaWiki (Wiki Page)  Overview Paper (PDF) Demonstration  ROLE SDK Trailer (youTube Video)  Demo Space in ROLE Sandbox: Code  Libraries  Proxy Part (code)  Client Part (code)  Tools  ROLE IWC Test Stub Widget (code)  Demo Widgets (cf. Demonstration)  Synchronized Video Player (code)  Synchronized Map Navigation (code)  Collaborative Sketching Widget (code)  Real-time Shared Note-Taking (code) ©
  15. 15. ROLE APIs ROLE APIs How to make widgets manage Linked Data resources – The OpenApp API ©
  16. 16. OpenApp – Concept API for Linked Data-style resource management Everything is a Resource  URI  Representation  Metadata  Data Resources can have sub-resources  Access to sub-resources filtered by type or relation to parent Special Resources  Space is topmost resource in a space (shared)  User is topmost personal resource (protected)
  17. 17. OpenApp – Client APIopenapp.oo.Resource  create  getInfo  del  setInfo  getSubResources  getMetadata  refresh  setMetadata  getRepresentation  setRepresentation Get current space & user as resourcesvar space = new openapp.oo.Resource(;var user = new openapp.oo.Resource(openapp.param.user()); Get resource information (JSON object with key/value pairs)space.getInfo(function(info) { alert(info);});
  18. 18. OpenApp – Client API (Code Samples continued) Create data sub-resource under space space.create({ Get space resource metadata "data", relation: openapp.ns.role + type: "my:data:namespace:uri", metadata: meta, callback: function(sub){ //do something with new sub-resource } }); Find sub-resources via relation and type space.getSubResources({ relation: openapp.ns.role + "data", type: "my:data:namespace:uri", onAll: function(arr) { //alternatively use onEach //Do something with array of found subresources } });
  19. 19. OpenApp – Browsing Resources with the Index Page For any resource open index page with <RESOURCE_URI>/:index
  20. 20. CfP – ROLE Widget Enchantment Competition ©
  21. 21. Visit the ROLE project page Download the ROLE SDK Try the ROLE Sandbox Enter the ROLE Widget Competition Join ROLE on LinkedIn your widgets in the ROLE Widget Store ©