  In the Hydro project we are designing a compiler toolkit that can optimize
for the concerns of distributed systems, including scale-up and scale-down,
availability, and consistency of outcomes across replicas. This invited paper
overviews the project, and provides an early walk-through of the kind of
optimization that is possible. We illustrate how type transformations as well
as local program transformations can combine, step by step, to convert a
single-node program into a variety of distributed design points that offer the
same semantics with different performance and deployment characteristics.
