Behaviorally Typed State Machines in TypeScript for Heterogeneous Swarms (2306.09068v1)
Abstract: A heterogeneous swarm system is a distributed system where participants come and go, communication topology may change at any time, data replication is asynchronous and partial, and local agents behave differently between nodes. These systems are hard to design and reason about, mainly because we desire a particular class of behaviors to emerge from the interplay of heterogeneous individual agents. Nevertheless, mission-critical operations like manufacturing process orchestration in factories use such systems due to their uncompromising availability and resilience of computing services. This paper presents a set of TypeScript libraries to model peer-to-peer workflows as state machines, execute them using the Actyx middleware, and check the shape of these machines for conformance to a swarm protocol. The swarm protocol describes an idealized global view of the cooperation of machines of different roles. It directly corresponds to a diagram a product manager would sketch on a whiteboard; this allows for verifying that the coded state machines correctly implement the product specification. A well-formed swarm protocol also guarantees that conforming machines will achieve eventual consensus on the overall state progression even in the absence of further coordination. This tool is for developers of business logic for heterogeneous swarm systems, helping them verify that their protocols and implementations are correct. Tool repo: https://github.com/Actyx/machines
- Actyx AG. 2020-2022. Actyx developer website. https://developer.actyx.com accessed 2023-05-18.
- Actyx AG. 2020–2023a. Actyx Pond library. https://www.npmjs.com/package/@actyx/pond/v/3.4.0
- Actyx AG. 2023b. @actyx/machine-check library. https://www.npmjs.com/package/@actyx/machine-check/v/0.2.0
- Actyx AG. 2023c. @actyx/machine-runner library. https://www.npmjs.com/package/@actyx/machine-runner/v/0.3.1
- Impossibility of Distributed Consensus with One Faulty Process. J. ACM 32, 2 (apr 1985), 374–382. https://doi.org/10.1145/3149.214121
- Seth Gilbert and Nancy Lynch. 2002. Brewer’s conjecture and the feasibility of consistent, available, partition-tolerant web services. SIGACT News 33, 2 (June 2002), 51–59. https://doi.org/10.1145/564585.564601
- Roland Kuhn. 2021. Local-First Cooperation. https://www.infoq.com/articles/local-first-cooperation/
- Behavioural Types for Local-First Software. arXiv:2305.04848 [cs.DC] To appear in ECOOP.
- Leslie Lamport. 2019. Time, Clocks, and the Ordering of Events in a Distributed System. Association for Computing Machinery, New York, NY, USA, 179–196. https://doi.org/10.1145/3335772.3335934
- R. A. Light. 2017. Mosquitto: server and client implementation of the MQTT protocol. The Journal of Open Source Software 2, 13 (2017). https://doi.org/10.21105/joss.00265
- Microsoft. 2012-2023. TypeScript: JavaScript with Syntax for Types. https://www.typescriptlang.org/
- STATELY. 2023. XState website. https://xstate.js.org/docs/ accessed 2023-05-18.
- Lewis Tseng. 2019. Eventual Consensus: Applications to Storage and Blockchain. In 2019 57th Annual Allerton Conference on Communication, Control, and Computing (Allerton). 840–846. https://doi.org/10.1109/ALLERTON.2019.8919675