SlideShare ist ein Scribd-Unternehmen logo
1 von 107
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.
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Boulder to Gambettola - 8795 km
~30ms at the speed of light
Real-time Collaborative Editing with CRDTs
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
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
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
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
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
Real-time Collaborative Editing with CRDTs
teletype-crdt
teletype-client
teletype-crdt
teletype-client
teletype-crdt
teletype-server
teletype
teletype-client
teletype-crdt
teletype-server
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Real-time Collaborative Editing with CRDTs
Future Directions
teletype.atom.io
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
crdt-tachyon-collaborative-editing

Weitere ähnliche Inhalte

Ähnlich wie Real-time Collaborative Editing with CRDTs

Cytoscape: Now and Future
Cytoscape: Now and FutureCytoscape: Now and Future
Cytoscape: Now and FutureKeiichiro Ono
 
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 WatsonCapgemini
 
Reduction The Effect Of Mobility On Link Transmitting...
Reduction The Effect Of Mobility On Link Transmitting...Reduction The Effect Of Mobility On Link Transmitting...
Reduction The Effect Of Mobility On Link Transmitting...Myel Ramos
 
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 WhiteDocker, 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
 
A Typical Understanding Of Distributed Computing
A Typical Understanding Of Distributed ComputingA Typical Understanding Of Distributed Computing
A Typical Understanding Of Distributed ComputingLisa Olive
 
Sdlc Final Project Essay
Sdlc Final Project EssaySdlc Final Project Essay
Sdlc Final Project EssayTiffany Graham
 
2016 05 sanger
2016 05 sanger2016 05 sanger
2016 05 sangerChris Dwan
 
Advanced It Outsourcing By Using Cloud Computing Model
Advanced It Outsourcing By Using Cloud Computing ModelAdvanced It Outsourcing By Using Cloud Computing Model
Advanced It Outsourcing By Using Cloud Computing ModelCarla Jardine
 
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
 
The Open Source Of Cloud Computing
The Open Source Of Cloud ComputingThe Open Source Of Cloud Computing
The Open Source Of Cloud ComputingVictoria Soto
 
Internet technology and web engineering
Internet technology and web engineeringInternet technology and web engineering
Internet technology and web engineeringProfessor Lili Saghafi
 
Transcelerate hackathon 04202020_near final
Transcelerate hackathon 04202020_near finalTranscelerate hackathon 04202020_near final
Transcelerate hackathon 04202020_near finalRyan 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 SystemGiovanni Asproni
 
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 SystemsC4Media
 

Ähnlich wie Real-time Collaborative Editing with CRDTs (20)

Cytoscape: Now and Future
Cytoscape: Now and FutureCytoscape: Now and Future
Cytoscape: Now and Future
 
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
 
Reduction The Effect Of Mobility On Link Transmitting...
Reduction The Effect Of Mobility On Link Transmitting...Reduction The Effect Of Mobility On Link Transmitting...
Reduction The Effect Of Mobility On Link Transmitting...
 
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
 
A Typical Understanding Of Distributed Computing
A Typical Understanding Of Distributed ComputingA Typical Understanding Of Distributed Computing
A Typical Understanding Of Distributed Computing
 
Sdlc Final Project Essay
Sdlc Final Project EssaySdlc Final Project Essay
Sdlc Final Project Essay
 
2016 05 sanger
2016 05 sanger2016 05 sanger
2016 05 sanger
 
Advanced It Outsourcing By Using Cloud Computing Model
Advanced It Outsourcing By Using Cloud Computing ModelAdvanced It Outsourcing By Using Cloud Computing Model
Advanced It Outsourcing By Using Cloud Computing Model
 
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
 
The Open Source Of Cloud Computing
The Open Source Of Cloud ComputingThe Open Source Of Cloud Computing
The Open Source Of Cloud Computing
 
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
 

Mehr von 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 VideoC4Media
 
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 MobileC4Media
 
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 2020C4Media
 
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 ApplicationsC4Media
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No KeeperC4Media
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like OwnersC4Media
 
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 JavaC4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideC4Media
 
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/CDC4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine LearningC4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at SpeedC4Media
 
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 SystemsC4Media
 
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.jsC4Media
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerC4Media
 
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 ScaleC4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeC4Media
 
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 EverywhereC4Media
 
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 ForC4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data EngineeringC4Media
 
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 MoreC4Media
 

Mehr von 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
 

Kürzlich hochgeladen

COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?SANGHEE SHIN
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.francesco barbera
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
Babel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxBabel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxYounusS2
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum ComputingGDSC PJATK
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataSafe Software
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 

Kürzlich hochgeladen (20)

COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?Do we need a new standard for visualizing the invisible?
Do we need a new standard for visualizing the invisible?
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
Babel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxBabel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptx
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum Computing
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 

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.
  • 9. Boulder to Gambettola - 8795 km ~30ms at the speed of light
  • 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
  • 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
  • 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
  • 107. Watch the video with slide synchronization on InfoQ.com! https://www.infoq.com/presentations/ crdt-tachyon-collaborative-editing