SlideShare a Scribd company logo
Real-Time
Collaborative Editing
With CRDTs
InfoQ.com: News & Community Site
• Over 1,000,000 software developers, architects and CTOs read the site world-
wide every month
• 250,000 senior developers subscribe to our weekly newsletter
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• 2 dedicated podcast channels: The InfoQ Podcast, with a focus on
Architecture and The Engineering Culture Podcast, with a focus on building
• 96 deep dives on innovative topics packed as downloadable emags and
minibooks
• Over 40 new content items per week
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
crdt-tachyon-collaborative-editing
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon San Francisco
www.qconsf.com
Real-Time
Collaborative Editing
With CRDTs
Teletype for Atom
Make it as easy to code together
as it is to code alone.
Boulder to Gambettola - 8795 km
~30ms at the speed of light
a b c a b c
a b c a b c
insert(x, 1)
a x b c
insert(y, 2)
a b y c
a b c a b c
insert(x, 1)
a x b c
insert(y, 2)
a b y c
insert(x, 1)
a x b y c
a b c a b c
insert(x, 1)
a x b c
insert(y, 2)
a b y c
insert(x, 1)
a x b y c
insert(y, 2)
a x y b c
a b c a b c
insert(x, 1)
a x b c
insert(y, 2)
a b y c
insert(x, 1)
a x b y c
insert(y, 2)
a x y b c
a x y b c != a x b y c
0 0 a b c
0 0 a b c
00
01
insert(x, 1)
a x b c
0 0 a b c
00
01
insert(x, 1)
a x b c
00
insert(y, 2)00
insert(y, 2)0 0
a b c
0 0 a b c
00
01
insert(x, 1)
a x b c
00
insert(y, 2)00
insert(y, 2)0 0
a b c
insert(x, 1)insert(y, 2)
✨
01
✨
✨
insert(y, 3)
IT( , )
0 0 a b c
00
01
insert(x, 1)
a x b c
00
insert(y, 2)00
insert(y, 2)0 0
a b c
insert(x, 1)insert(y, 2)
✨
01
✨
✨
insert(y, 3)
IT( , )
11
01 insert(y, 3)
a x b y c
Decentralized
Multi-User Undo
String-Wise Operations
Consistently Low Overhead
"Unfortunately, implementing OT sucks. There's a
million algorithms with different tradeoffs, mostly
trapped in academic papers. The algorithms are really
hard and time consuming to implement correctly. Wave
took two years to write and if we rewrote it today, it
would take almost as long to write a second time.”
– Google Wave Engineer
a b c a b c
a b c a b c
insert(x, ✨)
a x b c
a b c a b c
insert(x, ✨)
a x b c
insert(y, ")
a b y c
a b c a b c
insert(x, ✨)
a x b c
insert(y, ")
a b y c
insert(x, ✨)
a x b y c
a b c a b c
insert(x, ✨)
a x b c
insert(y, ")
a b y c
insert(x, ✨)
a x b y c
insert(y, ")
a x b y c
a b c a b c
insert(x, ✨)
a x b c
insert(y, ")
a b y c
insert(x, ✨)
a x b y c
insert(y, ")
a x b y c
a x b y c a x b y c
CRDTs
Conflict-Free Replicated Data Types
Data Consistency for P2P Collaborative Editing
Gérald Oster
Institute for Information Systems
ETH Zurich
osterg@inf.ethz.ch
Pascal Urso, Pascal Molli, Abdessamad Imine
Université Henri Poincaré, Nancy 1
LORIA
{urso,molli,imine}@loria.fr
ABSTRACT
Peer-to-peer (P2P) networks are very efficient for distribut-
ing content. We want to use this potential to allow not only
distribution but collaborative editing of this content. Exist-
ing collaborative editing systems are centralised or depend
on the number of sites. Such systems cannot scale when
deployed on P2P networks. In this paper, we propose a
new model for building a collaborative editing system. This
model is fully decentralised and does not depend on the
number of sites.
Categories and Subject Descriptors
C.2.4 [Computer-Communication Networks]: Distrib-
uted Systems—Distributed applications; H.5.3 [Informa-
tion Interfaces and Presentation]: Group and Organiza-
tion Interfaces—Collaborative computing, theory and models
General Terms
Algorithms, Design, Human Factors
Keywords
CSCW, Collaborative editing, Optimistic replication, Con-
currency control
1. INTRODUCTION
Currently, peer-to-peer systems demonstrated how they
can ensure scalable content distribution. In their survey [4],
Androutsellis-Theotokis et al. wrote:
“Peer-to-peer content distribution systems rely
on the replication of content on more than one
node for improving the availability of content,
enhancing performance and resisting censorship
attempts.”
We want to reuse these characteristics not only for content
distribution but also for content editing. Currently, P2P
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that copies
bear this notice and the full citation on the first page. To copy otherwise, to
republish, to post on servers or to redistribute to lists, requires prior specific
permission and/or a fee.
CSCW’06, November 4–8, 2006, Banff, Alberta, Canada.
Copyright 2006 ACM 1-59593-249-6/06/0011 ...$5.00.
networks mainly distribute immutable contents, we want to
distribute updates on this content and manage collabora-
tive editing on it. We are convinced that if we can deploy a
group editor framework on a P2P network, we open the way
for P2P content editing. It means that all existing collab-
orative editing applications such as CVS and Wiki can be
redeployed on P2P networks and take advantage of availabil-
ity improvements, performance enhancements and censor-
ship resistance of P2P networks. For instance, Wikipedia [2]
is currently a collaborative encyclopædia that has collected
more than 4,700,000 articles in more than 200 languages.
Wikipedia has more than 50 million of page requests per day.
200,000 changes are made every day [1]. However, Wikipedia
needs a costly infrastructure to handle the load. Hundreds
of thousands of dollars are spent every year to fund the in-
frastructure. A P2P massive collaborative editing system
would allow to distribute the service, tolerate failures, im-
prove performances, resist to censorship and share the cost
of the underlying infrastructure.
Collaborative editing systems such as CVS or Wikis are
currently centralised and cannot be adapted to peer-to-peer
networks. Collaborative systems based on the operational
transformation approach [7, 23] can be decentralised.
However, existing algorithms such as GOTO [23], ABT[16]
and SOCT2 [21] rely on vector clocks to detect concurrent
operations. OT approach supposes that each operation is
immediately executed locally, stored in a local log and then
broadcast to other sites in order to be re-executed and stored
in their logs. A vector clocks is associated to each opera-
tion. A vector clocks [17] is an array of logical clocks, one
clock per site. It is used to detect the happened-before rela-
tionship and therefore the concurrency between operation.
It causes no problem if the number of sites is fixed and low
but if the number of sites grows, the size of the vector clocks
is unbounded. Thus, messages exchanged between sites will
grow as well as the size of local operation. Also, the time ef-
ficiency of operation on vectors clocks will decline as vectors
clocks grow. Clearly, vectors clocks prevent these algorithms
to scale and represent a serious bottleneck for their deploy-
ment on P2P networks.
In this paper we propose a new model called WOOT for
building group editors that is suitable for dynamic P2P sys-
tems. Compared to existing decentralised group editor mod-
els, the number of sites involved in group editing is not a
variable.
The remainder of this paper is organised as follows: Sec-
tion 2 describes the WOOT approach and details the con-
sistency model. Section 3 presents a formal definition of
WOOT
2006
Without
Operational
Transformation
a b c
1:1 1:2 1:3
globally unique id
site-id:sequence-number
a b c
1:1 1:2 1:3
1 1:2
2:1
1:1
a b c
1:1 1:2 1:3
1 1:2
2:1
1:1 1:2
3:1
1:32
a b c
1:1 1:2 1:3
1 1:2
2:1
1:1 1:2
3:1
1:32
4:1
1:2 3 3:1
1:31:21:1
cba
1:31:21:1
cba
1:31:21:1
cba
1:31:21:1
cba
1:1
2:1
1:21 2 1:3
3:1
1:2
2
3:1 1:31:21:1
cba
2:1
1
1:31:21:1
cba
1:31:21:1
cba
1:31:21:1
cba
1:1
2:1
1:21 2 1:3
3:1
1:2
2
3:1 1:31:21:1
cba
2:1
1
1:31:21:1
cba
1:1
2:1
1:21
2
3:12:1
1
1:31:21:1
cba
1:31:21:1
cba
1:31:21:1
cba
1:1
2:1
1:21 2 1:3
3:1
1:2
2
3:1 1:31:21:1
cba
2:1
1
1:31:21:1
cba
1:1
2:1
1:21
2
3:12:1
1
1:31:21:1
cba
1:2
3:1
1:32
a b c
1:1 1:2 1:3
1
2:1 3:1
2
1:21:1
ba
1:21:1
ba
1 1:2
1:1
1:1
1:21:1
ba
1 1:2
1:1
1:1 2 1:2
2:1
1:1
1:21:1
ba
1 1:2
1:1
1:1 2 1:2
2:1
1:1 1:1
3:1
1:23
2a b
2a b
3
2a b
3
2a b3
2a b3
1
2a b3
1
2a b31
a b a b a b
a b a b a b
a 2 b
a≺2≺b
a 1 b
a≺1≺b
a b a b a b
a 2 b
a≺2≺b
a 1 b
a≺1≺b
a 1 b
a≺1≺b
a b a b a b
a 2 b
a≺2≺b
a 1 b
a≺1≺b
a 1 b
a≺1≺b
a 3 1 b
a≺3≺1
a b a b a b
a 2 b
a≺2≺b
a 1 b
a≺1≺b
a 1 b
a≺1≺b
a 3 1 b
a≺3≺1
a≺2≺b
1
2
a b
3
a b a b a b
a 2 b
a≺2≺b
a 1 b
a≺1≺b
a 1 b
a≺1≺b
a 3 1 b
a≺3≺1
a≺2≺b
a b a b a b
a 2 b
a≺2≺b
a 1 b
a≺1≺b
a 1 b
a≺1≺b
a 3 1 b
a≺3≺1
a≺2≺b
a 3 1 2 b
a b a b a b
a 2 b
a≺2≺b
a 1 b
a≺1≺b
a 1 b
a≺1≺b
a 3 1 b
a≺3≺1
a≺2≺b
a 2 3 1 b
a b a b a b
a 2 b
a≺2≺b
a 1 b
a≺1≺b
a 1 b
a≺1≺b
a 3 1 b
a≺3≺1
a≺2≺b
a 2 3 1 b
a 1 2 b
a≺2≺b
a b a b a b
a 2 b
a≺2≺b
a 1 b
a≺1≺b
a 1 b
a≺1≺b
a 3 1 b
a≺3≺1
a≺2≺b
a 2 3 1 b
a 1 2 b
a≺2≺b
a≺3≺1
a b a b a b
a 2 b
a≺2≺b
a 1 b
a≺1≺b
a 1 b
a≺1≺b
a 3 1 b
a≺3≺1
a≺2≺b
a 2 3 1 b
a 1 2 b
a≺2≺b
a≺3≺1
a 3 1 2 b
1
2
a b
3
1
2
a b
3✕
1
2
a b
3✕
a b a b a b
a 1 b
a≺1≺b1 1 a≺2≺b
a 2 b
a b a b a b
a 1 b
a≺1≺b1 1 a≺2≺b
a 2 b
1
a≺3≺12
a 1 b
a≺1≺b
a 3 1 b
a b a b a b
a 1 b
a≺1≺b1 1 a≺2≺b
a 2 b
1
a≺3≺12
a 1 b
a≺1≺b
a 3 1 b
1 a≺2≺b
a b a b a b
a 1 b
a≺1≺b1 1 a≺2≺b
a 2 b
1
a≺3≺12
a 1 b
a≺1≺b
a 3 1 b
1 a≺2≺b
a 3 1 2 b
a b a b a b
a 1 b
a≺1≺b1 1 a≺2≺b
a 2 b
1
a≺3≺12
a 1 b
a≺1≺b
a 3 1 b
1 a≺2≺b
a 3 1 2 b
a≺2≺b1
a 1 2 b
a b a b a b
a 1 b
a≺1≺b1 1 a≺2≺b
a 2 b
1
a≺3≺12
a 1 b
a≺1≺b
a 3 1 b
1 a≺2≺b
a 3 1 2 b
a≺2≺b1
a 1 2 b
2 a≺3≺1
a b a b a b
a 1 b
a≺1≺b1 1 a≺2≺b
a 2 b
1
a≺3≺12
a 1 b
a≺1≺b
a 3 1 b
1 a≺2≺b
a 3 1 2 b
a≺2≺b1
a 1 2 b
2 a≺3≺1
a 3 1 2 b
String-Wise
WOOT
2014
START
1:1
END
0:0 0:1
hello world
START
1:1
END
0:0 0:1
hello world
1:1, 51:1, 5
2:1
, there
START
1:1
END
0:0 0:1
hello world
1:1, 51:1, 5
2:1
, there !
3:1
1:1, 11 0:1, 0
START
1:1
END
0:0 0:1
hello world
1:1, 51:1, 5
2:1
, there !
3:1
1:1, 11 0:1, 0
START
1:1, 0
END
0:10:0 2:1
3:1
1:1, 5
hello, there world!
START
1:1
END
0:0 0:1
hello world
1:1, 51:1, 5
2:1
, there !
3:1
1:1, 11 0:1, 0
START
1:1, 0
END
0:10:0 2:1
3:1
1:1, 5
hello, there world!
1:1, 9 3:1, 0
2:2
START
1:1
END
0:0 0:1
hello world
1:1, 51:1, 5
2:1
, there !
3:1
1:1, 11 0:1, 0
START
1:1, 0
END
0:10:0 2:1
3:1
1:1, 5
hello, there world!
1:1, 9 3:1, 0
2:2
ms
3:1, 0
4:1
1:1, 11
START
1:1
END
0:0 0:1
hello world
1:1, 51:1, 5
2:1
, there !
3:1
1:1, 11 0:1, 0
START
1:1, 0
END
0:10:0 2:1
3:1
1:1, 5
hello, there world!
1:1, 9 3:1, 0
2:2
ms
3:1, 0
4:1
1:1, 11
hello, there worldms!START
1:1
END
0:10:0 2:1 1:1, 5 4:1 3:12:2
hello, there worldms! ENDSTART
hello, there worldms! ENDSTART
hello, there worldms!START
1:1
END
0:10:0 2:1 1:1, 5 4:1 3:12:2
tail
1:1,3
head
1:1,8
teletype-crdt
teletype-client
teletype-crdt
teletype-client
teletype-crdt
teletype-server
teletype
teletype-client
teletype-crdt
teletype-server
Future Directions
teletype.atom.io
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
crdt-tachyon-collaborative-editing

More Related Content

Similar to Real-time Collaborative Editing with CRDTs

Cockpit for Big Systems and Big IoT Systems Leveraging IBM Bluemix and Watson
Cockpit for Big Systems and Big IoT Systems Leveraging IBM Bluemix and WatsonCockpit for Big Systems and Big IoT Systems Leveraging IBM Bluemix and Watson
Cockpit for Big Systems and Big IoT Systems Leveraging IBM Bluemix and Watson
Capgemini
 
Cloud and Big Data Come Together in the Ocean Observatories Initiative to Giv...
Cloud and Big Data Come Together in the Ocean Observatories Initiative to Giv...Cloud and Big Data Come Together in the Ocean Observatories Initiative to Giv...
Cloud and Big Data Come Together in the Ocean Observatories Initiative to Giv...
Dana Gardner
 
Communication Operations: Lift off with Docker! - Jesse White
Communication Operations: Lift off with Docker! - Jesse WhiteCommunication Operations: Lift off with Docker! - Jesse White
Communication Operations: Lift off with Docker! - Jesse White
Docker, Inc.
 
Dipping Our Toes: Web 2.0 Developments at the National Library of Wales
Dipping Our Toes: Web 2.0 Developments at the National Library of WalesDipping Our Toes: Web 2.0 Developments at the National Library of Wales
Dipping Our Toes: Web 2.0 Developments at the National Library of Walesguest823834
 
2016 05 sanger
2016 05 sanger2016 05 sanger
2016 05 sanger
Chris Dwan
 
Atmosphere Conference 2015: Oktawave Horizon Project: the future of real-time...
Atmosphere Conference 2015: Oktawave Horizon Project: the future of real-time...Atmosphere Conference 2015: Oktawave Horizon Project: the future of real-time...
Atmosphere Conference 2015: Oktawave Horizon Project: the future of real-time...
PROIDEA
 
Let's talk about... Microservices
Let's talk about... MicroservicesLet's talk about... Microservices
Let's talk about... Microservices
Alessandro Giorgetti
 
Internet technology and web engineering
Internet technology and web engineeringInternet technology and web engineering
Internet technology and web engineering
Professor Lili Saghafi
 
Transcelerate hackathon 04202020_near final
Transcelerate hackathon 04202020_near finalTranscelerate hackathon 04202020_near final
Transcelerate hackathon 04202020_near final
Ryan Tubbs
 
Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your System
Giovanni Asproni
 
PPT on Web 2.0
PPT on Web 2.0PPT on Web 2.0
PPT on Web 2.0
MdShahidIqubal2
 
What is Software Engineering Research Good For?
What is Software Engineering Research Good For?What is Software Engineering Research Good For?
What is Software Engineering Research Good For?
Andrzej Wasowski
 
Chaos Engineering: Why the World Needs More Resilient Systems
Chaos Engineering: Why the World Needs More Resilient SystemsChaos Engineering: Why the World Needs More Resilient Systems
Chaos Engineering: Why the World Needs More Resilient Systems
C4Media
 
Blockchain for science and knowledge creation. A technical fix to the reprodu...
Blockchain for science and knowledge creation. A technical fix to the reprodu...Blockchain for science and knowledge creation. A technical fix to the reprodu...
Blockchain for science and knowledge creation. A technical fix to the reprodu...
eraser Juan José Calderón
 
Web 2
Web 2Web 2
Talk at the Boston Cloud Foundry Meetup June 2015
Talk at the Boston Cloud Foundry Meetup June 2015Talk at the Boston Cloud Foundry Meetup June 2015
Talk at the Boston Cloud Foundry Meetup June 2015
Chip Childers
 
The-Second-Internet.pdf
The-Second-Internet.pdfThe-Second-Internet.pdf
The-Second-Internet.pdf
Abdelkrim10
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary Software
Yun Zhi Lin
 
LoCloud - D3.3: Metadata Enrichment services
LoCloud - D3.3: Metadata Enrichment servicesLoCloud - D3.3: Metadata Enrichment services
LoCloud - D3.3: Metadata Enrichment services
locloud
 

Similar to Real-time Collaborative Editing with CRDTs (20)

Cockpit for Big Systems and Big IoT Systems Leveraging IBM Bluemix and Watson
Cockpit for Big Systems and Big IoT Systems Leveraging IBM Bluemix and WatsonCockpit for Big Systems and Big IoT Systems Leveraging IBM Bluemix and Watson
Cockpit for Big Systems and Big IoT Systems Leveraging IBM Bluemix and Watson
 
Cloud and Big Data Come Together in the Ocean Observatories Initiative to Giv...
Cloud and Big Data Come Together in the Ocean Observatories Initiative to Giv...Cloud and Big Data Come Together in the Ocean Observatories Initiative to Giv...
Cloud and Big Data Come Together in the Ocean Observatories Initiative to Giv...
 
Communication Operations: Lift off with Docker! - Jesse White
Communication Operations: Lift off with Docker! - Jesse WhiteCommunication Operations: Lift off with Docker! - Jesse White
Communication Operations: Lift off with Docker! - Jesse White
 
Dipping Our Toes: Web 2.0 Developments at the National Library of Wales
Dipping Our Toes: Web 2.0 Developments at the National Library of WalesDipping Our Toes: Web 2.0 Developments at the National Library of Wales
Dipping Our Toes: Web 2.0 Developments at the National Library of Wales
 
2016 05 sanger
2016 05 sanger2016 05 sanger
2016 05 sanger
 
Atmosphere Conference 2015: Oktawave Horizon Project: the future of real-time...
Atmosphere Conference 2015: Oktawave Horizon Project: the future of real-time...Atmosphere Conference 2015: Oktawave Horizon Project: the future of real-time...
Atmosphere Conference 2015: Oktawave Horizon Project: the future of real-time...
 
Let's talk about... Microservices
Let's talk about... MicroservicesLet's talk about... Microservices
Let's talk about... Microservices
 
Internet technology and web engineering
Internet technology and web engineeringInternet technology and web engineering
Internet technology and web engineering
 
Transcelerate hackathon 04202020_near final
Transcelerate hackathon 04202020_near finalTranscelerate hackathon 04202020_near final
Transcelerate hackathon 04202020_near final
 
Tet fund koha
Tet fund kohaTet fund koha
Tet fund koha
 
Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your System
 
PPT on Web 2.0
PPT on Web 2.0PPT on Web 2.0
PPT on Web 2.0
 
What is Software Engineering Research Good For?
What is Software Engineering Research Good For?What is Software Engineering Research Good For?
What is Software Engineering Research Good For?
 
Chaos Engineering: Why the World Needs More Resilient Systems
Chaos Engineering: Why the World Needs More Resilient SystemsChaos Engineering: Why the World Needs More Resilient Systems
Chaos Engineering: Why the World Needs More Resilient Systems
 
Blockchain for science and knowledge creation. A technical fix to the reprodu...
Blockchain for science and knowledge creation. A technical fix to the reprodu...Blockchain for science and knowledge creation. A technical fix to the reprodu...
Blockchain for science and knowledge creation. A technical fix to the reprodu...
 
Web 2
Web 2Web 2
Web 2
 
Talk at the Boston Cloud Foundry Meetup June 2015
Talk at the Boston Cloud Foundry Meetup June 2015Talk at the Boston Cloud Foundry Meetup June 2015
Talk at the Boston Cloud Foundry Meetup June 2015
 
The-Second-Internet.pdf
The-Second-Internet.pdfThe-Second-Internet.pdf
The-Second-Internet.pdf
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary Software
 
LoCloud - D3.3: Metadata Enrichment services
LoCloud - D3.3: Metadata Enrichment servicesLoCloud - D3.3: Metadata Enrichment services
LoCloud - D3.3: Metadata Enrichment services
 

More from C4Media

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
C4Media
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
C4Media
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
C4Media
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
C4Media
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
C4Media
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
C4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
C4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
C4Media
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
C4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
C4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
C4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
C4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
C4Media
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
C4Media
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
C4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
C4Media
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
C4Media
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
C4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
C4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
C4Media
 

More from C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 

Recently uploaded

Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 

Recently uploaded (20)

Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 

Real-time Collaborative Editing with CRDTs

  • 2. InfoQ.com: News & Community Site • Over 1,000,000 software developers, architects and CTOs read the site world- wide every month • 250,000 senior developers subscribe to our weekly newsletter • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • 2 dedicated podcast channels: The InfoQ Podcast, with a focus on Architecture and The Engineering Culture Podcast, with a focus on building • 96 deep dives on innovative topics packed as downloadable emags and minibooks • Over 40 new content items per week Watch the video with slide synchronization on InfoQ.com! https://www.infoq.com/presentations/ crdt-tachyon-collaborative-editing
  • 3. Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide Presented at QCon San Francisco www.qconsf.com
  • 6. Make it as easy to code together as it is to code alone.
  • 7.
  • 8.
  • 9. Boulder to Gambettola - 8795 km ~30ms at the speed of light
  • 10.
  • 11. a b c a b c
  • 12. a b c a b c insert(x, 1) a x b c insert(y, 2) a b y c
  • 13. a b c a b c insert(x, 1) a x b c insert(y, 2) a b y c insert(x, 1) a x b y c
  • 14. a b c a b c insert(x, 1) a x b c insert(y, 2) a b y c insert(x, 1) a x b y c insert(y, 2) a x y b c
  • 15. a b c a b c insert(x, 1) a x b c insert(y, 2) a b y c insert(x, 1) a x b y c insert(y, 2) a x y b c a x y b c != a x b y c
  • 16. 0 0 a b c
  • 17. 0 0 a b c 00 01 insert(x, 1) a x b c
  • 18. 0 0 a b c 00 01 insert(x, 1) a x b c 00 insert(y, 2)00 insert(y, 2)0 0 a b c
  • 19. 0 0 a b c 00 01 insert(x, 1) a x b c 00 insert(y, 2)00 insert(y, 2)0 0 a b c insert(x, 1)insert(y, 2) ✨ 01 ✨ ✨ insert(y, 3) IT( , )
  • 20. 0 0 a b c 00 01 insert(x, 1) a x b c 00 insert(y, 2)00 insert(y, 2)0 0 a b c insert(x, 1)insert(y, 2) ✨ 01 ✨ ✨ insert(y, 3) IT( , ) 11 01 insert(y, 3) a x b y c
  • 21.
  • 22.
  • 23.
  • 25. "Unfortunately, implementing OT sucks. There's a million algorithms with different tradeoffs, mostly trapped in academic papers. The algorithms are really hard and time consuming to implement correctly. Wave took two years to write and if we rewrote it today, it would take almost as long to write a second time.” – Google Wave Engineer
  • 26. a b c a b c
  • 27. a b c a b c insert(x, ✨) a x b c
  • 28. a b c a b c insert(x, ✨) a x b c insert(y, ") a b y c
  • 29. a b c a b c insert(x, ✨) a x b c insert(y, ") a b y c insert(x, ✨) a x b y c
  • 30. a b c a b c insert(x, ✨) a x b c insert(y, ") a b y c insert(x, ✨) a x b y c insert(y, ") a x b y c
  • 31. a b c a b c insert(x, ✨) a x b c insert(y, ") a b y c insert(x, ✨) a x b y c insert(y, ") a x b y c a x b y c a x b y c
  • 33. Data Consistency for P2P Collaborative Editing Gérald Oster Institute for Information Systems ETH Zurich osterg@inf.ethz.ch Pascal Urso, Pascal Molli, Abdessamad Imine Université Henri Poincaré, Nancy 1 LORIA {urso,molli,imine}@loria.fr ABSTRACT Peer-to-peer (P2P) networks are very efficient for distribut- ing content. We want to use this potential to allow not only distribution but collaborative editing of this content. Exist- ing collaborative editing systems are centralised or depend on the number of sites. Such systems cannot scale when deployed on P2P networks. In this paper, we propose a new model for building a collaborative editing system. This model is fully decentralised and does not depend on the number of sites. Categories and Subject Descriptors C.2.4 [Computer-Communication Networks]: Distrib- uted Systems—Distributed applications; H.5.3 [Informa- tion Interfaces and Presentation]: Group and Organiza- tion Interfaces—Collaborative computing, theory and models General Terms Algorithms, Design, Human Factors Keywords CSCW, Collaborative editing, Optimistic replication, Con- currency control 1. INTRODUCTION Currently, peer-to-peer systems demonstrated how they can ensure scalable content distribution. In their survey [4], Androutsellis-Theotokis et al. wrote: “Peer-to-peer content distribution systems rely on the replication of content on more than one node for improving the availability of content, enhancing performance and resisting censorship attempts.” We want to reuse these characteristics not only for content distribution but also for content editing. Currently, P2P Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. CSCW’06, November 4–8, 2006, Banff, Alberta, Canada. Copyright 2006 ACM 1-59593-249-6/06/0011 ...$5.00. networks mainly distribute immutable contents, we want to distribute updates on this content and manage collabora- tive editing on it. We are convinced that if we can deploy a group editor framework on a P2P network, we open the way for P2P content editing. It means that all existing collab- orative editing applications such as CVS and Wiki can be redeployed on P2P networks and take advantage of availabil- ity improvements, performance enhancements and censor- ship resistance of P2P networks. For instance, Wikipedia [2] is currently a collaborative encyclopædia that has collected more than 4,700,000 articles in more than 200 languages. Wikipedia has more than 50 million of page requests per day. 200,000 changes are made every day [1]. However, Wikipedia needs a costly infrastructure to handle the load. Hundreds of thousands of dollars are spent every year to fund the in- frastructure. A P2P massive collaborative editing system would allow to distribute the service, tolerate failures, im- prove performances, resist to censorship and share the cost of the underlying infrastructure. Collaborative editing systems such as CVS or Wikis are currently centralised and cannot be adapted to peer-to-peer networks. Collaborative systems based on the operational transformation approach [7, 23] can be decentralised. However, existing algorithms such as GOTO [23], ABT[16] and SOCT2 [21] rely on vector clocks to detect concurrent operations. OT approach supposes that each operation is immediately executed locally, stored in a local log and then broadcast to other sites in order to be re-executed and stored in their logs. A vector clocks is associated to each opera- tion. A vector clocks [17] is an array of logical clocks, one clock per site. It is used to detect the happened-before rela- tionship and therefore the concurrency between operation. It causes no problem if the number of sites is fixed and low but if the number of sites grows, the size of the vector clocks is unbounded. Thus, messages exchanged between sites will grow as well as the size of local operation. Also, the time ef- ficiency of operation on vectors clocks will decline as vectors clocks grow. Clearly, vectors clocks prevent these algorithms to scale and represent a serious bottleneck for their deploy- ment on P2P networks. In this paper we propose a new model called WOOT for building group editors that is suitable for dynamic P2P sys- tems. Compared to existing decentralised group editor mod- els, the number of sites involved in group editing is not a variable. The remainder of this paper is organised as follows: Sec- tion 2 describes the WOOT approach and details the con- sistency model. Section 3 presents a formal definition of WOOT 2006 Without Operational Transformation
  • 34. a b c 1:1 1:2 1:3 globally unique id site-id:sequence-number
  • 35. a b c 1:1 1:2 1:3 1 1:2 2:1 1:1
  • 36. a b c 1:1 1:2 1:3 1 1:2 2:1 1:1 1:2 3:1 1:32
  • 37. a b c 1:1 1:2 1:3 1 1:2 2:1 1:1 1:2 3:1 1:32 4:1 1:2 3 3:1
  • 40. 1:31:21:1 cba 1:31:21:1 cba 1:1 2:1 1:21 2 1:3 3:1 1:2 2 3:1 1:31:21:1 cba 2:1 1 1:31:21:1 cba 1:1 2:1 1:21 2 3:12:1 1 1:31:21:1 cba
  • 41. 1:31:21:1 cba 1:31:21:1 cba 1:1 2:1 1:21 2 1:3 3:1 1:2 2 3:1 1:31:21:1 cba 2:1 1 1:31:21:1 cba 1:1 2:1 1:21 2 3:12:1 1 1:31:21:1 cba 1:2 3:1 1:32 a b c 1:1 1:2 1:3 1 2:1 3:1 2
  • 45. 1:21:1 ba 1 1:2 1:1 1:1 2 1:2 2:1 1:1 1:1 3:1 1:23
  • 46. 2a b
  • 49. 2a b3
  • 53. a b a b a b
  • 54. a b a b a b a 2 b a≺2≺b a 1 b a≺1≺b
  • 55. a b a b a b a 2 b a≺2≺b a 1 b a≺1≺b a 1 b a≺1≺b
  • 56. a b a b a b a 2 b a≺2≺b a 1 b a≺1≺b a 1 b a≺1≺b a 3 1 b a≺3≺1
  • 57. a b a b a b a 2 b a≺2≺b a 1 b a≺1≺b a 1 b a≺1≺b a 3 1 b a≺3≺1 a≺2≺b
  • 59. a b a b a b a 2 b a≺2≺b a 1 b a≺1≺b a 1 b a≺1≺b a 3 1 b a≺3≺1 a≺2≺b
  • 60. a b a b a b a 2 b a≺2≺b a 1 b a≺1≺b a 1 b a≺1≺b a 3 1 b a≺3≺1 a≺2≺b a 3 1 2 b
  • 61. a b a b a b a 2 b a≺2≺b a 1 b a≺1≺b a 1 b a≺1≺b a 3 1 b a≺3≺1 a≺2≺b a 2 3 1 b
  • 62. a b a b a b a 2 b a≺2≺b a 1 b a≺1≺b a 1 b a≺1≺b a 3 1 b a≺3≺1 a≺2≺b a 2 3 1 b a 1 2 b a≺2≺b
  • 63. a b a b a b a 2 b a≺2≺b a 1 b a≺1≺b a 1 b a≺1≺b a 3 1 b a≺3≺1 a≺2≺b a 2 3 1 b a 1 2 b a≺2≺b a≺3≺1
  • 64. a b a b a b a 2 b a≺2≺b a 1 b a≺1≺b a 1 b a≺1≺b a 3 1 b a≺3≺1 a≺2≺b a 2 3 1 b a 1 2 b a≺2≺b a≺3≺1 a 3 1 2 b
  • 68. a b a b a b a 1 b a≺1≺b1 1 a≺2≺b a 2 b
  • 69. a b a b a b a 1 b a≺1≺b1 1 a≺2≺b a 2 b 1 a≺3≺12 a 1 b a≺1≺b a 3 1 b
  • 70. a b a b a b a 1 b a≺1≺b1 1 a≺2≺b a 2 b 1 a≺3≺12 a 1 b a≺1≺b a 3 1 b 1 a≺2≺b
  • 71. a b a b a b a 1 b a≺1≺b1 1 a≺2≺b a 2 b 1 a≺3≺12 a 1 b a≺1≺b a 3 1 b 1 a≺2≺b a 3 1 2 b
  • 72. a b a b a b a 1 b a≺1≺b1 1 a≺2≺b a 2 b 1 a≺3≺12 a 1 b a≺1≺b a 3 1 b 1 a≺2≺b a 3 1 2 b a≺2≺b1 a 1 2 b
  • 73. a b a b a b a 1 b a≺1≺b1 1 a≺2≺b a 2 b 1 a≺3≺12 a 1 b a≺1≺b a 3 1 b 1 a≺2≺b a 3 1 2 b a≺2≺b1 a 1 2 b 2 a≺3≺1
  • 74. a b a b a b a 1 b a≺1≺b1 1 a≺2≺b a 2 b 1 a≺3≺12 a 1 b a≺1≺b a 3 1 b 1 a≺2≺b a 3 1 2 b a≺2≺b1 a 1 2 b 2 a≺3≺1 a 3 1 2 b
  • 78. START 1:1 END 0:0 0:1 hello world 1:1, 51:1, 5 2:1 , there ! 3:1 1:1, 11 0:1, 0
  • 79. START 1:1 END 0:0 0:1 hello world 1:1, 51:1, 5 2:1 , there ! 3:1 1:1, 11 0:1, 0 START 1:1, 0 END 0:10:0 2:1 3:1 1:1, 5 hello, there world!
  • 80. START 1:1 END 0:0 0:1 hello world 1:1, 51:1, 5 2:1 , there ! 3:1 1:1, 11 0:1, 0 START 1:1, 0 END 0:10:0 2:1 3:1 1:1, 5 hello, there world! 1:1, 9 3:1, 0 2:2
  • 81. START 1:1 END 0:0 0:1 hello world 1:1, 51:1, 5 2:1 , there ! 3:1 1:1, 11 0:1, 0 START 1:1, 0 END 0:10:0 2:1 3:1 1:1, 5 hello, there world! 1:1, 9 3:1, 0 2:2 ms 3:1, 0 4:1 1:1, 11
  • 82. START 1:1 END 0:0 0:1 hello world 1:1, 51:1, 5 2:1 , there ! 3:1 1:1, 11 0:1, 0 START 1:1, 0 END 0:10:0 2:1 3:1 1:1, 5 hello, there world! 1:1, 9 3:1, 0 2:2 ms 3:1, 0 4:1 1:1, 11 hello, there worldms!START 1:1 END 0:10:0 2:1 1:1, 5 4:1 3:12:2
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95. hello, there worldms!START 1:1 END 0:10:0 2:1 1:1, 5 4:1 3:12:2 tail 1:1,3 head 1:1,8
  • 96.
  • 101.
  • 102.
  • 103.
  • 104.
  • 107. Watch the video with slide synchronization on InfoQ.com! https://www.infoq.com/presentations/ crdt-tachyon-collaborative-editing