ECOOP 2016
Sun 17 - Fri 22 July 2016 Rome, Italy

Whether you are programming a rich web application in JavaScript that mutates state in the client’s browser, or you are building a massively deployed mobile application that will operate with client state at the device, it’s undeniable that you are building a distributed system!

Two major challenges of programming distributed systems are concurrency and partial failure. Concurrency of operations can introduce accidental nondeterminism: computations may result in different outcomes with the same inputs given scheduling differences in the underlying system unless a synchronization mechanism is used to enforce some order. Synchronization is typically expensive, and reduces the efficiency of user applications. Partial failure, or the failure of one or more components in a distributed system at one time, introduces the challenge of knowing, when an operation fails, which components of the operation completed successfully. To solve these problems in practice on an unreliable, asynchronous network, atomic commit protocols and timeouts as failure detection are typically used.

Because of these challenges, early approaches to providing programming abstractions for distributed computing that ignored them were inherently misguided: the canonical example being the Remote Procedure Call, still widely deployed in industry.

The goal of this workshop is to discuss new approaches to distributed programming that provide efficient execution and the elimination of accidental nondeterminism resulting from concurrency and partial failure. It will bring together both practitioners and theoreticians from many disciplines: database theory, distributed systems, systems programming, programming languages, data-centric programming, web application development, and verification, to discuss the state-of-the-art of distributed programming, advancement of the state-of-the-art and paths forward to better application of theory in practice.

The main objectives of this workshop are the following:

  • To review the state-of-the-art research in languages, models, and systems for distributed programming;
  • To identify areas of critical need where research can advance the state of the art;
  • To create a forum for discussion;
  • To present open problems from practitioners with an aim towards motivating academic research on relevant problems faced by industry.

In the spirit of both ECOOP and Curry On, this workshop aims at favoring a multidisciplinary perspective by bringing together researchers, developers, and practitioners from both academia and industry.

Call for Papers

First Workshop on Programming Models and Languages for Distributed Computing

Co-located with ECOOP 2016, Rome, Italy

Date: July 17th, 2016

Whether you are programming a rich web application in JavaScript that mutates state in the client’s browser, or you are building a massively deployed mobile application that will operate with client state at the device, it’s undeniable that you are building a distributed system!

Two major challenges of programming distributed systems are concurrency and partial failure. Concurrency of operations can introduce accidental nondeterminism: computations may result in different outcomes with the same inputs given scheduling differences in the underlying system unless a synchronization mechanism is used to enforce some order. Synchronization is typically expensive, and reduces the efficiency of user applications. Partial failure, or the failure of one or more components in a distributed system at one time, introduces the challenge of knowing, when an operation fails, which components of the operation completed successfully. To solve these problems in practice on an unreliable, asynchronous network, atomic commit protocols and timeouts as failure detection are typically used.

Because of these challenges, early approaches to providing programming abstractions for distributed computing that ignored them were inherently misguided: the canonical example being the Remote Procedure Call, still widely deployed in industry.

The goal of this workshop is to discuss new approaches to distributed programming that provide efficient execution and the elimination of accidental nondeterminism resulting from concurrency and partial failure. It will bring together both practitioners and theoreticians from many disciplines: database theory, distributed systems, systems programming, programming languages, data-centric programming, web application development, and verification, to discuss the state-of-the-art of distributed programming, advancement of the state-of-the-art and paths forward to better application of theory in practice.

The main objectives of this workshop are the following:

  • To review the state-of-the-art research in languages, models, and systems for distributed programming;
  • To identify areas of critical need where research can advance the state of the art;
  • To create a forum for discussion;
  • To present open problems from practitioners with an aim towards motivating academic research on relevant problems faced by industry.

In the spirit of both ECOOP and Curry On, this workshop aims at favoring a multidisciplinary perspective by bringing together researchers, developers, and practitioners from both academia and industry.

Submission Guidelines

We solicit proposals for contributed talks. We recommend preparing proposals of 2 pages, in ACM 2 column SIGPLAN style, written in English and in PDF format. However, we will accept longer proposals or submissions to other conferences, under the understanding that PC members are only expected to read the first two pages of such longer submissions. Authors with accepted papers will have the opportunity to have their submission published on the ACM Digital Library.

Important Dates

  • Paper submission: May 6, 2016 (any place on Earth)
  • Authors notification: June 10, 2016
  • Final version: June 17, 2016

The list of accepted papers will be announced after the evaluation process is over. Stay tuned at @ECOOPConf!

We Are All Distributed System Engineers, Carl Lerche (Independent Consultant, USA)

The average web and mobile developer works in the context of a distributed system. Yet, only a percentage of these developers realize this fact, and an even smaller percentage is aware of ongoing research in the distributed system space. Their reality is that agility trumps correctness. Most applications today use a last write wins approach. This talk reflects further on the state of consistency in web and mobile development, the challenges that today’s developers face, and provides thoughts on how the academic community could help.

Tracking the Elephants in the System, Zach Tellman (Fitbit, USA)

In any distributed system, for every real-time metric we measure there are thousands we don’t. We choose our metrics by balancing their cost and complexity against their expected utility. We might track the request volume per machine, but generally not the request volume per client IP address. We might track the number of IOPS on a database server, but not the number of IOPS per user-id. Using typical monitoring infrastructure, any attempt to monitor and understand these rates across billions of keys is impractical. And yet, very often the distribution of these keys follow a power law, and a small number of users or clients consume a huge amount of our shared, fixed resources.

Tallyman is a distributed, real-time metrics service designed to monitor frequency distributions comprising billions of keys, using modest resources. It tracks the full distribution approximately, but identifies and tracks the top end of the distribution precisely. These metrics can then be fed back into the system, allowing us to automatically identify and respond to a wide range of pathological behavior. This represents an unfilled niche in practical large-scale systems deisgn, and should be useful in a wide variety of applications.