Today’s software systems are interactive and distributed.

The current dominant software architecture is centralized, which is unsuited for the age of plentiful mobile devices, autonomous vehicles, and uncountable embedded devices and sensors. A centralized architecture prevents independent processing, causes latency, and undermines user control and privacy. Decentralized architectures solve these problems by providing offline availability, low latency, and data privacy. However, decentralized architectures require new solutions for trust, fault tolerance, and concurrency control.

We research resiliency and reliability of networked software systems at several levels using declarative programming platforms.

  • Declarative reactive programming to improve on callback-based solutions to guarantee consistency of complex interactions.
  • Multitier programming to improve decentralized applications that interact according to smart contracts, by preventing novel classes of bugs that arise from a global, untrusted execution environment.
  • Resilient and disruption-tolerant networking protocols to enable message dissemination even in highly unreliable settings.
  • Programmable networking to increase reliability at the networking layer by extending application semantics to in-network execution.

Recent Papers:

  • PRDTs: Composable Knowledge-Based Consensus Protocols with Replicated Data Types. J Haas, R Mogk, A Bieniusa, M Mezini.
  • Algebraic Replicated Data Types: Programming Secure Local-First Software. C Kuessner, R Mogk, AK Wickert, M Mezini.
  • A fault-tolerant programming model for distributed interactive applications. R Mogk, J Drechsler, G Salvaneschi, M Mezini.