ROLE Technologies – A possible contribution to Apache Rave?

21
© www.role- project.eu ROLE Technologies – A possible contribution to Apache Rave? Dominik Renzel Chair 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 Unpor Sten Govaerts Department of Computer Science Katholieke Universiteit Leuven, Belgium

description

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

Transcript of ROLE Technologies – A possible contribution to Apache Rave?

Page 1: ROLE Technologies – A possible contribution to Apache Rave?

© 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?

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?

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?

ROLE Technologies – How to sustain?

© www.role-project.eu

??

Page 5: ROLE Technologies – A possible contribution to Apache Rave?

© 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?

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?

ROLE XMPP-based Real-time Communication & Collaboration

Page 8: ROLE Technologies – A possible contribution to Apache Rave?

ROLE Interwidget Communication – Concept

© www.role-project.eu

Page 9: ROLE Technologies – A possible contribution to Apache Rave?

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?

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?

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?

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?

(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 15: ROLE Technologies – A possible contribution to Apache Rave?

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?

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?

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?

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?

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?

CfP – ROLE Widget Enchantment Competition

© www.role-project.eu

Page 21: ROLE Technologies – A possible contribution to Apache Rave?

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