© 2021 Strange Loop
Making a webapp collaborative is hard: you either need a custom server and lots of ad-hoc sync protocols, or you need to fit your app’s shared state into the restrictive data model of an existing client-side sync library. What if instead, you could directly replace frontend data types with “collaborative” versions, while preserving the structure and type safety of your app’s state?
We make that possible with Compoventuals, a comprehensive TypeScript library of collaborative data types (specifically CRDTs). It supports a wide variety of data types and operations, plus composition techniques that make it easy to use and extend. We demonstrate how to use it to make a webapp collaborative without changing its underlying data model or losing type safety, while also supporting offline work, server-free collaboration, and end-to-end encryption.
Matthew is a PhD student at Carnegie Mellon University, advised by Heather Miller. His research focuses on tools for decentralized systems, with a particular interest in enabling open-source, local-first collaborative programs. Previously, he completed an MPhil at Cambridge University as a Churchill Scholar, where he studied decentralized secure group messaging protocols for the TRVE Data project, advised by Alastair Beresford and Martin Kleppmann.
Heather is an Assistant Professor in the School of Computer Science at Carnegie Mellon University. Before that, she was the co-founder and Executive Director of the Scala Center at EPFL, where she was also a research scientist, as well as an Assistant Clinical Professor at Northeastern University. She recently completed her PhD in EPFL's Faculty of Computer and Communication Science where she contributed to the now-widespread programming language, Scala. Heather's research interests are at the intersection of data-centric distributed systems and programming languages, with a focus on transferring her research results into industrial use. She has also led development of popular MOOCs some 1 million students strong, such as "Functional Programming Principles in Scala."