Creating a Pattern Language for Parallel Programming: the evolving view from Berkeley

One day after its official opening last week, Berkeley's ParLab hosted an informal workshop on writing design patterns -- specifically, parallel design patterns. Participants were a diverse group, from academics (profs and grad students), research labs, and industry; prior pattern-writing experience ranged from guru to utter novice (I filled that particular slot in the roster).

We were guided by Ralph Johnson, coauthor of the original bible of this regime, Design Patterns: Elements of Reusable Object-Oriented Software, as well as Kurt Keutzer and Tim Mattson (coauthor, Patterns for Parallel Programming).

Ok, so...why is this interesting? Consider: the present state of parallel programming looks a lot like that of object-oriented programming in the early 1990s -- a small number of practioners understand and use it, but the overall profession looks on with anxiety. The Design Patterns approach helped to shove OO into the mainstream; could it do so again for parallel programming?

To test this premise, a project has been launched to build up an integrated, coherent set of patterns useful for exposing high-level constructs to concurrency -- a pattern language, as opposed to a collection of patterns. Kurt and Tim have proposed a layer of structural and computational patterns, integrating to one or more an underlying layers of concurrency patterns. We presented a detailed snapshot of this view at the recent ICCAD; slides from that tutorial are here: Architecting Parallel Software.

This is going to take a lot of savvy and effort to get right, so the project has been opened up for viewing and commentary by all:
Berkeley Pattern Language for Parallel Programming.
Participation welcome!