CEDA is a platform for developing software applications using persistent object oriented data models that are replicated within a peer-to-peer network. It promotes a data-centric, component based approach and facilitates run time assembly to build complex functionality.

A key feature is the use of Operational Transformation (OT) to allow user edits to be performed on a local database without latency, and changes (called operations) are sent and merged asynchronously without the need for distributed transactions.

The name CEDA is derived from "DAta CEntric".

Introducing CEDA provides a brief overview of CEDA, with particular emphasis on its use of OT to support replication and synchronisation.

Ceda Concepts.docx provides a more detailed introduction to CEDA.

Ceda Constraints.docx describes the problem of how to deal with integrity constraints in a database using Operational Transformation.

Ceda Data Model.docx describes the syntax and semantics for defining data types in CEDA that support reflection, persistence, replication and synchronisation.

Ceda Jigsaw Example.docx describes the base and derived representations used in the CedaJigsaw application.

Ceda OT on Text.docx describes the semantics of Operational Transformation on text (and more generally vectors).

Ceda Python Bindings.docx describes how Python can be used to directly access objects in a CEDA database.

Primer on Operational Transformation.docx goes into some of the mathematics of Operational Transformation control algorithms.

The Lattice of Database States.docx describes how the states in the distributed system that preserve causality form a mathematical structure called a lattice.

Conventional approaches to distributed computing.docx describes some impossibility results in distributed computing.

2013-08 Robust network topologies for replication in CEDA.docx investigates approaches for having a set of computers (called nodes) connect in an efficient topology that is resilient to network and machine failure.

2008-02 Vector Time provides a formal definition of vector times and defines the notion of causally valid vector times.

Pessimistic locking (with Two Phased Locking or 2PL) is the conventional approach to achieve isolation between transactions on a database, by ensuring one transaction cannot see the intermediate results of another transaction. It only prevents conflicts to the extent that it prevents concurrency in the first place, and even so generally fails to prevent semantic conflicts. OT instead allows for true isolation between users by supporting both short or long term divergence of locally stored versions of the data. OT provides a formal basis to merge the divergent paths by preserving the original syntactic intention of the user edits whereever possible. Consequences of Operational Transformation considers the nature of syntactic and semantic conflicts and suggests automated merging is ideally suited to collaborative data entry.

Ceda presentation to Runge in 2007

In July 2007 CEDA was presented to Runge Limited. Rather than use Microsoft Power Point it was decided to implement the demonstration in CEDA itself, since it is powerful enough to display rich and dynamic content with its support for run time assembly from simple software components.

This was achieved using the existing software components and without the need to write additional C++ code. It is a testimony to the power of a component architecture made available to end users.

The output from two computers was projected onto screens to demonstrate real-time interactive collaboration. This meant the slides and all the dynamic content could be manipulated by two presenters at the same time.

See the screenshots of this presentation here.