<?xml version="1.0"?>
<?xml-stylesheet href="/transform" type="text/xsl"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:bibo="http://purl.org/ontology/bibo/" xmlns:bs="http://purl.org/ontology/bibo/status/" xmlns:ci="https://vocab.methodandstructure.com/content-inventory#" xmlns:dct="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#" lang="en" prefix="bibo: http://purl.org/ontology/bibo/ bs: http://purl.org/ontology/bibo/status/ ci: https://vocab.methodandstructure.com/content-inventory# dct: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/ owl: http://www.w3.org/2002/07/owl# rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# xhv: http://www.w3.org/1999/xhtml/vocab#" vocab="http://www.w3.org/1999/xhtml/vocab#" xml:lang="en">
  <head>
    <title lang="en" property="dct:title" xml:lang="en">The Nature of Software</title>
    <base href="https://the.natureof.software/introduction"/>
    <link href="http://purl.org/ontology/bibo/status/published" rel="bibo:status"/>
    <link href="" rel="ci:canonical owl:sameAs" title="The Nature of Software"/>
    <link href="//doriantaylor.com/person/dorian-taylor#me" rel="dct:creator" title="Dorian Taylor"/>
    <link href="newshuttle" rel="foaf:depiction"/>
    <link href="./" rel="xhv:contents" title="The Nature of Software"/>
    <meta content="Introduction" property="bibo:shortTitle"/>
    <meta content="The Nature of Software is a serialized essay, an attempt to reconcile Christopher Alexander's 2,500-page magnum opus, The Nature of Order with the craft of software development. Written by Dorian Taylor." name="description" property="dct:abstract"/>
    <meta about="//doriantaylor.com/person/dorian-taylor#me" content="Dorian Taylor" name="author" property="foaf:name"/>
    <meta content="summary_large_image" name="twitter:card"/>
    <meta content="@doriantaylor" name="twitter:site"/>
    <meta content="The Nature of Software" name="twitter:title"/>
    <meta content="The Nature of Software is a serialized essay, an attempt to reconcile Christopher Alexander's 2,500-page magnum opus, The Nature of Order with the craft of software development. Written by Dorian Taylor." name="twitter:description"/>
    <meta content="https://the.natureof.software/newshuttle" name="twitter:image"/>
    <template>
      <nav>
        <ul>
          <li>
            <a href="./" rev="dct:hasPart" typeof="bibo:Website">
              <span property="dct:title">The Nature of Software</span>
            </a>
          </li>
        </ul>
      </nav>
    </template>
  </head>
  <body about="" id="ECDsK9rMS8cMFMuTROA9AL" typeof="bibo:Chapter">
    <section>
      <h2>Preface</h2>
      <p>This project was conceived in part by the overwhelming response from <a href="https://doriantaylor.com/at-any-given-moment-in-a-process">what I ended up calling a <em>retrospective</em> of Christopher Alexander's work</a> at the time of his passing. In it, I referenced <a href="https://youtu.be/98LdFA-_zfA">a keynote address he gave in 1996</a> to a room full of programmers. The keynote covers three major points:</p>
      <ol>
        <li>Patterns are inadequate (for producing what he called <dfn>living structure</dfn>),</li>
        <li>A new theory replaces&#x2014;or rather, subsumes&#x2014;pattern languages,</li>
        <li>Software people are uniquely positioned to help.</li>
      </ol>
      <aside role="note">
        <p>For starters, there are an order of magnitude more programmers than there are architects.</p>
      </aside>
      <p>Twenty-six years later and not only are we still talking about patterns, we're still talking about them <em>wrong</em>. Their inventor is no longer around to correct us, but he left instructions. The caveat, however, is that those instructions are laid out in <a href="https://www.eurospanbookstore.com/page/publisher-detail/the-center-for-environmental-structure/">a four-volume tome that weighs twelve pounds and is over 2500 pages long</a>. Like the patterns, the text is calibrated to the construction of actual buildings, and needs to be reinterpreted&#x2014;and not to mention significantly compressed&#x2014;for software, in order for us to make use of it. This is what I endeavour to do.</p>
      <section>
        <h3>What To Expect</h3>
        <p>This series is going to take a personal view on Alexander's magnum opus, The Nature of Order. It is an essay in installments. I have no qualifications other than the fact that I have closely read it, as well as pretty much everything else Christopher Alexander has ever written, and that I started working in software around the time he gave that keynote. The best I can offer is to be clear and honest in my own interpretation; anybody who wishes to contest it can read the source material for themselves.</p>
        <p>This series focuses exclusively on The Nature of Order. It begins with an introductory issue (what you are currently reading), then every 2-3 weeks or so, an issue for each of the 15 fundamental properties/transformations (if you don't currently know what I mean by that, I will be explaining it below), then at least one synthesis/conclusory issue afterward. I will not be talking about patterns except insofar as they are relevant. I will also be assuming that my audience mainly consists of software professionals <a href="https://doriantaylor.com/at-any-given-moment-in-a-process">who know <em>something</em> about Christopher Alexander</a>&#x2014;at least about patterns&#x2014;and is at least <em>aware</em> of The Nature of Order.</p>
      </section>
      <section>
        <h3>This Is Not a Hagiography</h3>
        <p>Christopher Alexander had a rare gift, not only to be able to see what many others could not, and not only respond to what he saw with his own work, but also put it into words for others to do the same. This, however, does not make him a saint. It took him, over six decades, hundreds of buildings and thousands of pages of published text to articulate what he saw. If he had succeeded by his own standard, his ideas would have seen more uptake during his lifetime by dint of being more accessible than they were; by being addressable by more people than they are. It wouldn't be so easy for people to publicly misrepresent his ideas or co-opt them for their own agendas. If he had been successful, promulgating his message wouldn't take a four-volume, 2500-page monsterpiece that costs a fortune and takes a year to read and several more to digest&#x2014;on top of another 2000 or so pages of foundational material.</p>
        <aside role="note">
          <p>This is not to say that Christopher Alexander was overly verbose, or an obscurantist. Quite the opposite: his writing is eminently plain and accessible&#x2014;there's just <em>that</em> much to discuss.</p>
        </aside>
        <p>What Alexander <em>did</em> achieve during his lifetime is consistent with a person operating at the very edge of their capability. There are consequences to that. We in software have our own examples in people like <a href="https://en.wikipedia.org/wiki/Ted_Nelson">Ted Nelson</a> (who is, as of this writing, still alive) and <a href="https://en.wikipedia.org/wiki/Douglas_Engelbart">Douglas Engelbart</a>. Perhaps the problem is too big for one person to tackle in a career, or too nebulous to even <em>articulate</em> such that one can solicit effective help. In any case, it is a high-risk mode of operation that tends to involve the people around you. If you choose this path, your sacrifices are not your own. This is nothing to celebrate; nothing to beatify. I empathize with this position, but as I age, I find it gets harder to justify.</p>
      </section>
    </section>
    <section>
      <h2>How Software Is Like the Built Environment</h2>
      <p>Buildings and software both shape human behaviour. Indeed, software is a newcomer, and in some ways a powerful solvent and catalyzing agent to buildings and other staid forms of organizing social activity: law, philosophy, mythology and religion, ritual and ceremony, science, art, et cetera. The Nature of Order touches on these topics, but it is proximately about buildings, so buildings are where we will be making our main comparisons.</p>
      <section>
        <h3>Apply Constraints, Gain Affordances</h3>
        <p>All structure is borne of constraints, because without constraints there are no <a href="https://doriantaylor.com/lexicon/affordance"><dfn>affordances</dfn></a>. Buildings dictate&#x2014;or at least influence&#x2014;how people move about them through the placement of materials. Software does something analogous, though both what it does and how it does it are harder to summarize.</p>
        <p>All of us are likely to know what a <dfn>constraint</dfn> is, but I'm sure not as many have heard of an <dfn>affordance</dfn>, even though it will be natural to you once you do. We can think of an affordance as the <em>complement</em> of a constraint; it's the capability you gain from <em>applying</em> a constraint. But it's a little more than that. <a href="https://en.wikipedia.org/wiki/Affordance">An affordance is formally defined</a> as a relationship between the environment (in our case, an artifact <em>in</em> the environment) and an individual. It's the set of capabilities, of potentialities, of next steps, that the object <em>affords</em> better than it does others.</p>
        <aside role="note">
          <p>For more about affordances in software design, see <a href="https://inkblurt.com/">Andrew Hinton's</a> book, <a href="https://www.amazon.com/dp/1449323170A?tag=doriantaylor-20">Understanding Context</a>.</p>
        </aside>
        <p>The relationship between constraints and affordances is well-demonstrated by contemplating <a href="https://en.wikipedia.org/wiki/Simple_machine">the simple machines</a>: the lever, the pulley, the inclined plane, all trade off the height you can raise an object (constraint) for how heavy an object you can move (affordance). In the wild, these relationships are going to be much more numerous and complex, but they will always be a function of the structure of the object in question, <em>and</em> its situation in an environment.</p>
        <p>The fact that constraints and affordances derive from structure is important because this is how we make the connection from buildings to software. Structure in buildings reduces to selections of materials and their geometric configuration. Software is all made out of (effectively) the <em>same</em> material, and it does not have an inherent geometry. It <em>does</em>, however, have a <em>topology</em>. Certain configurations of materials and geometry in buildings and other physical artifacts also occupy a semiotic dimension: a building can be crafted to signal to people in ways other than direct influence over the movement of their bodies. Software, being made <em>completely</em> out of signs and symbols, is only ever&#x2731; operating in this way.</p>
        <aside role="note">
          <p>&#x2731;&#x2009;Proximately. Most software doesn't move atoms around directly&#x2014;at least not entire ones. It usually enlists us humans for that.</p>
        </aside>
        
        
        <p>The built environment likewise encodes all kinds of social norms, for good or for ill. Consider gendered bathrooms, segregated building entrances (by race, gender, socioeconomic status, etc.), gated communities, throne rooms, anti-homeless spikes, and so on. Even something as ordinary as locks on doors or frosted glass. Software goes one farther and actually encodes what does and does not get to be recognized as a legitimate concept. Everyday examples include:</p>
        <ul>
          <li>Fixed menus of choices for attributes like race or gender,</li>
          <li>The stipulation that a person must have a last name, and that the last name is the family name.</li>
        </ul>
        <p>While buildings act as a substrate for shaping human behaviour, in addition to this, software also exhibits its <em>own</em> behaviour. Software can (nearly) always behave in ways that only its author is aware of, as well as behave in ways its author <em>isn't</em> aware of. There's very little way to guarantee that at any given moment, a piece of software is working for you and <em>only</em> you, even if you wrote it. This is a universal meta-affordance of software.</p>
        
        <p>As you can see, there are parallels between buildings and software, and considering constraints and affordances&#x2014;that is to say, the <em>configuration</em>&#x2014;of topology and semiosis and cognition, is how I intend to reconcile Alexander's work in architecture with the craft of software development.</p>
      </section>
    </section>
    
    
    <section>
      <h2>Addressing <em>Deep Feeling</em> and <em>Spirituality</em></h2>
      <p>One hurdle we will have to get over before we can proceed, that could be glossed over with the patterns but not The Nature of Order, is Alexander's metaphysical stance. Christopher Alexander was a Catholic, and as such, when he wrote the word <em>God</em>, it is a safe bet that he meant it exactly as a religious person would. The words <em>spirit</em> and <em>spiritual</em> likewise appear dozens of times in the text. This is an essential part of his thesis, and those among us who are allergic to this kind of language can't merely skip over it.</p>
      <p>I will admit to having personal trouble with the word <q>spiritual</q>. My strongest association with the term is seeing it deployed disingenuously by sloppy thinkers pretending to have special access to hidden knowledge. Even earnest people define a <q>spiritual experience</q> in terms of its attribution to the supernatural, a logical leap (often into a circular loop) for which there is no basis.</p>
      <aside role="note">
        <p>Attributing intense emotional experiences to supernatural intervention is a bit like saying <a href="https://youtu.be/b7rYRGbsMW0"><q>I saw a <abbr>UFO</abbr> [that is, an <em>unidentified</em> flying object], therefore it must be aliens.</q></a> That is, if the flying object was actually aliens, then it would be <em>identified</em>. In turn, ostensibly what defines a spiritual experience, is the act of calling it one.</p>
      </aside>
      <p>I am inclined to distinguish <q><em>being</em> spiritual</q> from a <q>spiritual experience</q>. The former is an (often self-reported) personal attribute; the latter is a label for a (potentially) prematurely-categorized phenomenon. Words associated with these experiences include: warmth, light, love, safety, protection, meaning, purpose, infinity, eternity, connection, belonging&#x2014;but ultimately the person undergoing the experience is unsatisfied with a verbal description. <q>Spiritual</q> people will often claim that espousing certain beliefs (typically <em>their</em> beliefs) is a prerequisite for a spiritual experience, but it isn't clear why an individual couldn't experience the phenomenological equivalent in every way, save for that final catapult into supernatural attribution.</p>
      
      <p>Christopher Alexander was not a sloppy thinker; he was a demonstrably rigorous one. It would be a mistake to dismiss him as a crank&#x2014;as many do&#x2014;because of his proclamations that <em>deep feeling</em> and <em>spirituality</em> are essential to his method; that when he said he wanted to <q>make God appear in a field</q>, he meant it literally. It nevertheless sounds a heck of a lot like his methodologies are open only to those willing to make certain ontological commitments, and so we must find a way to reconcile.</p>
      <p><a href="https://en.wikipedia.org/wiki/Baruch_Spinoza">Baruch Spinoza</a> (who gets an endnote in Book 4), in the 17th century, famously <a href="https://www.gutenberg.org/files/3800/3800-h/3800-h.htm#chap01"><q>proved</q> the existence of God</a> by simply <em>defining</em> <q>God</q> as that which has infinite extent&#x2014;in other words, as a synonym for <q>everything</q>. From this we can substitute all references to <em>God</em>, anywhere we see one, with an ordinary definition of <em>everything</em> and not lose any meaning. Indeed in so doing we remain perfectly consistent with Alexander's other central notion, that of <dfn>wholeness</dfn>. So unless your cosmology lacks a concept of <em>everything</em>, you don't need to change your beliefs in one direction or another.</p>
      <p>For <q>spiritual</q>, we can perform a similar manoeuvre, but first we need to back up a little. Alexander asserts in The Nature of Order that the method prescribed therein is contingent on what he calls <em>deep feeling</em>. He criticizes the scientific establishment&#x2014;rightly, in my opinion, though I come to it from a different angle&#x2014;for discounting human feeling as a legitimate empirical measure. Works of art, literature, music, poetry, and so on, observably impel us emotionally, and trained artists can fairly reliably produce works that evoke the specific feelings they desire. To say that an architect could do the same with a building (or, for that matter, a programmer with software) is not much of a stretch. We may not be able to define a precise unit for feeling, and take measurements along its continuum like we do in physics, but we <em>can</em> observe and record that one artifact or process elicits a stronger emotional response, and does so in more people (and much more than can be accounted for by differences in taste), than another. This indeed is Alexander's essential testing criterion.</p>
      <aside role="note">
        <p>What I have described here, and will treat in greater detail later on, is a thing called the <q>mirror-of-the-self test</q>.</p>
      </aside>
      <p>Even if we take our (read: <em>my</em>) cynical framing of <q>spirituality</q>, that consists of a belief in the unfalsifiable with its basis in private feeling, there is still room to move within it. The first is to recognize that there is a difference between unfalsifiable in practice (say, when it isn't feasible to create the experimental conditions) versus in principle (i.e., questions that are fundamentally unanswerable). If we concentrate on the former (although really, not necessarily), we can see that we effectively act on unsubstantiated belief all the time. We have a word for this in our discipline: <em>heuristics</em>: procedures that generate good-enough results under incomplete information that are much less costly to run than exhaustive algorithms.</p>
      
      <p>The next component is to recognize that belief itself doesn't have to be binary. We in our discipline are familiar with this too: <a href="https://www.amazon.com/dp/0521592712?tag=doriantaylor-20">it's called Bayes' Theorem</a>. With it, it's easy enough to talk about a <em>degree of belief</em> that concomitates with how much we're willing to stake on a particular position. Again, there's no rule saying a given bet has to be all or nothing.</p>
      <p>And now, we get to <em>feeling</em> part: there is evidence from linguistics, cognitive science, and developmental psychology that suggests that symbolic concepts&#x2014;that is, things that can be talked about with words&#x2014;are rooted in the body, or in other words, everything that can be <em>said</em> is but a mere <em>subset</em>&#x2014;albeit a much more precise one&#x2014;of that which can be <em>felt</em>.</p>
      <aside role="note">
        <p>In his landmark presentation <a href="https://youtu.be/p2LZLYcu_JY">Doing With Images Makes Symbols</a>, <a href="https://en.wikipedia.org/wiki/Alan_Kay">Alan Kay</a> invokes the work of <a href="https://en.wikipedia.org/wiki/Jean_Piaget">Jean Piaget</a> and its expansion by <a href="https://en.wikipedia.org/wiki/Jerome_Bruner">Jerome Bruner</a> in the titular process of the development of reasoning in children. <a href="https://en.wikipedia.org/wiki/George_Lakoff">George Lakoff</a> (in <a href="https://www.amazon.com/dp/0226468046?tag=doriantaylor-20">Women, Fire, and Dangerous Things</a> and with <a href="https://en.wikipedia.org/wiki/Mark_Johnson_(philosopher)">Mark Johnson</a> in <a href="https://www.amazon.com/dp/0226468011?tag=doriantaylor-20">Metaphors We Live By</a>) advance the notion of a <dfn>kinaesthetic image schema</dfn> as one of three bases (alongside <em>genus</em> and <em>metonymy</em>) for concept formation. It is an entirely reasonable, testable hypothesis that thought and language are refined from feeling; one that is even reflected in the anatomy of the human brain.</p>
      </aside>
      <p>So, if isn't too presumptuous, we can do to <q>spiritual</q> what Spinoza did to <q>God</q>: append a compatible definition, one we can keep strictly phenomenological. We can say something like, a <q>spiritual experience</q> is one that is especially profoundly felt. We can furthermore conjecture (pending empirical study) that the profundity of the feeling is partly due precisely to its resistance to articulation: the emotional intensity is compounded by the losing struggle to put it into words. Whether the subject of the experience chooses to attribute it to a soul, spirits, demons, fairies, or god(s), is up to them, but none of that is necessary to account for the experience <em>itself</em>. A spiritual experience can be defined as at <em>least</em> a profound feeling of feelings, and you're free to take it farther than that if you want to. I don't think Christopher Alexander would have minded either way.</p>
      <p>Alexander's core thesis is that an artifact's ability to elicit deep feeling is an empirical characteristic of its physical and geometric structure. Certain configurations are objectively more evocative than others, and the way to compare them is by actually feeling the difference for yourself. Furthermore, since (according to Alexander) this elicitation is a property of the artifact, different people will tend to report similar feelings with similar intensity, even though the feeling <em>itself</em> is, of course, an entirely private process. It will be interesting to imagine how we can apply deep feeling to the creation of software.</p>
      
    </section>
    <section>
      <h2>Life and Living Structure</h2>
      <p>Christopher Alexander used a peculiar definition of <dfn>life</dfn>. In short, life according to him is not an exclusive feature of biological organisms, but rather a more general process of <a href="https://en.wikipedia.org/wiki/What_Is_Life%3F"><em>local elimination of entropy</em></a> that biological organisms just so happen to exhibit. This more expansive definition tracks very closely to <a href="https://en.wikipedia.org/wiki/Erwin_Schr%C3%B6dinger">Schr&#xF6;dinger's</a> (who gets considerable treatment in Book 4) that arbitrary regions of space can be compared to one another as more or less <em>alive</em>. This expanded definition of life can moreover occur at wildly different scales of time and space. This non-biological <q>life</q> is what Alexander calls <dfn>living structure</dfn>.</p>
      <aside role="note">
        <p>Conventional examples of this living structure are things like anthills, termite mounds, beehives, wasp nests, coral reefs, et cetera. Colonies of eusocial insects are referred to as <em>superorganisms</em>, and their <q>bodies</q>, with their own metabolisms, immune systems, and goals, are made of dirt, wax, chalk, or mud. In a way, humanity can itself be construed as a superorganism, with a skeleton made of concrete, metal, wood, brick, and stone.</p>
      </aside>
      <p>Perhaps the easiest way to understand living structure is to compare it to structure that is dead. The quintessential dead structure is a monument. The only thing to do with a monument is to restore it to the state that it was when it was built, the state away from which it is constantly decaying. Maintaining the monument is a sunk cost. Take away that support and the monument will  crumble to dust. Living structure, by contrast, is lived <em>in</em>. It is continually being revised and expanded. Living structure attracts (biological) life because it supports, protects, nurtures, and encourages it. The inhabitants of living structure have an incentive to contribute back to it, thus making it more living. Thus living structure grows organically, as if it was itself organic.</p>
      <p>This description of living structure sounds a lot like software. Software with any kind of currency is constantly being revised and expanded. If neglected, software detaches from its surroundings, becomes unusable and is quickly forgotten. Furthermore, software with deliberate monument-like characteristics is <em>extremely</em> rare.</p>
      <aside role="note">
        <p>I am inclined to give <a href="https://en.wikipedia.org/wiki/TeX">TeX</a> as an example here, as it has been around for 44 years and is steadily refining toward a fixed, crystalline state. However, there is such a vibrant ecosystem around TeX, that even if its core fossilizes, it will still maintain its cult following long after its author, <a href="https://en.wikipedia.org/wiki/Donald_Knuth">Donald Knuth</a>&#x2014;who is in his 80s&#x2014;passes on.</p>
      </aside>
      <p>The unmaintained building decays in its own right, due to water, wind, rust (the bane of reinforced concrete) and other chemical processes, fungus, algae, plants, and animals. Unmaintained software, rather insidiously (and modulo failures in the hardware upon which it is stored), stays put. It's the <em>world</em> that moves underneath it. <em>Maintaining</em> software is something of a misnomer; rather what we are <q>maintaining</q> is its connection to reality.</p>
      <p>We can say then that the default assumption underpinning software is that it is intended to be living structure. Much like living structure in the ordinary building sense as Alexander meant it, it's what the code <em>does</em>&#x2014;its effect on the <em>world</em> and the people around it&#x2014;that attracts the resources and attention that keeps it alive.</p>
      
    </section>
    <section>
      <h2>Brief Remarks On <em>Centers</em> [sic]</h2>
      <aside role="note">
        <p>As a Canadian, I spell the following word <em>centre</em>, but I will use the American spelling <dfn>center</dfn> to refer to the specific term of art. Indeed I think it's a little odd that somebody born in Austria and raised in England would adopt American spelling, but I suppose he spent most of his adult life in the <abbr>US</abbr>. Expect to see both <em>centre</em> and <dfn>center</dfn> going forward.</p>
      </aside>
      
      <p>Another essential Alexandrian concept, after <dfn>life</dfn>, <dfn>living structure</dfn>, and <dfn>wholeness</dfn>, is that of a <dfn>center</dfn>. The idea might actually be easier to apply to software than the built environment, because software is inherently discrete. In the <abbr>IRL</abbr> formulation, a center is a field-like region of space which may or may not have a crisp boundary. A center nevertheless has a <em>thing-ness</em>&#x2014;an identity&#x2014;and that is really its essential property: A center is something you can point to, and at the very least say <q><em>that</em> one</q>. Centers are recursive; they're made of centers and embedded within other centers, and living structure tends to have a lot (like, a <em>lot</em>) of them.</p>
      <p>Again, since software is made up almost completely of discrete identities, we're going to have to think about how this concept of centers applies. (For one, just having lots of them isn't sufficient; their arrangement is also significant.)</p>
    </section>
    <section>
      <h2>The Fundamental Differentiating Process</h2>
      <p>The natural draw of software people to Alexander's method, I suspect, is due to the fact that we actually <em>have</em> to work this way. Project management strategies based on how buildings are constructed have been repudiated over and over. Lobbying for iterative and incremental processes <a href="https://doriantaylor.com/agile-as-trauma">goes back to the sixties</a>. The <a href="https://agilemanifesto.org/">Agile Manifesto</a> signatories are big Alexander fans. They were mobilized because Waterfall&#x2014;which is (roughly) how you build contemporary buildings&#x2014;doesn't work for software.</p>
      <p>So what is Alexander's method? It reduces to the successive, recursive application of structure-preserving transformations. At the centre is <a href="https://doriantaylor.com/the-fundamental-differentiating-process">the <dfn>fundamental differentiating process</dfn></a> that looks a lot like what we would recognize as an event loop. It has been compared to <a href="https://en.wikipedia.org/wiki/John_Boyd_(military_strategist)">Boyd's</a> <a href="https://en.wikipedia.org/wiki/OODA_loop"><abbr>OODA</abbr> Loop</a>, insofar as it contains steps to <em>observe</em> (the space under consideration), <em>orient</em> (toward the center in most need of transformation), <em>decide</em> (on which transformation to apply), and <em>act</em> (test that the intervention is the best possible one).</p>
      <p><a href="https://doriantaylor.com/the-fundamental-differentiating-process">We can think of this process as a computation</a>, where the main loop selects a transformation based on the current state of the system, applies it, and returns the system in its new state. This archetypal process should be intuitive and immediately recognizable to us.</p>
      <aside role="note">
        <p>The process can either run until changes become too small to measure, or simply terminate after a fixed number of iterations. In Alexander's practice, this equated to allocating a fixed budget, and then spending it.</p>
      </aside>
    </section>
    <section>
      <h2>The Fifteen Properties/Transformations</h2>
      <p><a href="http://www.livingneighborhoods.org/ht-0/fifteen.htm">The <dfn>fifteen properties</dfn></a> are both the <em>nouns</em> that pick out the characteristics of living structure, as well as the <em>verbs</em> that create it. That is, the properties are also <a href="https://en.wikipedia.org/wiki/Morphism">structure-preserving transformations</a>. Each issue, in succession, will examine one of these properties and try to apply it to software. Here they are:</p>
      <ol>
        <li><strong>Levels of scale</strong>: features present at roughly order-of-magnitude sizes, big, medium, small</li>
        <li><strong>Strong centers</strong>: all regions of the space are highly pronounced; you can point to each as its own <q>thing</q></li>
        <li><strong>Thick boundaries</strong>: the boundaries between centers are discernible centers in themselves</li>
        <li><strong>Alternating repetition</strong>: the spaces between repeated features are also discernible features (centers)</li>
        <li><strong>Positive space</strong>: if you were to invert the volume so that air was wall and wall was air, the resulting shape would still be (mostly) convex</li>
        <li><strong>Good shape</strong>: nothing too long or too skinny; aspect ratios not exceeding about 4:1</li>
        <li><strong>Local symmetries</strong>: symmetry is good but don't fuss so much about <em>global</em> symmetry</li>
        <li><strong>Deep interlock and ambiguity</strong>: think like a yin-yang, centers reach and extend into each other</li>
        <li><strong>Contrast</strong>: is hopefully self-explanatory</li>
        <li><strong>Gradients</strong>: avoid big discontinuous jumps in size, shape, colour, etc.</li>
        <li><strong>Roughness</strong>: high precision and finish is for monuments, not living structure</li>
        <li><strong>Echoes</strong>: shapes and structures from one place show up in other places</li>
        <li><strong>The void</strong>: sometimes the best thing for a space is nothing</li>
        <li><strong>Simplicity and inner calm</strong>: this is really just like, don't clutter the space up with bits that don't actually carry any information</li>
        <li><strong>Not-separateness</strong>: acknowledging, through the construction, that everything is situated in a context</li>
      </ol>
      <p>We should note a few things about these properties/transformations. First, they primarily concern <em>geometry</em>, so we're going to have to abstract them in order to apply them to software. Second, the <em>fifteenness</em> is not especially significant&#x2014;it's just the number Alexander ended up with. He had a separate list of <em>eleven</em> properties for colour, seven of which map 1:1 to the geometric properties, and four others map onto two apiece. So we might actually end up with a different number of software properties entirely.</p>
      <aside role="note">
        <p>The presence of a different set of properties just for colour is what prompted me to believe that yet another set of properties for software was feasible. Moreover, the mapping of the colour properties to the geometric ones was the principal clue that the number of properties, or even their exact identities, was not essential per se, but that they were best-effort labels for something more fundamental, that was harder to articulate.</p>
      </aside>
      <p>To wit, I posited in an earlier work that <a href="https://doriantaylor.com/fifteen-properties-through-an-information-theoretic-lens">when you look through an information-theoretic lens</a>, the fifteen properties cluster around three categories of <em>conveying</em> information, <em>compressing</em> information, and <em>throttling</em> information to facilitate uptake&#x2014;a connection we will surely be revisiting. This falls in line with the semiotic aspect of the properties, in their capacity to communicate their significance just by looking at them.</p>
      <p>So that's the program: one property per issue, mapped onto software. Then a conclusory, synthesis issue the end&#x2014;at least one, or however many it takes to make sense of what we surface. Thanks for being part of the journey.</p>
    </section>
  </body>
</html>
