On the Nature of The Nature of Order


The Chicago Patterns Group presents:
James O. Coplien
on Christopher Alexander's latest work entitled:
The Nature of Order

Tuesday, 5 August 1997
[notes taken by Brad Appleton]


Where we are with "patterns" in the software community

We've all been captivated by this "patterns" stuff in the software community as of late, but for Alexander, this was 20 years ago and his ideas have evolved into bigger and better things. His latest work (still in progress) is called The Nature of Order and describes the current state of Alexander's thinking based upon his 20+ years experience with patterns and where they should be leading us.

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.

How we arrived there

GoF and POSA are both laudable and important works, but people need to read Alexander's writings before they can truly understand what patterns and pattern languages are all about. Alexander's first known work on this subject was Notes on the Synthesis of Form (which was really his graduate thesis). In [Notes], Alexander writes of what he calls "misfits" (which later evolved into "forces") and structures/sketches (which later evolved into "patterns"). Alexander was trying to focus on aesthetic concerns and utility.

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:

  1. Total Culture Patterns (or "Whole Patterns")
    Patterns which are pervasive throughout a particular culture or community. They depend on the roles of people within their communities and identify or characterize its culture.

  2. Systemic Patterns
    Patterns conveying fundamental utilitarian structures which recur in different cultures but which share a common historical root.

  3. Universal Patterns
    Patterns which relate to cognitive and psychological concerns rooted deep in the human psyche and which are common to all of humanity.

Where we need to go: The Nature of Order

Alexander, through his studies, has moved out of culturally sensitive patterns into the cognitive and psychological aspects of geometry which are universal. He is concerned with unlocking the secret behind what constitutes the essence of what he now refers to as "wholeness". What is it that makes some carpets more "whole" than others? The Nature of Order is a kind of grand unified theory on how things grow in nature (natural processes).

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.

Wholeness and Centers

In his earlier works ([APL] and [TTWoB]) Alexander often refers to "the quality without a name" (abbreviated as QWAN). In The Nature of Order, Alexander has advanced his notion of this "quality" and now uses the term wholeness. Wholeness (and "life") emerges as a result of naturally occurring processes which are based on locii known as centers.

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.

Structure-Preserving Transformations

So what is the process for "unfolding wholeness" from centers? Centers are elaborated from, and enhanced by, other centers using what Alexander calls structure-preserving transformations. When attempting to augment or intensify a center, one must be careful to preserve the structure of the existing center as well as the structure of the centers around it. Thus, when adding or elaborating a given center, we must carefully observe the result to see if it does, in fact, increase the wholeness of the system, or if it detracts from the overall result. If it does not increase the wholeness of the system or reinforce existing centers then we need to back off and try something else.

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.

The Fifteen Fundamental Properties of Wholeness and Life

Through repeated experiments, Alexander has correlated this objective sense of beauty to the presence of fifteen fundamental properties which recur throughout human cognition and are apparently rooted deep within the psyche. The number of these properties (15) is not at all "magical" in any way. It is completely arbitrary, and merely the byproduct of correlating the results from Alexander's experiments. These 15 fundamental structural properties are:

  1. Levels of Scale
    [cf. aggregation, hierarchical (de)composition?]

    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:

    1. Order on the smallest scale is established by paired contrasting elements, existing in a balanced visual tension.
    2. Large-scale order occurs when every element relates to every other element at a distance in a way that reduces entropy.
    3. The small scale is connected to the large scale through a linked hierarchy of intermediate scales with scaling factor approximately equal to e = 2.718.
    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."

  2. Strong Centers
    Centers may overlap but they should not completely lose their identities. Strong centers are centers that have been reinforced by other centers and intensified by structure preserving transformations. Cope reads from NoO again: "In the growth of a flower, there is a field effect taking place, caused by chemical gradients in the sap. As one center forms -- the position of the flower heads -- leaves, stems, and other parts of the flower then rearrange themselves to support the flower with sap, and in the process create a field effect which actually intensifies the center."

    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.

  3. Alternating Repetition
    These are recurring/repeating structures throughout the design. Cope reads (yet again): "Atoms, waves, leaves, grains of sand, cirrus clouds, all have the repetition of some given type of center, many times spread through a portion of space."

    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.

  4. Boundaries
    [cf. encapsulation?]

    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.

  5. Positive Space
    Positive space is the region of the design filled with "latent centers". Centers which have not yet emerged, but which, when they do emerge, will fill the empty space in a "positive" way, with centers that reinforce it. [I asked the question of whether or not this was at all like the way Michelangelo claimed he could "see" the human form in the empty block of stone before he sculpted it.] Repeated structure preserving transformations will take such latent centers make it more center-like, resulting in center that are more "solid". As this empty space of latent centers is filled, pushed, pulled, connected, each piece of it becomes a center and hence more "positive".

  6. Good Shape
    [cf. abstraction???]

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

  7. Local Symmetries
    Recurring, and often co-located, structural similarities which strengthen and reinforce centers, and which are themselves strengthened, reinforced, and replicated. [Sounds like fractals to me.]. Local symmetry will almost always intensify any center. Each local symmetry intensifies some local center. Gradually, the density of such local symmetries will increase.

  8. Deep Interlock and Ambiguity
    [cf. cohesion?]

    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.

  9. Contrast
    Is the zebra white with black stripes or black with white stripes?

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

  10. Graded Variation
    As centers are added and intensified, the spaces around them form step-by-step gradients pointing toward the center and strengthening it [the "field effect" again?] Slowly graded variation will appear throughout space, around many of the centers at both large and small levels of scale. The gradients supplement and reinforce existing centers.

  11. Roughness
    As the system evolves, centers (particularly the ones at larger layers of granularity) connect in interesting ways to form "rough" boundaries, edges, layers, and other shapes (sometimes unusual). Roughness should occur down to 1/60 of an inch [is that another level of scale?]. One example is a system of growing crystals.

    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.

  12. Echoes
    [cf. specialization inheritance]

    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.

  13. The Void
    [cf. class hierarchy refactoring]

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

  14. Simplicity and Inner Calm
    [cf. elegance? abstraction?]

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

  15. Not-Separateness
    [cf. coupling? connectedness?]

    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?]]

Sequences

The order in which centers are created and intensified, and in which structure-preserving transformation are applied, is of paramount importance. This is where "process" becomes crucial. Alexander says that modern architecture and urban planning doesn't pay enough attention to process (not "process" like ISO 9000 or the SEI CMM, but in terms of methods, and how "it" all works together and is integrated into a "whole", self-sustaining ecosystem).

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:

  1. Consider the whole.
  2. Focus on what can be done to increase wholeness
  3. Find a place where the creation of a new center will achieve that
  4. Add that center in a way that also intensifies the life of some larger center
  5. Make another center of the same size, adding local symmetry
  6. Contemplate the result for wholeness (the Rug Test questions)
  7. Repeat starting at step 1
  8. Stop when there is no more feeling of increase in wholeness.

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

How do we get there?

Alexander's architectural movement began in the 60s and has taken nearly three decades to mature into what is contained in The Nature of Order. Unlike other disciplines, software is not confined by the same laws of nature as the physical world: It doesn't have to obey the laws of physics, nor is it subject to other such things that might somehow serve to prevent nightmarish spaghetti code.

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.