Many distributed applications have to meet their performance or quality-of-service goals in environments where available resources change constantly. Important classes of distributed applications (including distributed multimedia codes, applications for mobile devices, and computational grid codes) use runtime adaptation in order to achieve their goals. The adaptation behavior in these applications is usually programmed in ad hoc code that is directly incorporated into the base application, resulting in systems that are complex to develop, maintain, modify, and debug. Furthermore, it is virtually impossible to extract high-level information about adaptive behavior using program analysis, even if there were compiler and runtime systems that could exploit such information. The goal of our research is to develop compiler and programming language support to simplify the development and improve the performance of adaptive distributed applications. We describe a simple set of language extensions for adaptive distributed applications, and discuss potential compiler techniques to support such applications. We also propose a task-graph-based framework that can be used to formalize the description of a wide range of adaptation operations.