About the Portland Form
The repository prefers patterns written in the Portland Form, a form first adopted by three
authors submitting papers to the Pattern Languages of Programs conference, PLoP '94.
(All three were from Portland, Oregon, hence the name.)
The form has been described as narrative, as opposed to the more outline like form of keyword
templates first used by Peter Coad and made popular by Erich Gamma, et. al.
The form is actually a fairly direct emulation of Alexander's form with some simplification
We hope that the hypertext aspects of the repository will more than make up for the omissions
and simplifications of the Portland Form.
Each document in the Portland Form contains a system of patterns that work together.
Alexander calls such systems
"languages" since he believes the human mind assembles the patterns of a design in much the
same way it assembles the words of a natural language, namely, without much conscious thought.
The Portland Form collects and connects patterns so that they will be studied and understood
as a whole. Although we believe all patterns will be ultimately linked, we currently give
authors the responsibility of defining a suitable whole consistent with their
own knowledge and their readers ability to absorb. This unit we call both a language and
a document. (Authors should consult our Submission Guidelines
for formatting details.)
Each pattern in the Portland Form makes a statement that goes something like:
"such and so forces create this or that problem, therefore, build a thing-a-ma-jig to
deal with them." The pattern takes its name from the thing-a-ma-jig, the solution.
Each pattern in the Portland Form also places itself and the forces that create it within
the context of other forces, both stronger and weaker, and the solutions they require.
A wise designer resolves the stronger forces first, then goes on to address weaker ones.
Patterns capture this ordering by citing stronger and weaker patterns in opening and closing
paragraphs. The total paragraph structure ends up looking like:
- Having done so and so you now face this problem...
- Here is why the problem exists and what forces must be resolved...
- Make something along the following lines. I'll give you the help I can...
- Now you are ready to move on to one of the following problems...
Long pattern languages find groups of patterns working around similar ideas.
Portland Form introduces such groups with a summary section. This section will
explain the general problem under consideration and name the patterns that
So this is what one will find in the Portland Pattern Repository.
We are a part of a larger exploration that finds its focus in the PLoP conferences
in particular and in the object-oriented programming community in general. We hope you
find the documents useful and the form intriguing.
Ward Cunningham, firstname.lastname@example.org