Skip to content
This repository has been archived by the owner on Feb 12, 2022. It is now read-only.

Related Work

Diego Ongaro edited this page Jun 24, 2016 · 10 revisions

Runway's specification language is heavily influenced by TLA+ and Murphi. Like Runway, TLA+ integrates several tools. It includes a specification language, a model checker, and a proof system (that can mechanically verify proofs). TLA+ specifications are written in untyped logic and mathematics, whereas Runway specifications closely resemble computer programs, more familiar to industry engineers. Murphi is a model checker which could be very accessible to industry engineers. Unfortunately, its code does not seem to be actively maintained (the best version seems to be CMurphi). Like Runway, Murphi's language is strongly typed and rule-oriented. Murphi rules have explicit preconditions written in Boolean logic, whereas Runway rules are simply considered inactive when they do not change any state. We think this makes Runway more flexible for complex preconditions, despite being more difficult to implement efficiently.

Runway's emphasis on visualization/animation is heavily influenced by The Secret Lives of Data and RaftScope. The Secret Lives of Data is a step-by-step guided tour of Raft (more visualizations may be added later), created by Ben Johnson. RaftScope is an interactive visualization of Raft that I (Diego Ongaro) created for my PhD defense. Both run in the browser and are built using JavaScript and SVG. These projects helped me see the value of visualization for distributed systems. The Secret Lives of Data's step-by-step approach is well-suited to self-guided learning; we plan to support similar usage in Runway. Runway is a generalization of the RaftScope idea, making it easier to visualize other systems and algorithms. The Runway visualization of Raft is roughly equivalent to RaftScope. Of course, Runway goes beyond that, as a specification, model checking, and simulation tool.

Unprocessed

This is a dumping ground for potentially related projects. They're sorted alphabetically by project name. The idea is we should introduce what they are, where to find more info, and how they're related to Runway, then move them into nice categories to be created above.

Alloy

http://alloy.mit.edu/alloy/

B method

https://en.wikipedia.org/wiki/B-Method

The Deadlock Empire

https://deadlockempire.github.io/

DEMi

DIVINE

Language agnostic model checker that support C/C++ etc: https://divine.fi.muni.cz/

(@ellitron had some thoughts on this one)

Elm

IronFleet

https://github.com/Microsoft/Ironclad/

Ivy

http://apanda.github.io/ivy/

Paper from PLDI 2016

Uses Z3 under the hood. ( https://github.com/Z3Prover/z3)

MoDist

MODIST: Transparent Model Checking of Unmodified Distributed Systems

Molly (Lineage Driven Fault Injection)

http://people.eecs.berkeley.edu/~palvaro/molly.pdf

Murphi

P#  

Uncovering bugs in Distributed Storage Systems during Testing (not in production!)

Deligiannis et al. 2016

PeerSim?

cmeik was tweeting about it

ProB

Modeling related - state space visualization of B & TLA+ models, but also links to an animator/model checker for those languages (and CSP-M too).

https://www3.hhu.de/stups/prob/index.php/State_space_visualization_examples (Threads example is the most accessible example on the page.)

PSync

PSync: A Partially Synchronous Language for Fault-Tolerant Distributed Algorithms

QuickCheck

Property-based randomized testing.

RaftScope

Rules-Based Programming (RAMCloud)

Sage-Markov

https://github.com/thomasfricke/sage-markov

SAMC

SAMC: Semantic-Aware Model Checking for Fast Discovery of Deep Bugs in Cloud Systems

Secret Lives of Data

http://thesecretlivesofdata.com/

ShiViz

Debugging Distributed Systems by IVAN BESCHASTNIKH, PATTY WANG, YURIY BRUN, MICHAEL D. ERNST

"ShiViz is a new distributed system debugging visualization tool"

SimGrid

A distributed systems simulator that also includes support for model checking: http://simgrid.gforge.inria.fr/

(@ellitron had some thoughts on this one)

SPIN/Promela

"Spin+Promela can actually spit out a network message timeline diagram on invariant violations (if you use the channel abstractions)" -@rstutsman

http://spinroot.com/spin/whatispin.html

Tempo

http://www.veromodo.com

TLA+

http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html

UPPAAL

http://www.uppaal.org