SlideShare uma empresa Scribd logo
1 de 21
ROLE Technologies –
        A possible contribution to Apache Rave?

           Dominik Renzel                                Sten Govaerts
         Chair of Computer Science 5               Department of Computer Science
Advanced 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.
                                                                                 © www.role-project.eu
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
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



                                                   © www.role-project.eu
ROLE Technologies – How to sustain?




                                      ?
                          ?




                                          © 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


 Space
   Widget List
   (add/remove)


   Member List
   (join/leave)

   Space Chat



   Widgets
   (max/minimize)


       Does this already remind you of Apache Rave?
                                                              © www.role-project.eu
ROLE APIs




 ROLE APIs
 How to make your widget communicate in real-time –
 The ROLE Interwidget Communication (IWC) API




                                              © www.role-project.eu
ROLE XMPP-based Real-time Communication & Collaboration
ROLE Interwidget Communication – Concept




                                           © www.role-project.eu
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
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
ROLE IWC – Intent Message Format

  var intent = {
      "component": "",
      "sender":"bob@somewhere.org?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"}
  };

  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“})
                                                                            © www.role-project.eu
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
(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     Low (2 bytes for frame
                         headers per roundtrip)   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
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
ROLE APIs




 ROLE APIs
 How to make widgets manage Linked Data resources –
 The OpenApp API




                                             © www.role-project.eu
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)
OpenApp – Client API


openapp.oo.Resource
      create                    getInfo
      del                       setInfo
      getSubResources           getMetadata
      refresh                   setMetadata
                                 getRepresentation
                                 setRepresentation
 Get current space & user as resources
var space = new openapp.oo.Resource(openapp.param.space());

var user = new openapp.oo.Resource(openapp.param.user());

 Get resource information (JSON object with key/value pairs)
space.getInfo(function(info) {
    alert(info);
});
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
     }
 });
OpenApp – Browsing Resources with the Index Page

 For any resource open index page with <RESOURCE_URI>/:index
CfP – ROLE Widget Enchantment Competition




                                            © www.role-project.eu
Visit the ROLE project page
                 role-project.eu
          Download the ROLE SDK
     sourceforge.net/projects/role-project
           Try the ROLE Sandbox
                role-sandbox.eu
    Enter the ROLE Widget Competition
      role-project.eu/WidgetCompetition
           Join ROLE on LinkedIn
      linkedin.com/groups?gid=1590487
Share your widgets in the ROLE Widget Store
              role-widgetstore.eu/



                                              © www.role-project.eu

Mais conteúdo relacionado

Destaque

JTEL11 - Short Introduction to ROLE Social Requirements Engineering
JTEL11 - Short Introduction to ROLE Social Requirements EngineeringJTEL11 - Short Introduction to ROLE Social Requirements Engineering
JTEL11 - Short Introduction to ROLE Social Requirements EngineeringDominik Renzel
 
Recruitment Solution- By prothom-alojobs
Recruitment Solution- By prothom-alojobsRecruitment Solution- By prothom-alojobs
Recruitment Solution- By prothom-alojobsMd. Shahriar Arefin
 
Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...
Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...
Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...Dominik Renzel
 

Destaque (6)

35 line coding
35 line coding35 line coding
35 line coding
 
JTEL11 - Short Introduction to ROLE Social Requirements Engineering
JTEL11 - Short Introduction to ROLE Social Requirements EngineeringJTEL11 - Short Introduction to ROLE Social Requirements Engineering
JTEL11 - Short Introduction to ROLE Social Requirements Engineering
 
Recruitment Solution- By prothom-alojobs
Recruitment Solution- By prothom-alojobsRecruitment Solution- By prothom-alojobs
Recruitment Solution- By prothom-alojobs
 
Links of london
Links of londonLinks of london
Links of london
 
Introduction to SCORE
Introduction to SCOREIntroduction to SCORE
Introduction to SCORE
 
Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...
Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...
Requirements Bazaar: Experiences, Added Value & Acceptance of Requirements Ne...
 

Semelhante a ROLE Technologies – A possible contribution to Apache Rave

Drupal 8 preview_slideshow
Drupal 8 preview_slideshowDrupal 8 preview_slideshow
Drupal 8 preview_slideshowTee Malapela
 
Vijay Mix Presentation
Vijay Mix PresentationVijay Mix Presentation
Vijay Mix Presentationvijayrvr
 
Developing With Openbravo Rl Eppt
Developing With Openbravo Rl EpptDeveloping With Openbravo Rl Eppt
Developing With Openbravo Rl Epptvobree
 
Drupal 8 and iOS - an Open Source App
Drupal 8 and iOS - an Open Source AppDrupal 8 and iOS - an Open Source App
Drupal 8 and iOS - an Open Source ApplittleMAS
 
An overview of OpenStack for the VMware community
An overview of OpenStack for the VMware communityAn overview of OpenStack for the VMware community
An overview of OpenStack for the VMware communityAnthony Chow
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open SourceBertrand Delacretaz
 
What is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna NookellaWhat is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna Nookellamuralikrishnanookella
 
Extending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesExtending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesNicola Ferraro
 
Fedora Overview
Fedora OverviewFedora Overview
Fedora Overvieweposthumus
 
A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to KubernetesPaul Czarkowski
 
Analyzing data with docker v4
Analyzing data with docker   v4Analyzing data with docker   v4
Analyzing data with docker v4Andreas Dewes
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open SourceBertrand Delacretaz
 
Teched India Vijay Interop Track
Teched India Vijay Interop TrackTeched India Vijay Interop Track
Teched India Vijay Interop Trackvijayrvr
 
Open innovation in software means Open Source (2011 remix)
Open innovation in software means Open Source (2011 remix)Open innovation in software means Open Source (2011 remix)
Open innovation in software means Open Source (2011 remix)Bertrand Delacretaz
 
Pyfest Tunisia 2015 - Python & DevOps
Pyfest Tunisia 2015 - Python & DevOpsPyfest Tunisia 2015 - Python & DevOps
Pyfest Tunisia 2015 - Python & DevOpsAhmed Bessifi
 
CloudEngine at Dev8D 2011
CloudEngine at Dev8D 2011CloudEngine at Dev8D 2011
CloudEngine at Dev8D 2011Nick Freear
 
Open Access Week 2017: Life Sciences and Open Sciences - worfkflows and tools
Open Access Week 2017: Life Sciences and Open Sciences - worfkflows and toolsOpen Access Week 2017: Life Sciences and Open Sciences - worfkflows and tools
Open Access Week 2017: Life Sciences and Open Sciences - worfkflows and toolsOpenAIRE
 
Introduction to Orchestration and DevOps with OpenStack
Introduction to Orchestration and DevOps with OpenStackIntroduction to Orchestration and DevOps with OpenStack
Introduction to Orchestration and DevOps with OpenStackAbderrahmane TEKFI
 
Linked services for the Web of Data
Linked services for the Web of DataLinked services for the Web of Data
Linked services for the Web of DataJohn Domingue
 

Semelhante a ROLE Technologies – A possible contribution to Apache Rave (20)

Drupal 8 preview_slideshow
Drupal 8 preview_slideshowDrupal 8 preview_slideshow
Drupal 8 preview_slideshow
 
Vijay Mix Presentation
Vijay Mix PresentationVijay Mix Presentation
Vijay Mix Presentation
 
Developing With Openbravo Rl Eppt
Developing With Openbravo Rl EpptDeveloping With Openbravo Rl Eppt
Developing With Openbravo Rl Eppt
 
Drupal 8 and iOS - an Open Source App
Drupal 8 and iOS - an Open Source AppDrupal 8 and iOS - an Open Source App
Drupal 8 and iOS - an Open Source App
 
An overview of OpenStack for the VMware community
An overview of OpenStack for the VMware communityAn overview of OpenStack for the VMware community
An overview of OpenStack for the VMware community
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open Source
 
What is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna NookellaWhat is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna Nookella
 
Extending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesExtending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with Kubernetes
 
Fedora Overview
Fedora OverviewFedora Overview
Fedora Overview
 
A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to Kubernetes
 
Analyzing data with docker v4
Analyzing data with docker   v4Analyzing data with docker   v4
Analyzing data with docker v4
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open Source
 
Teched India Vijay Interop Track
Teched India Vijay Interop TrackTeched India Vijay Interop Track
Teched India Vijay Interop Track
 
Vicky_Resume
Vicky_ResumeVicky_Resume
Vicky_Resume
 
Open innovation in software means Open Source (2011 remix)
Open innovation in software means Open Source (2011 remix)Open innovation in software means Open Source (2011 remix)
Open innovation in software means Open Source (2011 remix)
 
Pyfest Tunisia 2015 - Python & DevOps
Pyfest Tunisia 2015 - Python & DevOpsPyfest Tunisia 2015 - Python & DevOps
Pyfest Tunisia 2015 - Python & DevOps
 
CloudEngine at Dev8D 2011
CloudEngine at Dev8D 2011CloudEngine at Dev8D 2011
CloudEngine at Dev8D 2011
 
Open Access Week 2017: Life Sciences and Open Sciences - worfkflows and tools
Open Access Week 2017: Life Sciences and Open Sciences - worfkflows and toolsOpen Access Week 2017: Life Sciences and Open Sciences - worfkflows and tools
Open Access Week 2017: Life Sciences and Open Sciences - worfkflows and tools
 
Introduction to Orchestration and DevOps with OpenStack
Introduction to Orchestration and DevOps with OpenStackIntroduction to Orchestration and DevOps with OpenStack
Introduction to Orchestration and DevOps with OpenStack
 
Linked services for the Web of Data
Linked services for the Web of DataLinked services for the Web of Data
Linked services for the Web of Data
 

Último

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Último (20)

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

ROLE Technologies – A possible contribution to Apache Rave

  • 1. ROLE Technologies – A possible contribution to Apache Rave? Dominik Renzel Sten Govaerts Chair of Computer Science 5 Department of Computer Science Advanced 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. © www.role-project.eu
  • 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 © www.role-project.eu
  • 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 © www.role-project.eu
  • 4. ROLE Technologies – How to sustain? ? ? © www.role-project.eu
  • 5. The ROLE Sandbox (role-sandbox.eu)  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? © www.role-project.eu
  • 6. ROLE APIs ROLE APIs How to make your widget communicate in real-time – The ROLE Interwidget Communication (IWC) API © www.role-project.eu
  • 7. ROLE XMPP-based Real-time Communication & Collaboration
  • 8. ROLE Interwidget Communication – Concept © www.role-project.eu
  • 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. 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
  • 11. ROLE IWC – Intent Message Format var intent = { "component": "", "sender":"bob@somewhere.org?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"} };  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“}) © www.role-project.eu
  • 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: 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
  • 13. (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 Low (2 bytes for frame headers per roundtrip) 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
  • 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: 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
  • 15. ROLE APIs ROLE APIs How to make widgets manage Linked Data resources – The OpenApp API © www.role-project.eu
  • 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. OpenApp – Client API openapp.oo.Resource  create  getInfo  del  setInfo  getSubResources  getMetadata  refresh  setMetadata  getRepresentation  setRepresentation Get current space & user as resources var space = new openapp.oo.Resource(openapp.param.space()); 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. 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. OpenApp – Browsing Resources with the Index Page For any resource open index page with <RESOURCE_URI>/:index
  • 20. CfP – ROLE Widget Enchantment Competition © www.role-project.eu
  • 21. Visit the ROLE project page role-project.eu Download the ROLE SDK sourceforge.net/projects/role-project Try the ROLE Sandbox role-sandbox.eu Enter the ROLE Widget Competition role-project.eu/WidgetCompetition Join ROLE on LinkedIn linkedin.com/groups?gid=1590487 Share your widgets in the ROLE Widget Store role-widgetstore.eu/ © www.role-project.eu