Piccola is a "small composition language" currently being developed within the Software Composition Group. The goal of Piccola is to support the flexible composition of applications from software components.
Piccola can be seen as a "scripting language" in the sense that compositions should compactly describe how components are plugged together. Because Piccola should also document the architectural styles that components conform to, it should also function as an architectural description language.
Since components may come from diverse platforms and adhere to very different architectural styles, a third important aspect is that Piccola can be seen as a "glue language" for adapting components so they can easily work together. Finally, since components and applications are inherently concurrent and distributed, Piccola can also be viewed as a coordination language.
To address these various issues, we propose to develop Piccola based on a formal model of composable "glue agents" that communicate by means of a shared composition medium. Abstractions over messages and agents are first class values, and can be used to adapt compositions at run-time.