+ All Categories
Home > Documents > 1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by...

1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by...

Date post: 30-Jan-2016
Category:
View: 215 times
Download: 0 times
Share this document with a friend
22
1 1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by Brian Cornell For Collaborative Systems Fall 2006
Transcript
Page 1: 1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by Brian Cornell For Collaborative Systems Fall 2006.

11

Introducing Collaboration to Single User Applications

A Survey and Analysis of Recent Workby Brian Cornell

For Collaborative SystemsFall 2006

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

22

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

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

33

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

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

44

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

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

55

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

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

66

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

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

77

Environment Level: Further Split

At the programming environment level let us discuss three approaches

Divide the level into three slices

OS

Layer

Transparent Adaptation (Shared Model)

Aspect Oriented Programming

Plugins or ExtensionsApp

Layer

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

88

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 }

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

99

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

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

1010

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

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

1111

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

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

1212

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

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

1313

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)

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

1414

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

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

1515

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

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

1616

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

Application

API

AOs

Network

Consistency

Technique

Document

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

1717

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

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

1818

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

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

1919

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

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

2020

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

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

2121

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

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

2222

Questions?

Send further questions/comments to [email protected]


Recommended