role technologies – a possible contribution to apache rave?
DESCRIPTION
A presentation of ROLE technologies at the Apache Rave Hackathon in Utrecht, Netherlands on Jun 13, 2012TRANSCRIPT
![Page 1: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/1.jpg)
© www.role-project.eu
ROLE Technologies – A possible contribution to Apache Rave?
Dominik RenzelChair of Computer Science 5
Advanced Community Information Systems (ACIS)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.
Sten GovaertsDepartment of Computer Science
Katholieke Universiteit Leuven, Belgium
![Page 2: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/2.jpg)
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
© www.role-project.eu
![Page 3: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/3.jpg)
ROLE Vision
© www.role-project.eu
•Empower learners to build their own responsive learning environments
ROLE Vision
•Awareness and reflection of own learning process
Responsiveness
•Individually adapted composition of personal learning environment
User-Centered
![Page 4: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/4.jpg)
ROLE Technologies – How to sustain?
© www.role-project.eu
??
![Page 5: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/5.jpg)
© www.role-project.eu
The ROLE Sandbox (role-sandbox.eu)
Public installation of ROLE SDK for development & testing purposes ROLE Reference Container for Widget-based PLE
SpaceWidget List(add/remove)
Member List(join/leave)
Space Chat
Widgets(max/minimize)
Does this already remind you of Apache Rave?
![Page 6: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/6.jpg)
ROLE APIsHow to make your widget communicate in real-time – The ROLE Interwidget Communication (IWC) API
© www.role-project.eu
ROLE APIs
![Page 7: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/7.jpg)
ROLE XMPP-based Real-time Communication & Collaboration
![Page 8: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/8.jpg)
ROLE Interwidget Communication – Concept
© www.role-project.eu
![Page 9: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/9.jpg)
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
ROLE Interwidget Communication – Facts
![Page 10: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/10.jpg)
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);
© www.role-project.eu
![Page 11: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/11.jpg)
ROLE IWC – Intent Message Format
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. http://myresource.org/microblogs/1) 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“})
var intent = { "component": "", "sender":"[email protected]?
http://widget.org/sender.xml", "data":"http://data.org/some/data",
"dataType":"text/xml", "action":"ACTION_UPDATE", "categories":
["category1","category2"],"flags" :["PUBLISH_GLOBAL", "own_flag"],"extras":{"key1":"val1", "key2":"val2"}
};
© www.role-project.eu
![Page 12: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/12.jpg)
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: https://github.com/hocken/wxg
Web Client Library Extension (strophe.js) (Semi-)transparent BOSH/XMPP over WS Refers to Strophe Issue 68: Source: https://github.com/Gordin/strophejs
![Page 13: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/13.jpg)
(XMPP over) BOSH vs. WebSocket
Property BOSH WebSocket
Connections Two concurrent One
Connection Persistence Repeated open/close Persistent
Transportable Data Textual only Textual, binary
Latency High Low
Package Overhead High (180+ bytes for headers per roundtrip)
Low (2 bytes for frame headers)
Uptake High Low
XMPP Servers Most Few
XMPP JS Libraries All Only some experimental
Browser support Most Few
XMPP over WebSocket to obsolete BOSH with stable specifications and implementations
![Page 14: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/14.jpg)
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: http://role-sandbox.eu/spaces/iwc
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)
© www.role-project.eu
![Page 15: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/15.jpg)
ROLE APIsHow to make widgets manage Linked Data resources – The OpenApp API
© www.role-project.eu
ROLE APIs
![Page 16: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/16.jpg)
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)
![Page 17: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/17.jpg)
OpenApp – Client API
Get current space & user as resources
Get resource information (JSON object with key/value pairs)
var space = new openapp.oo.Resource(openapp.param.space());
space.getInfo(function(info) {alert(info);
});
openapp.oo.Resource create del getSubResources refresh
getInfo setInfo getMetadata setMetadata getRepresentation setRepresentation
var user = new openapp.oo.Resource(openapp.param.user());
![Page 18: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/18.jpg)
OpenApp – Client API (Code Samples continued)
Create data sub-resource under space
Get space resource metadata
Find sub-resources via relation and type
space.create({relation: openapp.ns.role + "data", type: "my:data:namespace:uri", metadata: meta, callback: function(sub){
//do something with new sub-resource}
});
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
}});
![Page 19: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/19.jpg)
OpenApp – Browsing Resources with the Index Page
For any resource open index page with <RESOURCE_URI>/:index
![Page 20: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/20.jpg)
CfP – ROLE Widget Enchantment Competition
© www.role-project.eu
![Page 21: ROLE Technologies – A possible contribution to Apache Rave?](https://reader036.vdocument.in/reader036/viewer/2022062701/5539a79b550346b4378b4a14/html5/thumbnails/21.jpg)
Visit the ROLE project pagerole-project.eu
Download the ROLE SDK sourceforge.net/projects/role-project
Try the ROLE Sandboxrole-sandbox.eu
Enter the ROLE Widget Competitionrole-project.eu/WidgetCompetition
Join ROLE on LinkedInlinkedin.com/groups?gid=1590487
Share your widgets in the ROLE Widget Storerole-widgetstore.eu/
© www.role-project.eu