A Pattern Language
patternlanguage.cc
patternlanguage.cc
"Chances are if you're in software or digital design, you've heard of the book A Pattern Language, well, you may not be aware that Christopher Alexander effectively renounced patterns in 1996 (https://youtu.be/98LdFA-_zfA). He said he had something better…
The problem is, that better something happens to be four books and 2500 pages, and weigh 12 pounds. And, it's about buildings, not software. So my service to you is interpreting the text for software, and cutting the reading down by an order of magnitude."
That "something better" being Christopher Alexander's Opus Magnum, "The Nature of Order". Dorian's working on this under the name "The Nature of Software" here:
https://the.natureof.software/
And here:
He also has a good retrospective or précis (medium-length expository summary) on Christopher Alexander, how his views changed, and his work, here:
https://dorian.substack.com/p/at-any-given-moment-in-a-proce...
A Pattern Language is great but a lot of folks miss that it's part 2 of a greater work, with part 1 being The Timeless Way of Building.
Another great Alexander book that flies under the radar is Notes on the Synthesis of Form. It's a little hard to read but there is deep deep insight about design and the design process in that little book. Highly recommend.
And lastly, anyone interested should read A City Is Not A Tree: https://www.patternlanguage.com/archive/cityisnotatree.html
Moreover, there is a clear arc to Alexander's career that goes a little like:
• Mathematical era (PhD/Notes on the Synthesis of Form, A City is not a Tree)
• Pattern era (Timeless Way, APL, and about four case studies)
• 15 properties era (Nature of Order)
As one might expect, a lot of the earlier work is recapitulated in the later work, but the fact that he explicitly deprecated patterns at his OOPSLA 1996 keynote (https://youtu.be/98LdFA-_zfA ) is important. People are aware of APL because of Gang of Four and Richard Gabriel etc but not so much that lecture.
As for the fifteen properties in Nature of Order, they mainly concern Euclidean geometry and the ordinary physics one would associate with constructing actual buildings. The evidence that they would need to be adapted to a more generic semiotic-topological domain such as software is the fact that Alexander himself saw fit to draw up (in Book 4) eleven analogous properties pertaining exclusively to colour (a 1:1 correspondence except for four which coalesce two of the geometric properties each). Concepts like "life", "wholeness", "center", "the fundamental differentiating process" etc. can be used unchanged.
I love that OOPSLA lecture, incidentally. In my view the software industry really missed the mark on what Alexander was outlining there.
As for the software industry, it really latched on to patterns because (and Alexander himself nails it) they offer both a format and a formula for exchanging ideas that are either too ephemeral to write into a library, or otherwise transcend particular languages/frameworks. A lot of the really important insights though appear to have been lost in the process. (I have the Gang of Four book and a Fowler book, and have found neither to be especially useful.)
Have you visited any of Alexander's buildings? I still need to get out and see some.
I saw a lecture from Kent Beck (a huge proponent of Alexander as you probably well know) and he talks about going to the University of Oregon and being inspired by the architecture. As the story goes, he then learned about Alexander but was too poor a college student to afford any of the books. So he read Timeless Way and Pattern Language standing at the shelf in the student bookstore. I like that story because I feel it illustrates the power of Alexander's work - if it grabs you, then it really grabs you.
(You may also be able to go to the Mexicali compound which is apparently still standing: https://maps.app.goo.gl/UkwKqYDrGBcfQLnd6 but don't know what the story is with it.)
The central tenet of Nature of Order (as far as I understand it) is that spaces can support life, that there's a certain liveliness to structure, "life" as a quality. The presence or absence of patterns is used throughout to argue the extent to which a certain space or structure has this quality.
It's all quite esoteric and wonderful at the same time. Most challenging books I've ever attempted to read.
The book begins audaciously by asserting that the world should be divided into political regions of population no greater than 10 million; because "regions will not come to balance until each one is small and autonomous enough to be an independent sphere of culture".
https://patternlanguage.cc/Patterns/Independent-Regions-(1)
After this anarchist utopia, the patterns proceed to describe the distribution of towns and cities, responses to large geographic features like valleys versus hilltops, the layout of towns, suburbs, streets, sites, buildings, and rooms, all the way down to types of chairs and the half inch of trim that joins walls of different materials.
It features detours into aged care ("old people everywhere"), political economy ("self-governing workshops and offices"), culture ("dancing in the street").
Maybe the closest software work I've seen with this scope is the "blue book" on Domain-Driven Design, but even that doesn't come close to addressing the political economy of software, or the act of writing code.
And that's probably fine, but it really does put A Pattern Language in a class of its own.
I think most people read books on software patterns and heard about the original inspiration, and (without having read it) assumed it was the same "but buildings". In reality, it is as much a work of philosophy and sociology as it is about architecture - it's about lives and how people fit together more than how bricks fit together. It stands in a long tradition, Le Corbusier, for example, deriving systems for living and modular approaches to constructing space such as the Unité d'Habitation.
It would be fantastic if we could get software people to read this kind of thing before they see what it's inspired in the software world - there's so much more to learn from disciplines older than ours (which is effectively all of them). A more comprehensive theory of building software systems (based on the human aspects, the social, etc., rather than the dry economic and project-management aspects comprising most formal books on such things) seems like a significant step in our little world.
That's a great way of putting it!
> Le Corbusier, for example, deriving systems for living and modular approaches to constructing space
I agree the comparison is apt, but I much prefer Alexander's humane, bottom-up, anarchistic approach than Le Corbusier's authoritarian high modernism.
Reading The Oregon Experiment is great context for A Pattern Language, seeing the way they envisioned the pattern language being used by a community. And the kinds of organisation they needed to couch it in, the way they needed to change the budgeting process to enable many more smaller projects, the way they co-opted staff and students into planning groups rather than have a siloed professional office.
But, sadly it doesn't seem like this approach has been influential. I can't think of many other places that work this way! So while I do also wish more software people had read and appreciated this work, I don't think it's the immaturity of the software industry that prevents us from appreciating these ideas.
In the introduction to A Pattern Language, the authors write "towns and buildings will not be able to come alive, unless they are made by all the people in society". I wonder if this is also true of software.
I've not yet read The Oregon Experiment (it's in one of the waiting piles) but I've skimmed it. Funnily enough, the comparison you make around changing budgeting processes to enable smaller projects, having users working as part of planning, etc. reminds me of some of the original intents of agile before it was co-opted. For agile to work it couldn't just be isolated as software delivery - it had to change the organisations it worked with/within. I remember having just such an argument many years ago about governments building software using ostensibly "agile" approaches, and yet still requiring three-year budget approaches from the national treasury - they simply weren't compatible!
That final quote is wonderful, and I do feel the same about software in many ways - all the true wonder of computers and the things they can do for people will never really benefit everyone fully unless it spans the national, the corporate, and the personal.
Two points that have stuck with me in the decades since:
1- find the nicest place in your property and don’t build there
2- corridors are wasted space because you travel through them and don’t linger. In the end we had only one corridor like space, and it had glass walls on all sides (one side was doors open all summer) so you felt like you were outside, plus it expanded so there was a place to sit.
The two page chapter structure works well for this. The Society of Mind uses the same structure.
(Funnily enough, the way the original Thief engine worked was beginning with a fully solid universe which the level designers would carve air volumes out of to create the level. This was due to how the engine prioritised sound propagation. So Thief levels had to have positive outdoor spaces!)
Was it Jesse Schell's The Art of Game Design for you, too? I loved that book when I thought I was going to become a game designer. When someone like Schell spoke so highly of Alexander it was plain he had to must be something really special.
[0] https://patternlanguage.cc/Patterns/Connection-to-the-Earth-... [1] https://patternlanguage.cc/Patterns/City-Country-Fingers-(3)
Glad to see some discussion and sharing!
Read it from cover to cover, slowly, or just dip in when you have 5 minutes downtime without a screen. It has wonderful photos. The writing is poetic. The themes are mesmerizing.
It slowly descends the gradient of life, from humanity to town to commerce to recreation to family to solitude.
If I had to sum it up in one word, I would say humaneness. It is a wonderful musing on the human condition, as well as a series of concrete recommendations on how to improve it.
My favorite pattern is "Light From Two Sides." Amazingly simple, and absolutely correct. Not sure where it is, in there, but I remember it clearly, when I read the book.
I’d like to say that I wrote some clever site scraper and then algorithmically generated everything but the real answer is that it was mostly done by hand with a template for the pattern structure, the help of Obsidian’s auto-complete combined with a keyboard macro to convert (and correct) the links, and many dozens of hours typing, copy-pasting, and tweaking. I reference these patterns directly in my Obsidian vault. I began in 2020 but I didn’t work on it in earnest until November of 2023 with a final push in April of 2024.
The “master” version is my Obsidian vault. I have a custom Fish function (apl-copy) using rsync to copy from my vault to the Markdown repo that contains the patterns (and list of patterns), the README, and the LICENSE as markdown files.
I still evaluate physical or digital spaces accordingly. The patterns also influenced the way I approached my own research years later. (And I still often mentally refer to A Pattern Language even though 20 years ago a friend never returned my copy.)
Does anyone know more?
> The strongest evidence comes from D. M. Fanning ("Families in Flats", British Medical Journal, November 18, 1967, pp. 382-86). Fanning shows a direct correlation between incidence of mental disorder and the height of people's apartments. ... And it is not simply a case of people prone to mental illness choosing high-rise apartments.
A Pattern Language was published in 1977.
Beautiful Software: Christopher Alexander's research initiative on computing - https://news.ycombinator.com/item?id=34011469 Dec 2022 (40 comments)
Do You See a Pattern? - https://news.ycombinator.com/item?id=972023 Dec 2009 (30 comments)
“A pattern language” explained (2016) - https://news.ycombinator.com/item?id=18644150 Dec 2018 (22 comments)
A Pattern Language (1977) [pdf] - https://news.ycombinator.com/item?id=27458721 Jun 2021 (22 comments)
Christopher Alexander: An Introduction for Object-Oriented Designers - https://news.ycombinator.com/item?id=4965552 Dec 2012 (19 comments)
The Timeless Way of Building (1979) - https://news.ycombinator.com/item?id=10164427 Sep 2015 (19 comments)
Toward a Theory of Design as Computation - https://news.ycombinator.com/item?id=8032648 Jul 2014 (19 comments)
Some Notes on Christopher Alexander (2008) - https://news.ycombinator.com/item?id=22869481 Apr 2020 (18 comments)
A City Is Not a Tree (1965) - https://news.ycombinator.com/item?id=21916408 Jan 2020 (17 comments)
Christopher Alexander – Patterns in Architecture (1996) [video] - https://news.ycombinator.com/item?id=17480178 Jul 2018 (17 comments)
Christopher Alexander: A Primer [video] - https://news.ycombinator.com/item?id=24033936 Aug 2020 (11 comments)
Notes on The Timeless Way of Building (2018) - https://news.ycombinator.com/item?id=23525259 Jun 2020 (10 comments)
Fifteen Fundamental Properties (2022) - https://news.ycombinator.com/item?id=40340220 May 2024 (10 comments)
A City Is Not a Tree (1965) [pdf] - https://news.ycombinator.com/item?id=9970090 Jul 2015 (7 comments)
Finding meaning in The Nature of Order - https://news.ycombinator.com/item?id=38009174 Oct 2023 (5 comments)
Christopher Alexander’s Distribution of Towns - https://news.ycombinator.com/item?id=9443072 Apr 2015 (4 comments)
The Origins of Pattern Theory: Christopher Alexander at OOPSLA (1996) - https://news.ycombinator.com/item?id=11334395 Mar 2016 (4 comments)
Notes on the Synthesis of Form (1964) [pdf] - https://news.ycombinator.com/item?id=9020588 Feb 2015 (3 comments)
The Fifteen Fundamental Properties of Wholeness (good design) - https://news.ycombinator.com/item?id=4965528 Dec 2012
Empirical Findings of 'The Nature of Order' [pdf] - https://news.ycombinator.com/item?id=14502297 Jun 2017
Plus everything that has been described using the phrase "pattern language", and a lot of the word "pattern" in reference to software design: https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...
Wish: try and bring it close to the original feel of APL and see how you like a subtle css change:
a.internal { text-transformation: lowercase; font-variant: small-caps; background-color: none; }
a { // color: omit // font-weight: omit }
Give it a try, please.
Maybe make it configurable per user?