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 in typesetting. We hope that the hypertext aspects of the repository will more than make up for the omissions and simplifications of the Portland Form.

Language Document

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.)

Pattern Paragraphs

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:


Summary Section

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 address it.

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, ward@c2.com