Carlos Baquero Moreno

Distributed Systems Professor, Co-creator of CRDTs

Carlos Baquero is an Assistant Professor and teaches Distributed Systems at Universidade do Minho, Portugal. He is a Senior Researcher at the High Assurance Software Laboratory within INESC TEC. In the 90s, motivated by mobile computing and offline operation for file systems, he studied data types with merge operations over semi-lattices, a precursor to state-based CRDTs.

As an academic, he believes on pursuing research that can have a practical impact. His work on causality tracking, scalable bloom filters, and CRDTs made its way into several products and systems, running in production worldwide.

Away from computers he enjoys mountain climbing, and scavenging for old mechanical calculators.

Past Activities

Carlos Baquero Moreno
Code Mesh LDN 2018
08 Nov 2018
10.35 - 11.20

CRDTs: From sequential to concurrent executions

When nodes are spread across large geographic distances, being available for local users, and providing short response times, is often at odds with keeping strong consistency across the whole system. Several systems, that target large scale geo-replication, support multi-master operation and transient data divergence, allowing each site to update replicas with no immediate coordination.  From the user application perspective, the system cannot be seen anymore as a single sequential copy, since now operations can be processed concurrently at different locations. Conflict-free Replicated Data Types (CRDTs) can take away a lot of the complexity when migrating from a sequential to a concurrent setting.

In this talk we will explore a bit of the path in this transition, cover what can be expected, and present a few guiding principles. Concurrent behaviour will be explored for common data types, such as counters, registers, sets and sequences.


This talk should help the audience understand how to reason about the behaviour of replicated data types that can evolve concurrently, and how that behaviour relates to the familiar sequential execution that occurs in a single centralized copy.