Talk: 12:30–13:15 (English)
State Transitions in Complex Systems
In systems whose state consists of a non-trivial number of separate but related pieces, updating this state in a way that keeps everything coherent requires some discipline. In extensible systems, where the different pieces may not even be aware of each other, this becomes even more challenging.
A good example of such a system is a modular code editor. It involves a number of constantly-changing pieces of state (the document, selection, scroll position, and so on) and a lot of non-core state intimately entangled with those (syntax highlighting, linting, completion), and possibly with each other.
This presentation discusses the set of principles we arrived at in designing such an editor (CodeMirror), and compares it to the more traditional event-style architectures. The editor uses persistent state values and first-class transactions, both of them extensible by 3rd-party code, to make it straightforward by construction to keep the zoo of interdependent data involved in a full-featured editor coherent.