Thesis Defense: Developing Real-Time Collaborative Editing Using - - PowerPoint PPT Presentation

thesis defense developing real time collaborative editing
SMART_READER_LITE
LIVE PREVIEW

Thesis Defense: Developing Real-Time Collaborative Editing Using - - PowerPoint PPT Presentation

Thesis Defense: Developing Real-Time Collaborative Editing Using Formal Methods Lars Tveito September 9th, 2016 Department of Informatics, University of Oslo Outline Introduction Formal Semantics of Editing Operations Related Work


slide-1
SLIDE 1

Thesis Defense: Developing Real-Time Collaborative Editing Using Formal Methods

Lars Tveito September 9th, 2016

Department of Informatics, University of Oslo

slide-2
SLIDE 2

Outline

Introduction Formal Semantics of Editing Operations Related Work Client-side Specification Server-side Specification Model Checking the Specification Implementation of Shared Buffer Conclusions and Future Work

1

slide-3
SLIDE 3

Introduction

slide-4
SLIDE 4

Introduction

  • A real-time collaborative editor enables multiple users to work on the same

document simultaneously. This thesis is on developing a protocol for enabling real-time collaboration in existing editors. The main problem is handling concurrent edits.

2

slide-5
SLIDE 5

Introduction

  • A real-time collaborative editor enables multiple users to work on the same

document simultaneously.

  • This thesis is on developing a protocol for enabling real-time collaboration

in existing editors. The main problem is handling concurrent edits.

2

slide-6
SLIDE 6

Introduction

  • A real-time collaborative editor enables multiple users to work on the same

document simultaneously.

  • This thesis is on developing a protocol for enabling real-time collaboration

in existing editors.

  • The main problem is handling concurrent edits.

2

slide-7
SLIDE 7

Demo

3

slide-8
SLIDE 8

The Naïve Algorithm

a b

S u0 a ba u1 b ab

Figure 1: A minimal conflict with two clients.

4

slide-9
SLIDE 9

The Naïve Algorithm

O0

  • ins(0, a)

b

S u0 a ba u1 b ab

Figure 1: A minimal conflict with two clients.

4

slide-10
SLIDE 10

The Naïve Algorithm

O0

  • ins(0, a)

O1

  • ins(0, b)

S u0 a ba u1 b ab

Figure 1: A minimal conflict with two clients.

4

slide-11
SLIDE 11

The Naïve Algorithm

O0

  • ins(0, a)

O

O1

  • ins(0, b)

S u0 a ba u1 b ab

Figure 1: A minimal conflict with two clients.

4

slide-12
SLIDE 12

The Naïve Algorithm

O0

  • ins(0, a)

O

O1

  • ins(0, b)

O

1

S u0 a ba u1 b ab

Figure 1: A minimal conflict with two clients.

4

slide-13
SLIDE 13

Goals

Portable Responsive Robust Naïve Sync OT Shared Buffer

  • Easy to implement in an existing

plain text editor. Regular usage of the editor should not be degraded. Gracefully handle all conflicting editing operations.

5

slide-14
SLIDE 14

Goals

Portable Responsive Robust Naïve Sync OT Shared Buffer

  • Easy to implement in an existing

plain text editor.

  • Regular usage of the editor should

not be degraded. Gracefully handle all conflicting editing operations.

5

slide-15
SLIDE 15

Goals

Portable Responsive Robust Naïve Sync OT Shared Buffer

  • Easy to implement in an existing

plain text editor.

  • Regular usage of the editor should

not be degraded.

  • Gracefully handle all conflicting

editing operations.

5

slide-16
SLIDE 16

Goals

Portable Responsive Robust Naïve Sync OT Shared Buffer

  • The Naïve algorithm assumes no

concurrent edits. We could dissallow concurrent edits by using distributed locks. Operational Transformation (OT) [1] is the most widely used solution. Shared Buffer aims to find the intersection of the three characteristics.

5

slide-17
SLIDE 17

Goals

Portable Responsive Robust Naïve Sync OT Shared Buffer

  • The Naïve algorithm assumes no

concurrent edits.

  • We could dissallow concurrent edits

by using distributed locks. Operational Transformation (OT) [1] is the most widely used solution. Shared Buffer aims to find the intersection of the three characteristics.

5

slide-18
SLIDE 18

Goals

Portable Responsive Robust Naïve Sync OT Shared Buffer

  • The Naïve algorithm assumes no

concurrent edits.

  • We could dissallow concurrent edits

by using distributed locks.

  • Operational Transformation (OT) [1]

is the most widely used solution. Shared Buffer aims to find the intersection of the three characteristics.

5

slide-19
SLIDE 19

Goals

Portable Responsive Robust Naïve Sync OT Shared Buffer

  • The Naïve algorithm assumes no

concurrent edits.

  • We could dissallow concurrent edits

by using distributed locks.

  • Operational Transformation (OT) [1]

is the most widely used solution.

  • Shared Buffer aims to find the

intersection of the three characteristics.

5

slide-20
SLIDE 20

Method

  • Strategy: Specify and validate first. Implement after.

We use model checking for validating a formal specification.

6

slide-21
SLIDE 21

Method

  • Strategy: Specify and validate first. Implement after.
  • We use model checking for validating a formal specification.

6

slide-22
SLIDE 22

Contributions

Main contribution:

  • A new protocol for real-time collaborative editing.

In the process we have: formally specified the system in Maude, validated the system via model checking using the Maude LTL model checker, provided a client-side implementation as an extension for Emacs, provided a prototype server-side implementation in Clojure.

7

slide-23
SLIDE 23

Contributions

Main contribution:

  • A new protocol for real-time collaborative editing.

In the process we have:

  • formally specified the system in Maude,

validated the system via model checking using the Maude LTL model checker, provided a client-side implementation as an extension for Emacs, provided a prototype server-side implementation in Clojure.

7

slide-24
SLIDE 24

Contributions

Main contribution:

  • A new protocol for real-time collaborative editing.

In the process we have:

  • formally specified the system in Maude,
  • validated the system via model checking using the Maude LTL model checker,

provided a client-side implementation as an extension for Emacs, provided a prototype server-side implementation in Clojure.

7

slide-25
SLIDE 25

Contributions

Main contribution:

  • A new protocol for real-time collaborative editing.

In the process we have:

  • formally specified the system in Maude,
  • validated the system via model checking using the Maude LTL model checker,
  • provided a client-side implementation as an extension for Emacs,

provided a prototype server-side implementation in Clojure.

7

slide-26
SLIDE 26

Contributions

Main contribution:

  • A new protocol for real-time collaborative editing.

In the process we have:

  • formally specified the system in Maude,
  • validated the system via model checking using the Maude LTL model checker,
  • provided a client-side implementation as an extension for Emacs,
  • provided a prototype server-side implementation in Clojure.

7

slide-27
SLIDE 27

Formal Semantics of Editing Operations

slide-28
SLIDE 28

Operations and Buffers

  • The operations we are concerned with is insertions and deletions, denoted

ins(i, c) and del(i, c) respectively. All c c , and for any two then . A buffer is a 0-indexed string, and constitutes the set of all buffers. All are partial unary operations . The set of operations is closed under composition and forms an algebraic structure . The structure is a monoid, where all elements have an inverse (but is not strictly a group).

8

slide-29
SLIDE 29

Operations and Buffers

  • The operations we are concerned with is insertions and deletions, denoted

ins(i, c) and del(i, c) respectively.

  • All nop, ins(i, c), del(i, c) ∈ O, and for any two Oi, Oj ∈ O then Oj ◦ Oi ∈ O.

A buffer is a 0-indexed string, and constitutes the set of all buffers. All are partial unary operations . The set of operations is closed under composition and forms an algebraic structure . The structure is a monoid, where all elements have an inverse (but is not strictly a group).

8

slide-30
SLIDE 30

Operations and Buffers

  • The operations we are concerned with is insertions and deletions, denoted

ins(i, c) and del(i, c) respectively.

  • All nop, ins(i, c), del(i, c) ∈ O, and for any two Oi, Oj ∈ O then Oj ◦ Oi ∈ O.
  • A buffer is a 0-indexed string, and B constitutes the set of all buffers.

All are partial unary operations . The set of operations is closed under composition and forms an algebraic structure . The structure is a monoid, where all elements have an inverse (but is not strictly a group).

8

slide-31
SLIDE 31

Operations and Buffers

  • The operations we are concerned with is insertions and deletions, denoted

ins(i, c) and del(i, c) respectively.

  • All nop, ins(i, c), del(i, c) ∈ O, and for any two Oi, Oj ∈ O then Oj ◦ Oi ∈ O.
  • A buffer is a 0-indexed string, and B constitutes the set of all buffers.
  • All O ∈ O are partial unary operations O : B → B.

The set of operations is closed under composition and forms an algebraic structure . The structure is a monoid, where all elements have an inverse (but is not strictly a group).

8

slide-32
SLIDE 32

Operations and Buffers

  • The operations we are concerned with is insertions and deletions, denoted

ins(i, c) and del(i, c) respectively.

  • All nop, ins(i, c), del(i, c) ∈ O, and for any two Oi, Oj ∈ O then Oj ◦ Oi ∈ O.
  • A buffer is a 0-indexed string, and B constitutes the set of all buffers.
  • All O ∈ O are partial unary operations O : B → B.
  • The set of operations O is closed under composition and forms an algebraic

structure ⟨O, ◦⟩. The structure is a monoid, where all elements have an inverse (but is not strictly a group).

8

slide-33
SLIDE 33

Operations and Buffers

  • The operations we are concerned with is insertions and deletions, denoted

ins(i, c) and del(i, c) respectively.

  • All nop, ins(i, c), del(i, c) ∈ O, and for any two Oi, Oj ∈ O then Oj ◦ Oi ∈ O.
  • A buffer is a 0-indexed string, and B constitutes the set of all buffers.
  • All O ∈ O are partial unary operations O : B → B.
  • The set of operations O is closed under composition and forms an algebraic

structure ⟨O, ◦⟩.

  • The structure is a monoid, where all elements have an inverse (but is not

strictly a group).

8

slide-34
SLIDE 34

Related Work

slide-35
SLIDE 35

Basics of Operational Transformation

  • The idea of Operational Transformation is to transform concurrent
  • perations.

A function is used to transform an operation wrt. another. Given two operations , then can be understood as: " as if had already been applied".

9

slide-36
SLIDE 36

Basics of Operational Transformation

  • The idea of Operational Transformation is to transform concurrent
  • perations.
  • A function T : O × O → O is used to transform an operation wrt. another.

Given two operations , then can be understood as: " as if had already been applied".

9

slide-37
SLIDE 37

Basics of Operational Transformation

  • The idea of Operational Transformation is to transform concurrent
  • perations.
  • A function T : O × O → O is used to transform an operation wrt. another.
  • Given two operations Oi, Oj ∈ O, then T(Oi, Oj) can be understood as:

"Oi as if Oj had already been applied".

9

slide-38
SLIDE 38

Work on Operational Transformation

  • Pioneering work by Ellis and Gibbs [1].

Work on proving correctness of transformation functions [4, 2, 7, 3]. The Jupiter System leverages a server-client architecture for OT [6]. The GOT algorithm [9] introduces:

inclusion and exclusion transformation functions, a undo/do/redo scheme.

10

slide-39
SLIDE 39

Work on Operational Transformation

  • Pioneering work by Ellis and Gibbs [1].
  • Work on proving correctness of transformation functions [4, 2, 7, 3].

The Jupiter System leverages a server-client architecture for OT [6]. The GOT algorithm [9] introduces:

inclusion and exclusion transformation functions, a undo/do/redo scheme.

10

slide-40
SLIDE 40

Work on Operational Transformation

  • Pioneering work by Ellis and Gibbs [1].
  • Work on proving correctness of transformation functions [4, 2, 7, 3].
  • The Jupiter System leverages a server-client architecture for OT [6].

The GOT algorithm [9] introduces:

inclusion and exclusion transformation functions, a undo/do/redo scheme.

10

slide-41
SLIDE 41

Work on Operational Transformation

  • Pioneering work by Ellis and Gibbs [1].
  • Work on proving correctness of transformation functions [4, 2, 7, 3].
  • The Jupiter System leverages a server-client architecture for OT [6].
  • The GOT algorithm [9] introduces:

inclusion and exclusion transformation functions, a undo/do/redo scheme.

10

slide-42
SLIDE 42

Work on Operational Transformation

  • Pioneering work by Ellis and Gibbs [1].
  • Work on proving correctness of transformation functions [4, 2, 7, 3].
  • The Jupiter System leverages a server-client architecture for OT [6].
  • The GOT algorithm [9] introduces:
  • inclusion and exclusion transformation functions,

a undo/do/redo scheme.

10

slide-43
SLIDE 43

Work on Operational Transformation

  • Pioneering work by Ellis and Gibbs [1].
  • Work on proving correctness of transformation functions [4, 2, 7, 3].
  • The Jupiter System leverages a server-client architecture for OT [6].
  • The GOT algorithm [9] introduces:
  • inclusion and exclusion transformation functions,
  • a undo/do/redo scheme.

10

slide-44
SLIDE 44

Client-side Specification

slide-45
SLIDE 45

Maude Specification

  • Non-deterministic changes in the system is described in terms of rewrite

rules.

A user may insert or delete characters at any time. Messages from the server can arrive at the client at any time.

Equations describe the system's reaction to changes in the system. They express the deterministic behaviour of the system.

Applying operations to a local buffer, etc...

11

slide-46
SLIDE 46

Maude Specification

  • Non-deterministic changes in the system is described in terms of rewrite

rules.

  • A user may insert or delete characters at any time.

Messages from the server can arrive at the client at any time.

Equations describe the system's reaction to changes in the system. They express the deterministic behaviour of the system.

Applying operations to a local buffer, etc...

11

slide-47
SLIDE 47

Maude Specification

  • Non-deterministic changes in the system is described in terms of rewrite

rules.

  • A user may insert or delete characters at any time.
  • Messages from the server can arrive at the client at any time.

Equations describe the system's reaction to changes in the system. They express the deterministic behaviour of the system.

Applying operations to a local buffer, etc...

11

slide-48
SLIDE 48

Maude Specification

  • Non-deterministic changes in the system is described in terms of rewrite

rules.

  • A user may insert or delete characters at any time.
  • Messages from the server can arrive at the client at any time.
  • Equations describe the system's reaction to changes in the system. They

express the deterministic behaviour of the system.

Applying operations to a local buffer, etc...

11

slide-49
SLIDE 49

Maude Specification

  • Non-deterministic changes in the system is described in terms of rewrite

rules.

  • A user may insert or delete characters at any time.
  • Messages from the server can arrive at the client at any time.
  • Equations describe the system's reaction to changes in the system. They

express the deterministic behaviour of the system.

  • Applying operations to a local buffer, etc...

11

slide-50
SLIDE 50

Client-side Algorithm

All clients keep a sequence number and a token.

  • On generation of operation:

Apply the operation. Send the operation, with current seqno and token. Increment sequence number.

On reception of message:

If seqno of the message matches local seqno:

Apply remote operation. Set current token to the token of the message.

Always increment sequence number (regardless of seqno).

12

slide-51
SLIDE 51

Client-side Algorithm

All clients keep a sequence number and a token.

  • On generation of operation:
  • Apply the operation.

Send the operation, with current seqno and token. Increment sequence number.

On reception of message:

If seqno of the message matches local seqno:

Apply remote operation. Set current token to the token of the message.

Always increment sequence number (regardless of seqno).

12

slide-52
SLIDE 52

Client-side Algorithm

All clients keep a sequence number and a token.

  • On generation of operation:
  • Apply the operation.
  • Send the operation, with current seqno and token.

Increment sequence number.

On reception of message:

If seqno of the message matches local seqno:

Apply remote operation. Set current token to the token of the message.

Always increment sequence number (regardless of seqno).

12

slide-53
SLIDE 53

Client-side Algorithm

All clients keep a sequence number and a token.

  • On generation of operation:
  • Apply the operation.
  • Send the operation, with current seqno and token.
  • Increment sequence number.

On reception of message:

If seqno of the message matches local seqno:

Apply remote operation. Set current token to the token of the message.

Always increment sequence number (regardless of seqno).

12

slide-54
SLIDE 54

Client-side Algorithm

All clients keep a sequence number and a token.

  • On generation of operation:
  • Apply the operation.
  • Send the operation, with current seqno and token.
  • Increment sequence number.
  • On reception of message:

If seqno of the message matches local seqno:

Apply remote operation. Set current token to the token of the message.

Always increment sequence number (regardless of seqno).

12

slide-55
SLIDE 55

Client-side Algorithm

All clients keep a sequence number and a token.

  • On generation of operation:
  • Apply the operation.
  • Send the operation, with current seqno and token.
  • Increment sequence number.
  • On reception of message:
  • If seqno of the message matches local seqno:

Apply remote operation. Set current token to the token of the message.

Always increment sequence number (regardless of seqno).

12

slide-56
SLIDE 56

Client-side Algorithm

All clients keep a sequence number and a token.

  • On generation of operation:
  • Apply the operation.
  • Send the operation, with current seqno and token.
  • Increment sequence number.
  • On reception of message:
  • If seqno of the message matches local seqno:
  • Apply remote operation.

Set current token to the token of the message.

Always increment sequence number (regardless of seqno).

12

slide-57
SLIDE 57

Client-side Algorithm

All clients keep a sequence number and a token.

  • On generation of operation:
  • Apply the operation.
  • Send the operation, with current seqno and token.
  • Increment sequence number.
  • On reception of message:
  • If seqno of the message matches local seqno:
  • Apply remote operation.
  • Set current token to the token of the message.

Always increment sequence number (regardless of seqno).

12

slide-58
SLIDE 58

Client-side Algorithm

All clients keep a sequence number and a token.

  • On generation of operation:
  • Apply the operation.
  • Send the operation, with current seqno and token.
  • Increment sequence number.
  • On reception of message:
  • If seqno of the message matches local seqno:
  • Apply remote operation.
  • Set current token to the token of the message.
  • Always increment sequence number (regardless of seqno).

12

slide-59
SLIDE 59

Server-side Specification

slide-60
SLIDE 60

Maude Specification

  • Only one rewrite rule:

the reception of a message.

The equations of the specification expresses the server-side algorithm.

13

slide-61
SLIDE 61

Maude Specification

  • Only one rewrite rule:
  • the reception of a message.

The equations of the specification expresses the server-side algorithm.

13

slide-62
SLIDE 62

Maude Specification

  • Only one rewrite rule:
  • the reception of a message.
  • The equations of the specification expresses the server-side algorithm.

13

slide-63
SLIDE 63

Core Idea

  • 1. The server constructs a history dictating an order of which operations must

be applied.

  • 2. Make all clients conform to the constructed history.

14

slide-64
SLIDE 64

Core Idea

  • 1. The server constructs a history dictating an order of which operations must

be applied.

  • 2. Make all clients conform to the constructed history.

14

slide-65
SLIDE 65

Example

a b

S u0 a ba a u1 b ba

Figure 2: A minimal conflict resolved by Shared Buffer.

15

slide-66
SLIDE 66

Example

O

  • ins(0, a)

b

S u0 a ba a u1 b ba

Figure 2: A minimal conflict resolved by Shared Buffer.

15

slide-67
SLIDE 67

Example

O

  • ins(0, a)

O1

  • ins

( 0, b )

S u0 a ba a u1 b ba

Figure 2: A minimal conflict resolved by Shared Buffer.

15

slide-68
SLIDE 68

Example

O

  • ins(0, a)

n

  • p

O0

O1

  • ins

( 0, b )

S u0 a ba a u1 b × ba

Figure 2: A minimal conflict resolved by Shared Buffer.

15

slide-69
SLIDE 69

Example

O

  • ins(0, a)

n

  • p

O0

O1

  • ins

( 0, b ) O

1

O

1 ◦

O

0 ◦

O−

1 1

S u0 a ba a u1 b × ba

Figure 2: A minimal conflict resolved by Shared Buffer.

15

slide-70
SLIDE 70

Building a History of Events

  • An event ⟨O, t, m, u⟩ consists of an operation, a token, a time of arrival and a

user identifier. The history respects the happened before relation [5]. The history further respects a precedence-relation, prioritizing operations working on larger buffer positions. We use a subset of the transformation functions from [9] to deal with remaining problems.

16

slide-71
SLIDE 71

Building a History of Events

  • An event ⟨O, t, m, u⟩ consists of an operation, a token, a time of arrival and a

user identifier.

  • The history respects the happened before relation [5].

The history further respects a precedence-relation, prioritizing operations working on larger buffer positions. We use a subset of the transformation functions from [9] to deal with remaining problems.

16

slide-72
SLIDE 72

Building a History of Events

  • An event ⟨O, t, m, u⟩ consists of an operation, a token, a time of arrival and a

user identifier.

  • The history respects the happened before relation [5].
  • The history further respects a precedence-relation, prioritizing operations

working on larger buffer positions. We use a subset of the transformation functions from [9] to deal with remaining problems.

16

slide-73
SLIDE 73

Building a History of Events

  • An event ⟨O, t, m, u⟩ consists of an operation, a token, a time of arrival and a

user identifier.

  • The history respects the happened before relation [5].
  • The history further respects a precedence-relation, prioritizing operations

working on larger buffer positions.

  • We use a subset of the transformation functions from [9] to deal with

remaining problems.

16

slide-74
SLIDE 74

Conforming to the History

Two equations can summarize how we construct operations such that clients become consistent with the server's history.

17

slide-75
SLIDE 75

Conforming to the History

makeOp(H′, H, t) = compose(until(H′, t)) ◦ compose(until(H, t))−1

17

slide-76
SLIDE 76

Conforming to the History

makeResponse(O, O′, R, t) = O′ ◦ compose(rejected(R, t)) ◦ O−1

17

slide-77
SLIDE 77

Model Checking the Specification

slide-78
SLIDE 78

Experience

  • "A programmer's approach to model checking".

Invaluable for finding errors in thinking. Working from counter examples was a positive experience.

18

slide-79
SLIDE 79

Experience

  • "A programmer's approach to model checking".
  • Invaluable for finding errors in thinking.

Working from counter examples was a positive experience.

18

slide-80
SLIDE 80

Experience

  • "A programmer's approach to model checking".
  • Invaluable for finding errors in thinking.
  • Working from counter examples was a positive experience.

18

slide-81
SLIDE 81

Results

We cannot report strong results wrt. verification, but are no longer able to produce counter examples. Initial buffer size Clients Operations CPU time 2 3 0.3 seconds 1 2 3 2.4 seconds 1 3 3 22.8 seconds 2 3 3 2 minutes 25 seconds 1 4 3 2 minutes 58 seconds 1 2 4 10 minutes 20 seconds 3 3 3 12 minutes 7 seconds 3 4 3 3 hours 8 minutes 18 seconds 2 2 4 3 hours 41 minutes 25 seconds

19

slide-82
SLIDE 82

Implementation of Shared Buffer

slide-83
SLIDE 83

State of the Implementation

  • Supports multiple concurrent sessions.

Each session supports an arbitrary number of clients. Uses web-friendly technologies, making it easy to include in modern editors. Transformation functions are currently not included in the implementation.

20

slide-84
SLIDE 84

State of the Implementation

  • Supports multiple concurrent sessions.
  • Each session supports an arbitrary number of clients.

Uses web-friendly technologies, making it easy to include in modern editors. Transformation functions are currently not included in the implementation.

20

slide-85
SLIDE 85

State of the Implementation

  • Supports multiple concurrent sessions.
  • Each session supports an arbitrary number of clients.
  • Uses web-friendly technologies, making it easy to include in modern editors.

Transformation functions are currently not included in the implementation.

20

slide-86
SLIDE 86

State of the Implementation

  • Supports multiple concurrent sessions.
  • Each session supports an arbitrary number of clients.
  • Uses web-friendly technologies, making it easy to include in modern editors.
  • Transformation functions are currently not included in the implementation.

20

slide-87
SLIDE 87

Cloc

  • The server implementation is around 300 cloc.
  • The Emacs extension is around 200 cloc.
  • The Python library (for testing) is around 150 cloc.
  • The Ace extension in Clojurescript is around 70 cloc.

21

slide-88
SLIDE 88

Conclusions and Future Work

slide-89
SLIDE 89

Future Work

  • Separating local and global undo, like [8].

Investigate if the GOT algorithm can be moved to the server. Fostering a community around Shared Buffer.

22

slide-90
SLIDE 90

Future Work

  • Separating local and global undo, like [8].
  • Investigate if the GOT algorithm can be moved to the server.

Fostering a community around Shared Buffer.

22

slide-91
SLIDE 91

Future Work

  • Separating local and global undo, like [8].
  • Investigate if the GOT algorithm can be moved to the server.
  • Fostering a community around Shared Buffer.

22

slide-92
SLIDE 92

Conclusion

Portable Responsive Robust Shared Buffer

  • It is portable, the clients are thin.

Generally good responsiveness, but clients do not get intermediate results during a conflict. The system is validated to be eventually consistent, and handles most conflicts gracefully.

23

slide-93
SLIDE 93

Conclusion

Portable Responsive Robust Shared Buffer

  • It is portable, the clients are thin.
  • Generally good responsiveness, but

clients do not get intermediate results during a conflict. The system is validated to be eventually consistent, and handles most conflicts gracefully.

23

slide-94
SLIDE 94

Conclusion

Portable Responsive Robust Shared Buffer

  • It is portable, the clients are thin.
  • Generally good responsiveness, but

clients do not get intermediate results during a conflict.

  • The system is validated to be

eventually consistent, and handles most conflicts gracefully.

23

slide-95
SLIDE 95

Thank you

Questions?

24

slide-96
SLIDE 96

References i

References

Clarence A Ellis and Simon J Gibbs. “Concurrency control in groupware systems”. In: Acm Sigmod Record. Vol. 18. 2. ACM. 1989, pp. 399–407.

25

slide-97
SLIDE 97

References ii

Abdessamad Imine et al. “ECSCW 2003: Proceedings of the Eighth European Conference on Computer Supported Cooperative Work 14--18 September 2003, Helsinki, Finland”. In: ed. by Kari Kuutti et al. Dordrecht: Springer Netherlands, 2003. Chap. Proving Correctness of Transformation Functions in Real-Time Groupware, pp. 277–293. isbn: 978-94-010-0068-0. doi: 10.1007/978-94-010-0068-0_15. url: http://dx.doi.org/10.1007/978-94-010-0068-0_15.

26

slide-98
SLIDE 98

References iii

Abdessamad Imine et al. “Formal design and verification of operational transformation algorithms for copies convergence”. In: Theoretical Computer Science 351.2 (2006). Algebraic Methodology and Software TechnologyThe 10th International Conference on Algebraic Methodology and Software Technology 2004, pp. 167–183. issn: 0304-3975. doi: http://dx.doi.org/10.1016/j.tcs.2005.09.066. url: http://www.sciencedirect.com/science/article/pii/S030439750500616X.

27

slide-99
SLIDE 99

References iv

Abdessamad Imine et al. “Proving Correctness of Transformation Functions Functions in Real-Time Groupware”. In: Proceedings of the Eighth European Conference on Computer Supported Cooperative Work, 14-18 September 2003, Helsinki, Finland. Ed. by Kari Kuutti et al. Springer, 2003, pp. 277–293. url: http://www.ecscw.org/2003/015Imine_ecscw03.pdf. Leslie Lamport. “Time, clocks, and the ordering of events in a distributed system”. In: Communications of the ACM 21.7 (1978), pp. 558–565.

28

slide-100
SLIDE 100

References v

David A. Nichols et al. “High-latency, Low-bandwidth Windowing in the Jupiter Collaboration System”. In: Proceedings of the 8th Annual ACM Symposium on User Interface and Software Technology. UIST '95. Pittsburgh, Pennsylvania, USA: ACM, 1995, pp. 111–120. isbn: 0-89791-709-X. doi: 10.1145/215585.215706. url: http://doi.acm.org/10.1145/215585.215706. Aurel Randolph et al. “On Consistency of Operational Transformation Approach”. In: Proceedings 14th International Workshop on Verification of Infinite-State Systems, Infinity 2012, Paris, France, 27th August 2012. Ed. by Mohamed Faouzi Atig and Ahmed Rezine. Vol. 107. EPTCS. 2012, pp. 45–59. doi: 10.4204/EPTCS.107.5. url: http://dx.doi.org/10.4204/EPTCS.107.5.

29

slide-101
SLIDE 101

References vi

Matthias Ressel, Doris Nitsche-Ruhland, and Rul Gunzenhäuser. “An Integrating, Transformation-Oriented Approach to Concurrency Control and Undo in Group Editors”. In: CSCW '96, Proceedings of the ACM 1996 Conference on Computer Supported Cooperative Work, Boston, MA, USA, November 16-20, 1996. Ed. by Mark S. Ackerman, Gary M. Olson, and Judith S. Olson. ACM, 1996, pp. 288–297. isbn: 0-89791-765-0. doi: 10.1145/240080.240305. url: http://doi.acm.org/10.1145/240080.240305. Chengzheng Sun et al. “Achieving Convergence, Causality Preservation, and Intention Preservation in Real-Time Cooperative Editing Systems”. In: ACM

  • Trans. Comput.-Hum. Interact. 5.1 (1998), pp. 63–108. doi:

10.1145/274444.274447. url: http://doi.acm.org/10.1145/274444.274447.

30