🤖 AI Summary
This work addresses the challenge of seamless evolution in distributed systems undergoing backward-incompatible software updates by proposing a novel approach that models application code and its semantic versioning as an App CRDT (Conflict-Free Replicated Data Type). Coupled with an API-compatible message middleware, this mechanism enables the system to remain operational even when only a subset of its components has been updated. The study pioneers the application of CRDT principles to the dynamic replication and management of executable code, effectively tolerating backward-incompatible changes while preserving system availability. The method is implemented in the AmbientTalk language with minimal modifications to existing applications and further validated for cross-language applicability through integration with the LuAT framework.
📝 Abstract
This paper investigates how Conflict-free Replicated Data Types (CRDTs) can be used for dynamic software updates of distributed applications. We propose to model application updates as a new App CRDT that stores the application code associated with a semantic version, which defines a total order of the code updates. The App CRDT works with an API-compatible message delivery middleware, which allows applications to continue working with partially updated components in the face of backwards-incompatible software updates. We implemented our approach in AmbientTalk, an ambient-oriented programming language designed for distributed systems. We show how this CRDT can be integrated with existing AmbientTalk applications, requiring minimal changes. We also implemented our approach in LuAT, an ambient-oriented programming framework for Lua. This shows that our approach of using CRDTs to replicate code can be generalised to other programming languages.