otly: a framework for realtime collaboration

11

Click here to load reader

Upload: xwiki

Post on 28-Nov-2014

851 views

Category:

Technology


5 download

DESCRIPTION

Operational Transformation is a technique for synchronizing changes to a document among different clients. It is widely used in different technologies both open and closed source (e.g., ShareJS, Apache Wave and Google Drive Realtime API) OTLY is a framework based on Operational Transformation that is being developed by XWiki SAS as a refactoring of its realtime editor. OTLY aims at providing a common foundation for contributing collaborative document models and binding to widely used editors. OTLY is targeting both Java and Javascript for the client side, and Java on the server side.

TRANSCRIPT

Page 1: OTLY: A framework for realtime collaboration

Twitter #ow2conwww.ow2.org

OTLYA framework for realtime collaborationFabio Mancinelli

[email protected]

Operational Transformation is a technique for synchronizing changes to a document among different clients. It is widely used in different technologies both open and closed source (e.g., ShareJS, Apache Wave and Google Drive Realtime API) OTLY is a framework based on Operational Transformation that is being developed by XWiki SAS as a refactoring of its realtime editor. OTLY aims at providing a common foundation for contributing collaborative document models and binding to widely used editors. OTLY is targeting both Java and Javascript for the client side, and Java on the server side.

Page 2: OTLY: A framework for realtime collaboration

Twitter #ow2conwww.ow2.org

OT Everywhere !● NodeJS based – Open Source

● ShareJS● TogetherJS ● Etherpad● ...a lot more !

● Java based – Open Source

● Apache Wave● OpenCoWeb

● Proprietary

● Google Drive Realtime API

Page 3: OTLY: A framework for realtime collaboration

Twitter #ow2conwww.ow2.org

OTLY

● Framework targeting the Java world● Based on Operational Transformation (OT)● Embeddable in Java programs● Extensible● Simple API

Page 4: OTLY: A framework for realtime collaboration

Twitter #ow2conwww.ow2.org

What is OT ?

● Optimistic concurrency control mechanism● Used in high-latency, low bandwidth systems● Basic blocks : operations + transformations

Page 5: OTLY: A framework for realtime collaboration

Twitter #ow2conwww.ow2.org

What is OT ?

xform(c, s) = (c', s') | c s' = s c'∘ ∘

C S

S' C'

Page 6: OTLY: A framework for realtime collaboration

Twitter #ow2conwww.ow2.org

What is OT ?

xform(c, s) = (c', s') | c s' = s c'∘ ∘

C S

S' C'

Page 7: OTLY: A framework for realtime collaboration

Twitter #ow2conwww.ow2.org

What is OT ?

...

Page 8: OTLY: A framework for realtime collaboration

Twitter #ow2conwww.ow2.org

OTLY Architecture

● Document models● For supporting different types of operations :

text, rich text, spreadsheets, etc.● Bindings

● For supporting different types of editors : HTML text area, WYSIWYG editors, etc.

● GWT for simplifying code sharing on Javascript clients and Java server

Page 9: OTLY: A framework for realtime collaboration

Twitter #ow2conwww.ow2.org

OTLY API

● Simple API (inspired by ShareJS)● Client side (JS)

– otly = new otly.Otly() ;pad = document.getElementById("pad")otly.open("simpletext", "foo", function(doc) {

doc.bind(pad, "textarea") ;}) ;

● Client side (Java)– JFrame frame = ...

otly = new Otly() ;DocumentModel documentModel = otly.open("simpletext", "foo") ;documentModel.bind(frame) ;

Page 10: OTLY: A framework for realtime collaboration

Twitter #ow2conwww.ow2.org

Conclusion● Extensible architecture

● Helps to build a community that provides new document models and bindings

● We are working on a reference implementation that will work with the XWiki WYSIWYG + other popular simple text editors and will be integrated in XWiki

● Issues● OT is complex to get it right● GWT is very heavyweight

Page 11: OTLY: A framework for realtime collaboration

Twitter #ow2conwww.ow2.org

Acknowledgements

● Some of the work has been done in the context of the RESILIENCE Project

● OTLY is based on the initial work done in the context of the Wiki3.0 project by the INRIA Score Team and XWiki SAS