NO.149 Programming Languages for Distributed Systems

Shonan Village Center

May 27 - 30, 2019 (Check-in: May 26, 2019 )


  • Philipp Haller
    • KTH Royal Institute of Technology, Sweden
  • Guido Salvaneschi
    • Technische Universität Darmstadt, Germany
  • Takuo Watanabe
    • Tokyo Institute of Technology, Japan
  • Gul Agha
    • University of Illinois, USA


Description of the Meeting


Programming languages for distributed systems have been flourishing in the past, providing ideas for the development of complex systems that have been deeply influential. However, over the last few years, researchers focusing on this area are scattered across different communities with limited interaction. The goal of this Meeting is to build a community of researchers interested in programming languages for distributed systems, share current research results and set up a common research agenda.

Background and Motivation

Developing distributed systems is a well-known, decades-old problem in Computer Science. Despite significant research effort has been dedicated to this area, developing distributed systems remains challenging. To complicate things, over the last years, we observed the rise of a complex scenario, with heterogeneous platforms, interconnected systems and decentralized functionalities. This model, referred to as edge computing, is driven – among others – by forces like the need of reducing latency in geodistributed services via multiple data centers, the advent of purpose- driven microservices, and the spreading of in-field decision intelligence in the Internet of Things.

Programming languages are a fundamental tool to face the complexity of such a scenario. In compar- ison, however, these have seen modest improvements. Arguably, many ideas for supporting distribution adopted in production languages date back to the early ’90s with CORBA/RMI, and even earlier with the Actor model [2724] and concurrent objects [262523]. In contrast, language abstractions have been mostly a key asset for determining the popularity of dedicated systems. For example, MapReduce takes advantage of purity to parallelise task processing, complex event processing adopts declarative program- ming [13] to express sophisticated event correlations and Spark leverages functional programming for efficient fault recovery via lineage [16] – to provide some examples.

There have been, notable advances in research on programming languages for distributed systems, such as cloud types for eventual consistency [12], conflict-free replicated data types (CRDT) [17], lan- guage support for safe distribution of computations [9] and fault tolerance [3], as well as programming frameworks for mixed IoT/Cloud development, such as Ericsson’s Calvin [5] – just to mention a few. However, these efforts have seen limited adoption and the researchers that have been carrying out these efforts are scattered across different communities that include verification and formal methods in general, programming language design, database theory, distributed systems, systems programming, data-centric programming, and web application development.

In contrast, the field of programming languages for distributed systems has been a flourishing re- search area in the past, with influential contributions like Argus, Emerald, and Distributed OZ.


With this Shonan meeting we would like to achieve several objectives:

  • We would like to build a community of researchers interested in programming languages for dis- tributed systems. A Shonan Meeting is a great opportunity to build such a community, because such researchers attend different conferences (e.g., POPL/PLDI/SPLASH or SOSP/VLDB/Middleware) and publish in different venues.
  • We aim to establish a common terminology and set up models and frameworks to reason about problems in the field, such as concurrency, non-determinism, and partial failure. Another aspect concerns the common background on the state of the art of programming languages for distributed systems. This is not an easy task because contributions are spread across several fields and some influential results are not recent enough to be at the fingertips of young researchers to still not so established that they have been systematized and appear in the dedicated literature (e.g., textbooks on programming languages).
  • We would like to discuss the open problems in the area of programming languages for distributed systems. This discussion will eventually lead to a research roadmap for the community, indicating a research agenda for the coming years. A concrete outcome for this objective will be a document summarizing the research priorities in the field as well as the most promising research directions and their interconnections.


We plan to organize the initial part of the Meeting (e.g., the first morning) as a mini- conference. Each participant will be invited to briefly introduce his research, so that all participants know each other and can have an overview of the ongoing research carried out by the Meeting attendees. Most of the Meeting however will be interactive. We will discuss topics proposed by the organizers and by the attendees using shared supports (e.g., Google Docs) to document the contributions to the dis- cussion. We envision subgroup meetings where specific topics are discussed and plenary meetings where

the topics are selected and the outcome of the subgroup meetings are reported to the other attendees.


The participants of the meeting will be primarily researchers and practitioners working on

(1) programming languages which are specifically designed for distributed Also, we will invite

(2)experts on programming language theory, design, and implementation – who can provide insights on the most recent advances in the programming languages community which have potential to be applied to the design of distributed systems. Finally, we will invite (3) systems, big data and database experts which can contribute requirements and constraints that are imposed by their research