1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by Brian Cornell For Collaborative Systems Fall 2006.

Slides:



Advertisements
Similar presentations
MATLAB and Scilab Comparison
Advertisements

CIMCO Integration Software Products
310KM M-Commerce Application Selection of Mobile Platform Group 4 Choy Chun Lung, Lawrence Hui Yiu Ting, Eddy Chan Ki Yin, CKY Liu Tsz Ping, Scott.
Crucial Patterns in Service- Oriented Architecture Jaroslav Král, Michal Žemlička Charles University, Prague.
CSE 4939 Alex Riordan Brian Pruitt-Goddard Remote Unit Testing.
Adding scalability to legacy PHP web applications Overview Mario A. Valdez-Ramirez.
What is a Programming Language? The computer operates using binary numbers. The computer only knows about 1’s and 0’s. Humans can also use 1’s and 0’s,
Website design basics QUME Learning objectives Understand the basic elements of a Web page and how it is produced Be aware of different approaches.
ECHO: NASA’s E os C learing HO use Integrating Access to Data Services Michael Burnett Blueprint Technologies, 7799 Leesburg.
API Design CPSC 315 – Programming Studio Fall 2008 Follows Kernighan and Pike, The Practice of Programming and Joshua Bloch’s Library-Centric Software.
Access 2007 Product Review. With its improved interface and interactive design capabilities that do not require deep database knowledge, Microsoft Office.
Remote Unit Testing Brian Pruitt-Goddard Alex Riordan.
Eclipse[10] MIPSinEclipse. Overview Goal: To provide a friendly development environment for CS students programming in MIPS (particularly CS33 at UCLA),
Collaborative Picture Gallery Project Presentation Amos Hersch Aviad Barzilai Supervisor Maxim Gurevitch Lab Chief Eng. Ilana David.
Online Magazine Bryan Ng. Goal of the Project Product Dynamic Content Easy Administration Development Layered Architecture Object Oriented Adaptive to.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Chapter 1 Program Design
Chapter 2 Introduction to Systems Architecture. Chapter goals Discuss the development of automated computing Describe the general capabilities of a computer.
1 Flash Programming Introduction Script Assist. 2 Course Description This course concentrates on the teaching of Actionscript, the programming language.
C++ fundamentals.
THE BASICS OF THE WEB Davison Web Design. Introduction to the Web Main Ideas The Internet is a worldwide network of hardware. The World Wide Web is part.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Client/Server Architectures
LEARN THE QUICK AND EASY WAY! VISUAL QUICKSTART GUIDE HTML and CSS 8th Edition Chapter 2: Working with Webpage Files.
Principles of Programming Chapter 1: Introduction  In this chapter you will learn about:  Overview of Computer Component  Overview of Programming 
Cs413_design01.ppt Web Design vs. GUI Design Designing for the Web: the designer has to give up full control of the design In traditional design, you control.
MASTERS THESIS DEFENSE QBANK A Web-Based Dynamic Problem Authoring Tool BY ANN PAUL ADVISOR: PROFESSOR CLIFF SHAFFER JUNE 2013 Computer Science Department.
PROGRAMMING LANGUAGES The Study of Programming Languages.
DHTML. What is DHTML?  DHTML is the combination of several built-in browser features in fourth generation browsers that enable a web page to be more.
LAYING OUT THE FOUNDATIONS. OUTLINE Analyze the project from a technical point of view Analyze and choose the architecture for your application Decide.
MVC pattern and implementation in java
A Scalable Application Architecture for composing News Portals on the Internet Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta Famagusta.
TEMPLATE DESIGN © GroupNotes: Encouraging Proactive Student Engagement in Lectures through Collaborative Note-taking on.
REFACTORING Lecture 4. Definition Refactoring is a process of changing the internal structure of the program, not affecting its external behavior and.
Michael Margel Dec CSC 2524 SURFBRD. What is SURFBRD? SURFace-Based Remote Desktop Pronounced “Surfboard” A desktop environment that allows users.
Win8 on Intel Programming Course Modern UI HelloWorld in HTML5/JS Cédric Andreolli Intel.
A Spring 2005 CS 426 Senior Project By Group 15 John Studebaker, Justin Gerthoffer, David Colborne CSE Dept., University of Nevada, Reno Advisors (CSE.
Plug-in System for the Xylia Extensible XML Editor Student: Jonathan Milley Supervisor: Dr. T. S. Norvell.
Putting together a complete system Chapter 10. Overview  Design a modest but complete system  A collection of objects work together to solve a problem.
Hyper/J and Concern Manipulation Environment. The need for AOSD tools and development environment AOSD requires a variety of tools Life cycle – support.
Chapter 14 Part II: Architectural Adaptation BY: AARON MCKAY.
Component Technology. Challenges Facing the Software Industry Today’s applications are large & complex – time consuming to develop, difficult and costly.
Chapter 18 Object Database Management Systems. McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved. Outline Motivation for object.
Team Think For You. Outline  Introduction  Process  Requirements Engineering  Architecture  Detailed Design  Testing  Demo  Extensibility  Conclusions.
DemocracyApps, Inc. Community Budget Explorer A Technical Overview.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
Refactoring and Synchronization with the StarTeam Plug-in for Eclipse  Jim Wogulis  Principal Architect, Borland Software Corporation.
Frameworks CompSci 230 S Software Construction.
TOS / TIS Code Architecture Copyright © 2008 Talend. All rights reserved.
Cross Language Clone Analysis Team 2 October 13, 2010.
Copyright 2010, The World Bank Group. All Rights Reserved. Testing and Documentation Part II.
Introduction What is detector simulation? A detector simulation program must provide the possibility of describing accurately an experimental setup (both.
HOW AND WHY TO LOVE CUCUMBER By Dana Scheider. Is This Your Programming Experience?
Java Example Presentation of a Language. Background Conception: Java began as a language for embedded processors in consumer electronics, such as VCR,
Cross Language Clone Analysis Team 2 February 3, 2011.
Chapter 18 Object Database Management Systems. Outline Motivation for object database management Object-oriented principles Architectures for object database.
Program Design. Simple Program Design, Fourth Edition Chapter 1 2 Objectives In this chapter you will be able to: Describe the steps in the program development.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
Genie Pal A Versatile Intelligent Assistant To Help Both Work And Personal life.
DHTML.
CST 1101 Problem Solving Using Computers
Distributed Shared Memory
SURFBRD Michael Margel Dec CSC 2524.
Towards Effective Adaptive User Interfaces Design
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Lecture 1: Multi-tier Architecture Overview
Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta
Windows Ribbon Framework
transforming living spaces
Plug-In Architecture Pattern
Presentation transcript:

1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by Brian Cornell For Collaborative Systems Fall 2006

2 Overview  Much work has been done in researching collaboration  Most applications are still single user  These applications are already complex, adding collaboration would be difficult  Some vendors don't see collaboration as a necessity  We need to bring collaboration to these apps

3 Retrofitting  Three layers of retrofitting  Application Layer  Modify the original application to add collaborative functionality  Operating System Layer  Intercept interactions between the application and operating system (e.g. screen sharing)  Programming Environment Layer  Exploit the API, runtime environment, or plugin system to insert collaboration

4 Motivating Example  Example App: Programming Editor  Plain text files, syntax highlighting, etc  Our “ideal” collaborative solutions would  Allow multiple people to simultaneously use the app  View and edit the text  Allow people to chat about the text  Provide awareness of who is editing what  Provide status of other editors (away, idle, etc)  Have minimal lag/latency  Merge conflicts gracefully  Not change the UI significantly

5 OS Level: Screen Sharing  Floor control introduces an input bottleneck  Users not colocated with the app experience lag  Especially when used over the Internet  Aims for the “being there” feel only  Supports any unmodified application  Cross-platform capabilities  For programming editor  Get simultaneous view, same UI, maybe minimal awareness, asynchronous editing  No chat, status, synchronous editing, merging, etc

6 App Level: Reprogramming  We could implement these features in the programming editor if we are given the source  But we may not have the source code  The editor may be very complex making modification difficult  We must solve all of the problems ourselves and likely not in a reusable/common way

7 Environment Level: Further Split  At the programming environment level let us discuss three approaches  Divide the level into three slices

8 Aspect Oriented Overview  Use aspects to hook into related calls in the original application  From the aspect code (advice), add collaborative information to the UI  Example aspect pseudocode  after(TextLine line) : (target(line) && call(* TextLine.setText(..))) {  Add an icon to the line showing who last changed it based on information from external versioning software  }

9 Aspect Oriented Benefits  Do not need to recompile application  Can modify single objects or whole types of objects using complex rules  Uses the original application data and objects  Allows for access to application specific information  In our programming editor we could get  Rich awareness information  Status  Maybe IM capabilities  UI Shouldn't change significantly

10 Aspect Oriented Downfalls  Requires application to use a runtime environment that supports introspection and hooks  The internal object structure could get prohibitively complex in many applications  Can only provide collaboration assistance as a result of actions in the application  In our editor we don't get  Document synchronization of any kind, maybe not even chat

11 Plugin/extension Overview  Use plugin or extension architecture to add components to single user applications  New components support collaboration, or add collaboration to other parts of the application  For example, perhaps our editor allows us to create additional panes in the window  Content is controlled by a function loaded from a dynamic library  No access to the rest of the application or document

12 Plugin/extension Benefits  Don't need access to the source code  Supports applications written in any language  Application could potentially change, add more features, and plugin may still work or require only incremental update  Application is designed to be extended using plugins/extensions, so proper support/hooks should already be provided and documented  In our editor we could easily add awareness and status of collaborators and chat with a similar UI

13 Plugin/extension Downfalls  Requires the base application to have plugin or extension support  Many applications aren't designed for extension  Plugins can only do what the application's extension architecture supports and allows  Plugins can often only add components, not change the behavior of what is already there  In our editor we can't access the document so  No synchronization  No contextual awareness (can't put an icon in the code)

14 Transparent Adaptation Overview  Translate application actions through API into a sequence of events  Correlate events to sequences of basic operations on a linear document  Apply any consistency techniques to synchronize the operations/model  Translate remote actions back into application actions using API

15 Example Consistency Technique: Operational Transform  Transform future basic operations based on effect of current operation  Example, string “abc”, operations Insert(1, 1, “z”) and Delete(3, 1, “c”)  If insert is applied first and then delete naively, delete will delete the “b” rather than the “c” that it referenced  When insert of length 1 is applied, all other operations are transformed by increasing their position by 1  This is just an example, any technique could be applied to maintain consistency

16 Translating the API  For this to work, the app must have some concept of a linear document  API must have access  Actions in the app are translated into Adapted Operations (AO)  AOs are sent to remote sites and used by consistency technique  Remote AOs are transformed, then applied to the local document using the API

17 Transparent Adaptation Benefits  Single user application is completely unaware of collaboration  Interface of application remains the same  Allows simple collaboration no matter how complex the editor, as long as it can be linearized  Does not require the application to use any specific language/infrastructure  For our programming editor  Synchronous Viewing and Editing  Apply any desired merging system  UI not changed at all

18 Transparent Adaptation Downfalls  Only applicable to editor style applications  Document or model must somehow linearize  Application must provide a rich API  The per-application adaptation could get quite complex  No method for changing the application UI to add collaborative features  For our programming editor  No awareness, chat, status, etc

19 Comparison  We get all of the features of our ideal editor  Just not all from the same technique  Perhaps if we combined all of the techniques  Transparent Adaptation to synchronize the document  Plugin to add chat and collaborators panes  Aspect to insert contextual information from the other two into the actual editor UI  All of the techniques maintain similar UI to the original application  All also require per-app implementation

20 Scale  Plugins and transparent adaptation more applicable to large applications while the aspects seem better suited for small applications  Aspects require introspection and modification based on internal structure of app, could get too complex  Plugins and transparent adaptation require a rich enough API or extension architecture, more likely to be available in a commercial large scale app

21 Conclusions  None of these approaches is completely general or easy to adapt to new applications  There is no “perfect solution” yet  Perhaps we should explore the retrofitting layers in more detail, look for new ideas that may work better  Many applications allow modification without access to source code  If you don't put collaboration in your app, at least put in enough hooks for somebody else to add it for you

22 Questions?  Send further questions/comments to