What is a pattern language?

A pattern language is a collection of patterns that work together to describe a design. These patterns are linked together via hyperlinks. The hyperlinks describe the way the elements of a design are linked: some are subsets of others, and some are parallel to others.

A pattern language is not a linear path to a design objective -- what's sometimes called a "waterfall" process. (Because each step flows directly from the step before it to the step after it.) Rather, a pattern language is a network that provides the capability to produce the kind of design result that is desired in a given context -- say, by a later user. Of course the original designer cannot know what a given user actually wants in the future, so typically the designer assumes a range of choices. But in so doing, the designer limits what the user can choose.

In this sense, pattern languages are a form of Ateleological Design. That means they do not necessarily aim for specific design outcomes at all. Rather, they increase the capacity for the design process to achieve a much greater range of outcomes, while preserving coherence.

We'll explore what this means in the following pages.