SlideShare a Scribd company logo
1 of 11
Download to read offline
OTLY

A framework for realtime collaboration
Fabio Mancinelli

fabio.mancinelli@xwiki.com
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.

www.ow2.org

Twitter #ow2con
OT Everywhere !
●

NodeJS based – Open Source
●

●

TogetherJS

●

Etherpad

●

●

ShareJS

...a lot more !

Java based – Open Source
●

●

●

Apache Wave
OpenCoWeb

Proprietary
●

Google Drive Realtime API
www.ow2.org

Twitter #ow2con
OTLY
●

Framework targeting the Java world
●

Based on Operational Transformation (OT)

●

Embeddable in Java programs

●

Extensible

●

Simple API

www.ow2.org

Twitter #ow2con
What is OT ?
●

Optimistic concurrency control mechanism

●

Used in high-latency, low bandwidth systems

●

Basic blocks : operations + transformations

www.ow2.org

Twitter #ow2con
What is OT ?
xform(c, s) = (c', s') | c ∘ s' = s ∘ c'
C

S'

S

C'

www.ow2.org

Twitter #ow2con
What is OT ?
xform(c, s) = (c', s') | c ∘ s' = s ∘ c'
C

S'

S

C'

www.ow2.org

Twitter #ow2con
What is OT ?

...

www.ow2.org

Twitter #ow2con
OTLY Architecture
●

Document models
●

●

Bindings
●

●

For supporting different types of operations :
text, rich text, spreadsheets, etc.
For supporting different types of editors :
HTML text area, WYSIWYG editors, etc.

GWT for simplifying code sharing on Javascript
clients and Java server
www.ow2.org

Twitter #ow2con
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) ;

www.ow2.org

Twitter #ow2con
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
www.ow2.org

Twitter #ow2con
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

www.ow2.org

Twitter #ow2con

More Related Content

What's hot

An Introduction to MongoDB
An Introduction to MongoDBAn Introduction to MongoDB
An Introduction to MongoDBChamodi Adikaram
 
A vision about a LibreOffice document manager for Android (FOSDEM 2015)
A vision about a LibreOffice document manager for Android (FOSDEM 2015)A vision about a LibreOffice document manager for Android (FOSDEM 2015)
A vision about a LibreOffice document manager for Android (FOSDEM 2015)Igalia
 
MongoDB.local Austin 2018: PetroCloud: MongoDB for the Industrial IOT Ecosystem
MongoDB.local Austin 2018: PetroCloud: MongoDB for the Industrial IOT EcosystemMongoDB.local Austin 2018: PetroCloud: MongoDB for the Industrial IOT Ecosystem
MongoDB.local Austin 2018: PetroCloud: MongoDB for the Industrial IOT EcosystemMongoDB
 
Vuejs and Web components - current state
Vuejs and Web components - current stateVuejs and Web components - current state
Vuejs and Web components - current stateMikhail Kuznetcov
 
MongoDB World 2018: Tutorial - MongoDB & NodeJS: Zero to Hero in 80 Minutes
MongoDB World 2018: Tutorial - MongoDB & NodeJS: Zero to Hero in 80 MinutesMongoDB World 2018: Tutorial - MongoDB & NodeJS: Zero to Hero in 80 Minutes
MongoDB World 2018: Tutorial - MongoDB & NodeJS: Zero to Hero in 80 MinutesMongoDB
 
Angular js
Angular jsAngular js
Angular jsTed Hsu
 

What's hot (9)

Lesson 09
Lesson 09Lesson 09
Lesson 09
 
An Introduction to MongoDB
An Introduction to MongoDBAn Introduction to MongoDB
An Introduction to MongoDB
 
A vision about a LibreOffice document manager for Android (FOSDEM 2015)
A vision about a LibreOffice document manager for Android (FOSDEM 2015)A vision about a LibreOffice document manager for Android (FOSDEM 2015)
A vision about a LibreOffice document manager for Android (FOSDEM 2015)
 
MongoDB.local Austin 2018: PetroCloud: MongoDB for the Industrial IOT Ecosystem
MongoDB.local Austin 2018: PetroCloud: MongoDB for the Industrial IOT EcosystemMongoDB.local Austin 2018: PetroCloud: MongoDB for the Industrial IOT Ecosystem
MongoDB.local Austin 2018: PetroCloud: MongoDB for the Industrial IOT Ecosystem
 
Vuejs and Web components - current state
Vuejs and Web components - current stateVuejs and Web components - current state
Vuejs and Web components - current state
 
MongoDB World 2018: Tutorial - MongoDB & NodeJS: Zero to Hero in 80 Minutes
MongoDB World 2018: Tutorial - MongoDB & NodeJS: Zero to Hero in 80 MinutesMongoDB World 2018: Tutorial - MongoDB & NodeJS: Zero to Hero in 80 Minutes
MongoDB World 2018: Tutorial - MongoDB & NodeJS: Zero to Hero in 80 Minutes
 
Rethinking The Policy Agent
Rethinking The Policy AgentRethinking The Policy Agent
Rethinking The Policy Agent
 
Lesson 09
Lesson 09Lesson 09
Lesson 09
 
Angular js
Angular jsAngular js
Angular js
 

Similar to OTLY: A framework for realtime collaboration

Node Js Non-blocking or asynchronous Blocking or synchronous.pdf
Node Js Non-blocking or asynchronous  Blocking or synchronous.pdfNode Js Non-blocking or asynchronous  Blocking or synchronous.pdf
Node Js Non-blocking or asynchronous Blocking or synchronous.pdfDarshanaMallick
 
Web Development with AngularJS, NodeJS and ExpressJS
Web Development with AngularJS, NodeJS and ExpressJSWeb Development with AngularJS, NodeJS and ExpressJS
Web Development with AngularJS, NodeJS and ExpressJSJoão Rocha da Silva
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2JooinK
 
An introduction to Node.js application development
An introduction to Node.js application developmentAn introduction to Node.js application development
An introduction to Node.js application developmentshelloidhq
 
JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)jeresig
 
List of Web Technologies used in Web Development
List of Web Technologies used in Web DevelopmentList of Web Technologies used in Web Development
List of Web Technologies used in Web DevelopmentJayapal Reddy Nimmakayala
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...mfrancis
 
Configure python and wsgi
Configure python and wsgiConfigure python and wsgi
Configure python and wsgiSitthykun LY
 
Introduction to mean and mern || Event by DSC UNIDEB
Introduction to mean and mern || Event by DSC UNIDEBIntroduction to mean and mern || Event by DSC UNIDEB
Introduction to mean and mern || Event by DSC UNIDEBMuhammad Raza
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTManuel Carrasco Moñino
 
Django, What is it, Why is it cool?
Django, What is it, Why is it cool?Django, What is it, Why is it cool?
Django, What is it, Why is it cool?Tom Brander
 
Geoscience and Microservices
Geoscience and Microservices Geoscience and Microservices
Geoscience and Microservices Matthew Gerring
 
HTML5 New Features and Resources
HTML5 New Features and ResourcesHTML5 New Features and Resources
HTML5 New Features and ResourcesRon Reiter
 
OpenAPI and gRPC Side by-Side
OpenAPI and gRPC Side by-SideOpenAPI and gRPC Side by-Side
OpenAPI and gRPC Side by-SideTim Burks
 
LF_APIStrat17_OpenAPI and gRPC Side-by-Side
LF_APIStrat17_OpenAPI and gRPC Side-by-SideLF_APIStrat17_OpenAPI and gRPC Side-by-Side
LF_APIStrat17_OpenAPI and gRPC Side-by-SideLF_APIStrat
 
Developing Azure Functions as custom connectors for Flow and Nintex
Developing Azure Functions as custom connectors for Flow and NintexDeveloping Azure Functions as custom connectors for Flow and Nintex
Developing Azure Functions as custom connectors for Flow and NintexDocFluix, LLC
 
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]Leonardo Zanivan
 

Similar to OTLY: A framework for realtime collaboration (20)

Node Js Non-blocking or asynchronous Blocking or synchronous.pdf
Node Js Non-blocking or asynchronous  Blocking or synchronous.pdfNode Js Non-blocking or asynchronous  Blocking or synchronous.pdf
Node Js Non-blocking or asynchronous Blocking or synchronous.pdf
 
Web Development with AngularJS, NodeJS and ExpressJS
Web Development with AngularJS, NodeJS and ExpressJSWeb Development with AngularJS, NodeJS and ExpressJS
Web Development with AngularJS, NodeJS and ExpressJS
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
 
An introduction to Node.js application development
An introduction to Node.js application developmentAn introduction to Node.js application development
An introduction to Node.js application development
 
JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)
 
List of Web Technologies used in Web Development
List of Web Technologies used in Web DevelopmentList of Web Technologies used in Web Development
List of Web Technologies used in Web Development
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
 
Configure python and wsgi
Configure python and wsgiConfigure python and wsgi
Configure python and wsgi
 
Introduction to mean and mern || Event by DSC UNIDEB
Introduction to mean and mern || Event by DSC UNIDEBIntroduction to mean and mern || Event by DSC UNIDEB
Introduction to mean and mern || Event by DSC UNIDEB
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
Django, What is it, Why is it cool?
Django, What is it, Why is it cool?Django, What is it, Why is it cool?
Django, What is it, Why is it cool?
 
Dust.js
Dust.jsDust.js
Dust.js
 
Geoscience and Microservices
Geoscience and Microservices Geoscience and Microservices
Geoscience and Microservices
 
Nodejs
NodejsNodejs
Nodejs
 
HTML5 New Features and Resources
HTML5 New Features and ResourcesHTML5 New Features and Resources
HTML5 New Features and Resources
 
OpenAPI and gRPC Side by-Side
OpenAPI and gRPC Side by-SideOpenAPI and gRPC Side by-Side
OpenAPI and gRPC Side by-Side
 
LF_APIStrat17_OpenAPI and gRPC Side-by-Side
LF_APIStrat17_OpenAPI and gRPC Side-by-SideLF_APIStrat17_OpenAPI and gRPC Side-by-Side
LF_APIStrat17_OpenAPI and gRPC Side-by-Side
 
Developing Azure Functions as custom connectors for Flow and Nintex
Developing Azure Functions as custom connectors for Flow and NintexDeveloping Azure Functions as custom connectors for Flow and Nintex
Developing Azure Functions as custom connectors for Flow and Nintex
 
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
 

More from XWiki

Applications Open Source pour Entreprise
Applications Open Source pour EntrepriseApplications Open Source pour Entreprise
Applications Open Source pour EntrepriseXWiki
 
Livre blanc : gestion collaborative de contenus dans le secteur public
Livre blanc : gestion collaborative de contenus dans le secteur publicLivre blanc : gestion collaborative de contenus dans le secteur public
Livre blanc : gestion collaborative de contenus dans le secteur publicXWiki
 
Livre blanc : gestion collaborative de contenus dans le secteur public
Livre blanc : gestion collaborative de contenus dans le secteur publicLivre blanc : gestion collaborative de contenus dans le secteur public
Livre blanc : gestion collaborative de contenus dans le secteur publicXWiki
 
L'intranet collaboratif Aelia : l'étude de cas
L'intranet collaboratif Aelia : l'étude de casL'intranet collaboratif Aelia : l'étude de cas
L'intranet collaboratif Aelia : l'étude de casXWiki
 
An collaborative intranet: the Aelia case study
An collaborative intranet: the Aelia case studyAn collaborative intranet: the Aelia case study
An collaborative intranet: the Aelia case studyXWiki
 
La base de connaissance de la FNAB
La base de connaissance de la FNABLa base de connaissance de la FNAB
La base de connaissance de la FNABXWiki
 
Collaborative Watch: the AFP case study
Collaborative Watch: the AFP case studyCollaborative Watch: the AFP case study
Collaborative Watch: the AFP case studyXWiki
 
Une solution de veille partagée et collaborative : le cas de l'AFP
Une solution de veille partagée et collaborative : le cas de l'AFPUne solution de veille partagée et collaborative : le cas de l'AFP
Une solution de veille partagée et collaborative : le cas de l'AFPXWiki
 
Créer ses applications métier : le cas DCNS
Créer ses applications métier : le cas DCNSCréer ses applications métier : le cas DCNS
Créer ses applications métier : le cas DCNSXWiki
 
La base de connaissances du CNFPT
La base de connaissances du CNFPTLa base de connaissances du CNFPT
La base de connaissances du CNFPTXWiki
 
Documentation of an application revamping program: the Capgemini case study
Documentation of an application revamping program: the Capgemini case studyDocumentation of an application revamping program: the Capgemini case study
Documentation of an application revamping program: the Capgemini case studyXWiki
 
Documentation d'un programme de rénovation applicative : le cas Capgemini
Documentation d'un programme de rénovation applicative : le cas CapgeminiDocumentation d'un programme de rénovation applicative : le cas Capgemini
Documentation d'un programme de rénovation applicative : le cas CapgeminiXWiki
 
Base de connaissance : le cas CAPHC
Base de connaissance : le cas CAPHCBase de connaissance : le cas CAPHC
Base de connaissance : le cas CAPHCXWiki
 
Knowledge Exchange Network: the CAPHC use case
Knowledge Exchange Network: the CAPHC use caseKnowledge Exchange Network: the CAPHC use case
Knowledge Exchange Network: the CAPHC use caseXWiki
 
La plateforme IWA : retour d'expérience
La plateforme IWA : retour d'expérienceLa plateforme IWA : retour d'expérience
La plateforme IWA : retour d'expérienceXWiki
 
How DCNS creates its own business applications
How DCNS creates its own business applicationsHow DCNS creates its own business applications
How DCNS creates its own business applicationsXWiki
 
Ressources pédagogiques en ligne
Ressources pédagogiques en ligneRessources pédagogiques en ligne
Ressources pédagogiques en ligneXWiki
 
L'intranet collaboratif Fidelia Assistance
L'intranet collaboratif Fidelia AssistanceL'intranet collaboratif Fidelia Assistance
L'intranet collaboratif Fidelia AssistanceXWiki
 
Documentation produit : le cas Easyvista
Documentation produit : le cas EasyvistaDocumentation produit : le cas Easyvista
Documentation produit : le cas EasyvistaXWiki
 
Documentation and Knowledge management: the EasyVista's use case
Documentation and Knowledge management: the EasyVista's use caseDocumentation and Knowledge management: the EasyVista's use case
Documentation and Knowledge management: the EasyVista's use caseXWiki
 

More from XWiki (20)

Applications Open Source pour Entreprise
Applications Open Source pour EntrepriseApplications Open Source pour Entreprise
Applications Open Source pour Entreprise
 
Livre blanc : gestion collaborative de contenus dans le secteur public
Livre blanc : gestion collaborative de contenus dans le secteur publicLivre blanc : gestion collaborative de contenus dans le secteur public
Livre blanc : gestion collaborative de contenus dans le secteur public
 
Livre blanc : gestion collaborative de contenus dans le secteur public
Livre blanc : gestion collaborative de contenus dans le secteur publicLivre blanc : gestion collaborative de contenus dans le secteur public
Livre blanc : gestion collaborative de contenus dans le secteur public
 
L'intranet collaboratif Aelia : l'étude de cas
L'intranet collaboratif Aelia : l'étude de casL'intranet collaboratif Aelia : l'étude de cas
L'intranet collaboratif Aelia : l'étude de cas
 
An collaborative intranet: the Aelia case study
An collaborative intranet: the Aelia case studyAn collaborative intranet: the Aelia case study
An collaborative intranet: the Aelia case study
 
La base de connaissance de la FNAB
La base de connaissance de la FNABLa base de connaissance de la FNAB
La base de connaissance de la FNAB
 
Collaborative Watch: the AFP case study
Collaborative Watch: the AFP case studyCollaborative Watch: the AFP case study
Collaborative Watch: the AFP case study
 
Une solution de veille partagée et collaborative : le cas de l'AFP
Une solution de veille partagée et collaborative : le cas de l'AFPUne solution de veille partagée et collaborative : le cas de l'AFP
Une solution de veille partagée et collaborative : le cas de l'AFP
 
Créer ses applications métier : le cas DCNS
Créer ses applications métier : le cas DCNSCréer ses applications métier : le cas DCNS
Créer ses applications métier : le cas DCNS
 
La base de connaissances du CNFPT
La base de connaissances du CNFPTLa base de connaissances du CNFPT
La base de connaissances du CNFPT
 
Documentation of an application revamping program: the Capgemini case study
Documentation of an application revamping program: the Capgemini case studyDocumentation of an application revamping program: the Capgemini case study
Documentation of an application revamping program: the Capgemini case study
 
Documentation d'un programme de rénovation applicative : le cas Capgemini
Documentation d'un programme de rénovation applicative : le cas CapgeminiDocumentation d'un programme de rénovation applicative : le cas Capgemini
Documentation d'un programme de rénovation applicative : le cas Capgemini
 
Base de connaissance : le cas CAPHC
Base de connaissance : le cas CAPHCBase de connaissance : le cas CAPHC
Base de connaissance : le cas CAPHC
 
Knowledge Exchange Network: the CAPHC use case
Knowledge Exchange Network: the CAPHC use caseKnowledge Exchange Network: the CAPHC use case
Knowledge Exchange Network: the CAPHC use case
 
La plateforme IWA : retour d'expérience
La plateforme IWA : retour d'expérienceLa plateforme IWA : retour d'expérience
La plateforme IWA : retour d'expérience
 
How DCNS creates its own business applications
How DCNS creates its own business applicationsHow DCNS creates its own business applications
How DCNS creates its own business applications
 
Ressources pédagogiques en ligne
Ressources pédagogiques en ligneRessources pédagogiques en ligne
Ressources pédagogiques en ligne
 
L'intranet collaboratif Fidelia Assistance
L'intranet collaboratif Fidelia AssistanceL'intranet collaboratif Fidelia Assistance
L'intranet collaboratif Fidelia Assistance
 
Documentation produit : le cas Easyvista
Documentation produit : le cas EasyvistaDocumentation produit : le cas Easyvista
Documentation produit : le cas Easyvista
 
Documentation and Knowledge management: the EasyVista's use case
Documentation and Knowledge management: the EasyVista's use caseDocumentation and Knowledge management: the EasyVista's use case
Documentation and Knowledge management: the EasyVista's use case
 

Recently uploaded

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 

Recently uploaded (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

OTLY: A framework for realtime collaboration

  • 1. OTLY A framework for realtime collaboration Fabio Mancinelli fabio.mancinelli@xwiki.com 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. www.ow2.org Twitter #ow2con
  • 2. OT Everywhere ! ● NodeJS based – Open Source ● ● TogetherJS ● Etherpad ● ● ShareJS ...a lot more ! Java based – Open Source ● ● ● Apache Wave OpenCoWeb Proprietary ● Google Drive Realtime API www.ow2.org Twitter #ow2con
  • 3. OTLY ● Framework targeting the Java world ● Based on Operational Transformation (OT) ● Embeddable in Java programs ● Extensible ● Simple API www.ow2.org Twitter #ow2con
  • 4. What is OT ? ● Optimistic concurrency control mechanism ● Used in high-latency, low bandwidth systems ● Basic blocks : operations + transformations www.ow2.org Twitter #ow2con
  • 5. What is OT ? xform(c, s) = (c', s') | c ∘ s' = s ∘ c' C S' S C' www.ow2.org Twitter #ow2con
  • 6. What is OT ? xform(c, s) = (c', s') | c ∘ s' = s ∘ c' C S' S C' www.ow2.org Twitter #ow2con
  • 8. OTLY Architecture ● Document models ● ● Bindings ● ● For supporting different types of operations : text, rich text, spreadsheets, etc. For supporting different types of editors : HTML text area, WYSIWYG editors, etc. GWT for simplifying code sharing on Javascript clients and Java server www.ow2.org Twitter #ow2con
  • 9. 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) ; www.ow2.org Twitter #ow2con
  • 10. 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 www.ow2.org Twitter #ow2con
  • 11. 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 www.ow2.org Twitter #ow2con