The GoF pattern catalog is nice, but it is a "dead end" of sorts because it stops short at "patterns" and doesn't delve into the concept of pattern languages. The individual patterns are the primary emphasis, with some mention made of how they might relate to a few other patterns. Pattern languages go much further, dealing with rich interactions between patterns to indirectly generate solutions for more fundamental problems, much larger than any one pattern can address by itself.
In another, little known (and very expensive + hard to find) tome titled Preview of the Art of the 21st Century, Alexander describes how "truth" and "beauty" are present in ancient Turkish prayer carpets. The artisans who created these carpets were striving to capture the likeness/face of God in them; the structure of the universe.
Richard Gabriel's book Patterns and Software: Tales from the Software Community contains what is probably one of the best descriptions of Alexander's search for truth and beauty in carpets and use of the "bead game". Alexander would take different carpet designs, or different configurations of colored beads, and then ask observers to tell him which of two designs (or configurations) was more beautiful or pleasing to them and why. Confoundingly enough, it appeared that what we all might think of as being purely "in the eye of the beholder" was in fact less subjective than we believed. Apparently the overwhelming majority of individuals from all various walks of life seemed to converge on what they felt was the most pleasing or beautiful.
Alexander tried to carefully study the different characteristics or "properties" which, when present, seemed to trigger a preference in observers for designs which possessed that property. Certain things like centers, symmetry, and "effective" use of positive and negative space, kept recurring as aspects to which all people seemed aesthetically attracted. Alexander was trying to use the results of these experiments to verify/validate to his belief that beauty, is in fact objective (at least at its deepest and most fundamental levels of recognition).
In the book A Pattern Language, Alexander recaptures the mores of beauty: utility, aesthetics, and durability (cf. Vetruvian Pillars). In The Timeless Way of Building, Alexander states that the patterns of these kinds of beauty were already in our heads and were deeply embedded within our cultures throughout much of the previous history of civilization, but that we forgot these things as we evolved toward cultures that were more technically-oriented and became separated into more specialized disciplines and groups, rather than more eclectic, cross-functional ones.
We lost awareness of many of the rich social connections the previous cultures had because the towns and buildings were no longer designed, built and arranged by their intended inhabitants (the community itself) but are now instead built by specialists, "architects" who draw up blue prints and hand them over to construction crews. As a result of losing this "connectedness" to the whole community, we lost the awareness of "wholeness" and how all the pieces fit together into a gestalt (a whole that is greater than the sum of its parts). Thus we forgot the age old patterns that were at the heart of our social networks and cultural communities which had always been used to guide our designs of these kinds of living structures.
For Alexander, patterns are structures that solve some sort of architectural or social problem embodied in the structures that we build, and occur in a greater context to work with other patterns to form architectural styles. These patterns are culturally sensitive: culture and values are important (cf. Social Network Theory). Anthropology is an example of a discipline which studies patterns of communities and organizations: their ceremonies, rituals, social mores, memes, leitmotifs, etc.
One of the earliest books about "patterns" was written in 1948 by A. L. Kroeber, entitled Anthropology: Culture, Patterns, and Process. In this work, Kroeber discusses three levels of cultural patterns:
Through empirical results of numerous experiments, Alexander has arrived at 15 fundamental properties, very deeply psychological or even biological in essence, which form our most fundamental notions of order and beauty [hmmn - cf. Jung's notion of "Collective Unconscious"]. Some of these may be even deeper, relating to survival instincts and evolution [cf. Maslow's "Hierarchy of Needs"]. These ideas of Alexander's are 20 years ahead of where we are now in the software patterns community.
A "center" is "something we notice" as a structure; something which captures our eye as being "architecturally interesting". A center will draw our attention [cf. center of attention] from amidst its neighboring structures (which may also be centers in their own right) by differentiating itself from them via some kind of boundary (possibly a very fuzzy boundary). Examples of centers might be: a row of tiles on a ceiling or floor, a hallway, a pond in the countryside, and what we in the software patterns community think of as "patterns". Patterns are stereotypical centers.
According to Alexander, everything has "wholeness", but some things have more of it than others. All such things have noticeable centers, which are themselves made up recursively of other centers. The Nature of Order presents a unifying model of design for unfolding "wholeness" by a process of intensifying centers. A "good" center will reinforce the other centers around it. Existing centers may be augmented by adding adjacent centers, or by augmenting its adjacent centers, or the centers contained within it.
The final result is a collection of recursive and hierarchical centers which are integrated at all levels of scale and which reinforce one another. One starts with basic, essential centers and then recursively unfolds the design to elaborate more centers without destroying the existing ones. An example stated by Alexander is that cells divide, and then differentiate themselves to reinforce existing centers. Centers may occur at any scale but the relative scale of centers within centers is significant.
Patterns, then, are regional points or invariants in the design which exhibit deeper centers; they are configurations of centers that serve some cultural context which is germane to that particular culture. Whereas patterns have "names" and are only a point in the namespace of the system, centers are truly nameless and deal with deep structures in the human psyche and beyond. The "good space" in a design space is where explicitly recognized, common configurations of centers reside. This material in The Nature of Order is many times more general than patterns.
Hence, design consists solely of the applying these structure-preserving transformations to intensify existing centers and create new ones. The wholeness of the system evolves via piecemeal growth, unfolding from the recurring application of structure preserving transformations [cf. morphogenesis?]. Each new application of a "pattern" must be contained in, or somehow "mesh with" the other patterns in the system.
But what are these structure preserving transformations? To find out, we must return to Alexander's premise that "beauty is objective." In other words, faced with two design alternatives resulting in different structures, the sense that one is somehow "better" than the other transcends subjectivity and can be experimentally verified to be objective.
Within or around any given center, there will exist smaller centers
which are one level of scale lesser in size. The difference in scale
should be somewhere between a factor of 4 and a factor of 10.
[[cf. Salingaros in "The Laws of Architecture from a Physicist's
Perspective" where he states the three laws of architecture as:
I find it particularly interesting that the "level of scale" suggested
here happens to be the root of the so called "natural" logarithm]]
Cope reads from the NoO draft: "any perturbation of irregularity which develops near [center] 'A' causes a latent center 'B'. As this latent center gets stronger, this will then cause an aggregation or nucleation near the first center. It must be a jump in scale or else it will not preserve the structure."
Whenever a center is formed, successive structure preserving transformations will call out smaller centers around and within it, which, by virtue of their spatial positioning, are arranged in just such a way that it strengthens the first center. As the architecture unfolds and more structure preserving transformations are applied, this will happen with all the centers in the system.
Alternating repetition involves "latent centers" (centers which are not yet completely formed) in the adjacent spaces between the repetition of centers. When the latent centers become more fully formed, they will become a repeating sequence of centers all on their own; one which alternates in between the sequence of centers from which it emerged. If the spaces between repeating centers are at all similar, this will eventually occur between all centers in the first system of centers and the second. After a number of these transformations, alternating repetition will appear.
Each center gives rise to one or more (fuzzy) boundaries which enclose the center itself, and also which enclose the adjacent centers around it. As the centers are intensified and more centers are added (using structure preserving transformations) the boundaries will intensify and form bigger boundaries which intensify the centers within them. As this process repeats itself under more structure preserving transformations, these boundaries will occur repeatedly throughout space.
As centers become reinforced and intensified, latent centers become definite centers and take on "good shape" which in turn are reshaped as the design unfolds. [How is this different from "Boundaries"?] In this manner, vague centers are reshaped and strengthened with more definite centers. The overall shape of the centers is intensified by these transformations and itself becomes a center possessing "good shape."
[[NOTE: at this point Cope is spending less and less time talking about each of these properties and is picking up speed, zipping through them. Im not sure how much more description Ill be able to provide for the rest of them.]]
The pattern "City-Country-Fingers" from APL is an example of deep interlock and ambiguity. [Hmmn - I wonder if many of the classic drawings by M. C. Escher would also be good examples of this.] Along any edge between two centers, random perturbations will form disturbances whish exist as latent centers. As these seemingly random latent centers are intensified, the proceed into one zone, or the other, or along the edge. When centers along the edge are strengthened, they penetrate more deeply into the two zones (centers) on either side; thus centers are established which penetrate both of the large centers and new centers along the edge will appear to belong equally to both sides.
One effect of structure preserving transformations is that they give each center more distinctness by differentiating space between them and within them. This differentiation from the surrounding space is progressively intensified to achieve "contrast".
In order to ensure that smaller centers work together to form larger ones, smaller centers are often irregular in shape ("syncopated in shape and arrangement") to create a smooth fit of the smaller centers into the larger centers. This kind of "imperfect similarity" gives rise to "roughness", and is an outward sign of deeper order as larger centers are being perfected.
Echoes are repeated structural similarities. They are structures which repeat with slight variations from one another, as opposed to being precisely identical [cf. variations of a theme in classical music]. Cope (reading again): "In the weatherbeaten face of an old man, the lines and angles all over his face, make a similar pattern, centers are organized with a similar morphology; there are echoes from point to point throughout his face."
These similarities of process create structural similarities (or "echoes") in different parts of the system: systems of similar angles and shapes which bear a familial resemblance to each other in the different centers where they occur.
"The Void" results from periodic "cleaning out" or "self-organizing". Centers, or groups of centers, will sometimes become too abundant and/or too intense. The resulting conglomeration begins to look a little chaotic or "too busy" (perhaps even confusing). "The Void" is a kind of protective-response [cf. basic animal instincts of self-preservation, and preservation of the species] to preserve the structure of the system by purging some of the overly-intense centers, replacing them with a "homogeneous emptiness" which differentiates and clarifies some of the smaller, less visible centers (perhaps even heretofore unnoticed [latent?]).
In general, to protect structure and the multitude of smaller and less important centers and overly differentiated space gets purged or cleaned out -- replaced by a "homogeneous emptiness." Some of the smaller centers are then strengthened by this resulting emptiness and homogeneity. So "the Void" takes on the purpose of strengthening smaller centers that were previously unnoticed.
A kind of "intensification by simplification" of centers which removes unnecessary elements and distills the resulting centers to their more basic essence. As the cleaning out of irrelevant structures continues, and centers are further intensified by simplification, a state slowly appears in which nothing unnecessary remains present. All irrelevant and confusing centers that irritate the structure or reduce the value/importance of other centers are swept away until a simple, inner-state arises naturally as part of the structure-preserving process. [[Hmmn - this one is starting to sound a lot like "self-organizing systems", even more so than the void IMHO.].
Cope reading again: "as the structure develops through its uncompleted forms, the pressure to unify continues. Each part becomes wedded more firmly to the others. Exaggerated differences are eliminated.
Not-separateness is a kind of ambiguous unity (e.g.: where does the pond end and the shore begin? or where does the shoreline and and the sky begin?) [How does this differ from "Deep Interlock and Ambiguity"?] As the last centers are placed to create an almost sheet-like unity, each part begins to appear inseparable from the others.
[[These last three properties seem to be about taking things out, rather than adding things into the mix -- cleaning house if you will.]]
Each "wholeness" is made entirely from centers which consist of these elements in appropriate combination, and the resulting latent structural boundaries (cf. "Golden" rectangles). As the wholeness of the system unfolds, these 15 structure-preserving properties recur more and more frequently at all levels of scale (they are both comprehensive and dense in their pervasiveness). While this is happening, latent centers in the system become progressively more intense and more differentiated. Supposedly, this reflects precisely how the 15 properties recur in nature and natural processes. [[Why does all of this stuff keep making me think more and more of fractals?]]
Centers, patterns, and structure preserving transformations must be employed in a way such that no center nor transformation need be aware of those which follow it. Each new element is introduced in the context of previously introduced elements. The dependencies between elements form one or more partial orderings. These "partial orderings" of centers to visit and transformations to apply are called sequences. At any given point in a sequence, the next transformation to apply should be the one that preserves "wholeness" (the "life" of the system as a whole) while having the greatest system-wide impact [hmmn - this seems partially reminiscent of risk-based approaches which tackle the riskiest areas first].
Processes (sequences) need to employ feedback. Very contemporary processes make use of feedback to gain "wholeness" and to assess the resulting system as a whole (while it is still "live", rather than "postmortem") [how is this similar/different from Deming's use of feedback and feed-forward for statistical quality control?]. A sequence is like a path through a system; a guided tour of the system, as you are building it, which incorporates immediate feedback (unlike "pre-ordained" processes or procedures where everything is spelled out up front). Each walk along the tour builds upon the system using structure preserving transformations according to the laws of nature, in order to reproduce in structures built by humans, the structural qualities that recur in nature.
In the generator project that Alexander, Dick Gabriel, Ron Goldman and Cope have been talking about together, Alexander is much less concerned about the sequeencing of the patterns than about the fundamental process that focuses on weak centers first. The fundamental process is essentially:
This fundamental process will often be orthogonal to the structure of the pattern language, which is built largely on a concept he calls "containment".
So what a generator would do is allow you to pick weak areas and add centers. It might suggest an overall sequence, and would suggest patterns in addition to individual centers now and then.
If you consider the Tea House sequence, which is articulated as a sequence instead of a pattern language, it has 24 steps. Alexander notes that the sequence is indeed important: there are 10^35 possible orderings of 24 steps. But he doesn't say that just one of them will work; probably a few thousand will. And he says this without regard to any single partial ordering or layering.
So, a pattern language is just a start. Remember, patterns are just the gate. The real process comes from instinct and avoids explicitly pre-arranged forms; he even says so at the end of TTWOB (or is it APL?)
As it turns out, the type of process described in The Nature of Order is very much like what members of the so called "gentlemen hacker" culture (which sprang out of MIT in the 60s) used to build their systems. Examples of such "gentlemen hackers" are/were: Doug Lea, Richard Gabriel, Don Knuth, .... Sadly, most people failed to realize that, although these processes appeared to lack rigorous formality, they did in fact entail a great deal of discipline, integrity, and intellectual rigor that stemmed from pride in artisanship, and in one's craft in general. These profoundly insightful "hackers" looked at the system as "a whole" rather than as the mere sum of its parts. It is unfortunate that this lack of formality was misconstrued as a lack of discipline, transforming the word "hacker" from something to be emulated, into something which is now loathed within software engineering circles that place great emphasis upon process definition and improvement.
There are two projects currently underway which are trying to make use of the things described in The Nature of Order. Alexander is involved with a project called "The Generator" which is a system to help architects discern the proper sequencing of centers through which to walk system designers. There is also a consortium of some of the big names in software and other disciplines trying to work with Alexander to do the same kind of thing for software (Cope and Dick Gabriel are participating in this effort -- Cope doesn't appear to be too optimistic about its likelihood of success and continued funding).
But software is intellectual thought "stuff"; it is group poetry writing. The problem with this is that we lack a shared body of common literature to use as a basis for our communication. Many of us in this room have probably read some of "the classics" in American literature like Huck Finn and Moby Dick. We don't yet have any analog for this in the software culture. What percentage of software developer's have all read the source code for things like Don Knuth's MIX, or TEX? What about Bjarne Stroustrup's code in cfront? How about the source code for Emacs (either Stallman's original version written in TECO, or Gosling's re-write in C)?
The corporate culture in which most software is developed, actively condemns this kind of information sharing. This makes it difficult for us to come up with the software equivalent of a shared body of literature. Corporate memory retention is generally very short (typically <= 3 years) and fails to establish a value system which instills within us the need to value such shared communication (some efforts within the free software community are helping to push certain people in this direction).
So the software patterns movement is still in its infancy (we still have problems writing and defining patterns and pattern languages) and we may very well have to sweat through 20-30 years of software patterns and pattern languages before the industry is ready to progress and evolve as a community to where Alexander has taken patterns now with The Nature of Order.