ACID for Programmers
Date: Tue, March 26, 2019
Room: EEMCS (building 36), Snijderszaal LB 01.010, Mekelweg 4, 2628 CD Delft
Conventional collaboration among programmers relies on optimistic locking of files (through version control), perhaps enhanced with “soft” pessimistic locking via informal communication channels (e.g., by chatting things like “I will be working on file X for the rest of the day, so don’t you touch it”). Optimistic locking enables parallel work, at the price of manually merging competing edits (edit conflicts) at update or commit time. Merging edits is an unpopular and, in any case, error-prone task; yet, “hard” pessimistic locking of files does not appear to be a viable alternative.
Online editing tools like Google Docs have recently revolutionized collaborative authoring, voiding the need for locking or merging altogether. For collaborative programming, however, these tools seem less suited, if only because the times at which a program can be compiled and run can be rare and short. Also, seeing a change being broken even before it has been finished means significant interference with a programmer’s work, and is likely to cause frustration and aggression.
Building on earlier work on constraint-based refactoring and robust projectional editing, this talk shows how existing formal specifications of static semantics can be leveraged to tweak a projectional editor so that it automatically locks all program elements on which a current edit depends. As a result, the editor exhibits the ACID properties of transactional databases: all edits are atomic, consistency-preserving, isolated, and durable.
Part of the Symposium on Declarative Programming