CRIWG 2010: Enabling Collaboration transparency


Published on

The conversion of legacy single-user applications to collabo-
rative multi-user tools is a recurrent topic in groupware settings. Many
works tried to achieve collaboration transparency: to enable collabora-
tive features without modifying the source code of the single-user appli-
cation. In this paper, we present a novel blackbox solution that achieves
complete transparency by intercepting user interface libraries and in-
put events. This is the rst blackbox solution constructed on top of
lightweight wrapper technologies (Aspect Oriented Programming) and
unlike previous approaches it provides support to both AWT and Swing
applications. Our solution solves four important problems: event broad-
casting, management of external resources (random numbers), contex-
tual information (telepointers) and transparent launching support. We
validated our approach with several Swing-based and AWT-based tools
demonstrating that our wrapper is generic and imposes very low over-

Published in: Education
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

CRIWG 2010: Enabling Collaboration transparency

  1. 1. Enabling Collaboration Transparency with Computational Reflection Pedro García López Universitat Rovira i Virgili [email_address]
  2. 2. Motivation <ul><li>Neurolearning project: </li></ul><ul><ul><li>Neuro-rehabilitation </li></ul></ul><ul><ul><li>Brain training environment for degenerative diseases designed by neuropsychologists </li></ul></ul><ul><ul><li>Tons of tasks created by partners </li></ul></ul><ul><ul><li>They asked for: </li></ul></ul><ul><ul><ul><li>Synchronous interaction (pacient-therapeut, pacient-pacient) </li></ul></ul></ul><ul><ul><ul><li>Monitoring (store, reply, analyze) </li></ul></ul></ul>
  3. 3. Collaboration Transparency ? Definition : The conversion of legacy single-user applications to collaborative multi-user tools without modifying the source code of the original application. <ul><li>Two Types: </li></ul><ul><ul><li>Blackbox : complete transparency, it works with user interface libraries and input events. </li></ul></ul><ul><ul><li>Whitebox : it requires “code archaeology”, delving into the code to find proper interceptors. </li></ul></ul>
  4. 4. Related Work <ul><li>Most recent works are whitebox approaches: </li></ul><ul><ul><li>Weaving a social fabric into existing software (2005) </li></ul></ul><ul><ul><li>Transparent adaptation of single-user applications for multi-user real-time collaboration (2006) </li></ul></ul><ul><li>Blackbox approaches </li></ul><ul><ul><li>Flexible collaboration transparency: supporting worker independence in replicated application-sharing systems (1999!) </li></ul></ul>
  5. 5. Flexible JAMM (Bo Begole) <ul><li>JAMM (Java Applets made multiuser) </li></ul><ul><ul><li>Replaces UI libraries (Swing) with collaborative UI components </li></ul></ul><ul><ul><li>Not complete transparency, it requires code adaptations: swing and serialization </li></ul></ul><ul><ul><li>No source code </li></ul></ul><ul><li>available </li></ul>
  6. 6. <ul><li>Reflection is the ability of a program to manipulate as data something representing the state of the program during its own execution. There are two aspects of such manipulation: introspection and intercession. </li></ul><ul><ul><li>Introspection is the ability for a program to observe and therefore reason about its own state. </li></ul></ul><ul><ul><li>Intercession is the ability for a program to modify its own execution state or alter its own interpretation or meaning. </li></ul></ul><ul><li>Both aspects require a mechanism for encoding execution state as data: provising such encoding is called reification [Paepke'92] </li></ul>Computational Reflection
  7. 7. <ul><li>AOP (Aspect Oriented Programming) enables the clean separation of cross-cutting concerns thanks to aspect weaving. </li></ul><ul><ul><li>Interception points ( pointcut ) and triggered code ( advice ) </li></ul></ul><ul><ul><li>Systems like AspectJ enable inter-type declarations (changing inheritance tree) </li></ul></ul><ul><ul><li>Compile-time weaving & load-time weaving </li></ul></ul><ul><ul><li>Implies “ Code Archaeology ” </li></ul></ul>Aspect Oriented Programming
  8. 8. <ul><li>Collaboration transparency Vs collaboration awareness </li></ul><ul><li>Blackbox model Vs whitebox model </li></ul><ul><li>Replicated event broadcasting Vs centralized display broadcasting </li></ul><ul><li>Software Wrapper Vs UI Library Replacement </li></ul><ul><li>AOP Vs code adaptations </li></ul>Problem Statement
  9. 9. Best <ul><li>Event Broadcasting </li></ul><ul><li>Contextual information </li></ul><ul><li>External Resources </li></ul><ul><li>Launching support </li></ul><ul><li>Late joining support </li></ul><ul><li>Floor Control </li></ul>Challenges
  10. 10. Best Event Broadcasting <ul><li>It requires accessing the Event Queue to capture input events (Mouse, Keyboard) </li></ul><ul><li>It requires the possibility of cancelling local events to inject them remotely </li></ul><ul><li>It requires the identification of the source of each event </li></ul><ul><li>It requires accessing all the available components </li></ul>UI Introspection !!
  11. 11. Best Contextual Information <ul><li>Collaboration awareness: telepointers, radar views </li></ul><ul><li>It requires: multiple cursors, painting over UI components (context layer) </li></ul><ul><li>Swing solution: Transparent Glasspane Component </li></ul><ul><li>What if the tool is using AWT ? </li></ul>Interception: AOP !
  12. 12. Best External Resources <ul><li>External Resources: Network, Files, Random Numbers </li></ul><ul><li>It requires the interception or replacement of external resources with controlled Proxies. </li></ul>Interception: AOP !
  13. 13. Best Launching Support: AOP + load-time weaving
  14. 14. Best Validation : low overhead
  15. 15. Best Open problems <ul><li>Late Joining support: </li></ul><ul><ul><li>Very difficult to solve in a transparent way </li></ul></ul><ul><ul><li>From the moment, we could not convert variables to transient in Java with AOP </li></ul></ul><ul><ul><li>Event Replay is probably the best solution </li></ul></ul><ul><li>Floor Control: </li></ul><ul><ul><li>Already solved </li></ul></ul><ul><ul><li>The wrapper can control floor control in the process of event injection </li></ul></ul>Open problems
  16. 16. Best Open problems <ul><li>Advanced Computational reflection and metaprogramming are important tools ! </li></ul><ul><ul><li>Allan Kay: Reinventing programming </li></ul></ul><ul><li>Complete Blackbox Collaboration transparency can be achieved combining UI introspection (event queues, component reflection), software interception (AOP) and wrapping support (load-time weaving) </li></ul><ul><li>Unfortunately, most existing environments do not offer such functionalities: Java SWT, C#, Browsers, OS </li></ul><ul><li>And Meta-programming tools are complex (AOP) </li></ul>Conclusions