A well-designed house not only fits its context well but also illuminates the problem of just what the context is, and thereby clarifies the life which it accommodates — Notes on the Synthesis of Form
There is an unofficial design canon at Urbit. If you were a fly on the wall, you would hear the name "Christopher Alexander" regularly mentioned around the office. Christopher Alexander is an architect, albeit one who isn't taught at most architecture schools. However, his work encompasses far more than what is usually understood as "architecture". Alexander's work is concerned with the production of functional beauty. What's remarkable about his books is that they are not empty philosophical manifestos—Alexander gives specific, actionable guidance on creative problems. His best books are manuals for how to construct forms that are "alive". Alexander threads the needle between highly specific instruction and generalized abstract concepts—his success at this task can be seen in his influence on fields outside of architecture, from computer science to network theory. In his most recent work, Alexander touches upon subjects ranging from religion to math and connects it all into a theory about how the universe functions. But people read him for less lofty reasons: to build a house that is beautiful, design a comprehensive programming language, or figure out how to approach a complex problem. In this post, I'll give an overview of Alexander's work and hear from some Urbit staff about his relevance to software development.
Alexander's first book, Notes on the Synthesis of Form, detailed a new way to approach the design process. Released in 1962, it incorporated networks, set theory, language, and math into a new method for accurately modeling and solving design problems. Although Alexander was an architect, the book was concerned with fundamental issues: how do you solve complex problems with hundreds of interconnected variables? The answer lies in decomposing the problem into subsystems and then "diagramming" those subsystems back into a singular integrated form. The process of decomposing a set into highly-interconnected subsets involves a significant amount of computation—Alexander wrote a computer program for the IBM 7090 mainframe which was described in his 1962 paper HIDECS 2: A Computer Program for the Hierarchical Decomposition of a Set with an Associated Graph. But this was only half of his design process; after the creation of subsets which are the fundamental units of the design problem, the subsets must be diagrammed. This second half of the process involves integrating and synthesizing all of the variables within a single subset into a conceptual diagram. These fundamental diagrams are then integrated and combined themselves into a single diagram which is the final result of the process. The diagram below is Alexander's solution to the problem of designing a village in India with a huge number of variables and constraints.
Notes on the Synthesis of Form can be seen as embodying many of the tensions in 1960s America. Computers were seen as a suspicious technology which embodied the institutionalized science that created the nuclear bomb and cold war era tensions. These suspicions were understandable: computers were massive esoteric machines housed in entire rooms of university and government buildings. They were physically and mentally inaccessible to the average American citizen, while the elites who did use them were held in contempt by the populace. Student protests against being just another cog in "the machine" or "IBM card" were partly right—at this point in the early 60s, many intellectuals were interested in cybernetics and the mathematical modeling of "human" problems and Alexander drew from these fields frequently in his book. However, when Notes on the Synthesis of Form came out in 1964 computer culture was shifting towards an alliance with the counterculture—a cultural and technological process that would culminate with these massive pieces of institutional technology becoming "personal computers". He criticized those who wished to keep math and computers away from human creativity: he saw the possibility of computers yoked to creative human beings. He believed this symbiotic approach to technology was necessary—without a new approach to design, the world would continueto produce the ugliness endemic since the industrial revolution. According to Alexander, a designer could only successfully solve this problem by combining his creativity with the analytic and computational power of machines. Through his books and presentations, Alexander would have a lasting impact on object-oriented programming and pattern based thinking in software design.
In Notes on the Synthesis of Form Alexander applauds the buildings and towns of many primitive societies but he notes that there is no hope of a return to this "unselfconscious" state. Therefore, modern people must develop a new design process to reach the same end. But what is this end that Alexander is trying to achieve? Alexander states his aim negatively in Notes on the Synthesis of Form as "the absence of misfits between a form and its context". An apophatic statement might be good enough for mystics but, for someone like Alexander who was concerned with precision, a positive statement was necessary. His positive statement wouldn't come until 1979 with the publication of A Timeless Way of Building.
In 1975, Alexander would begin publishing his most famous book series which included The Timeless Way of Building and A Pattern Language. In these works Alexander took a more holistic approach to creative production and placed less emphasis on design models. This new approach cemented the importance of culture as the substrate that supports a people's inherited "pattern language". Just like a spoken language, a pattern language is developed incrementally over time by people who adapt to the same local environment. Alexander wrote that "a pattern language gives each person who uses it, the power to create an infinite variety of new and unique buildings, just as his ordinary language gives him the power to create an infinite variety of sentences". A Pattern Language is an attempt to create a new language from observing the dialects of buildings around the world. Alexander recognized that there were large-scale patterns between people and the buildings they found beautiful—a productive tension between specificity and more general patterns common to all human beings. Alexander's pattern language is therefore more general than historically generated languages. The "pattern language" approach is now native to many software developers: seeing solutions as complexes of layered and interconnected systems.
A Pattern Language is the book that is closest to an instruction manual. It is meant to take the prospective builder all the way through the process of designing and constructing a building, neighborhood, or city. Alexander writes about the macro-patterns of cities and the micro-patterns of buildings, from road design to doorknobs. Alexander wanted to enumerate patterns that interlock and produce beauty at different scales while still being as precise and actionable as possible. In Notes on the Synthesis of Form, Alexander was concerned with how to best model reality in order to solve a problem, while A Pattern Language focused on the production of a vernacular that would allow people to produce beautiful buildings.
Underlying these different pattern languages is a deep, precise, and objective appreciation of an important quality of human existence—what Alexander calls "the quality without a name". This "quality" is the ultimate goal of Alexander's work. Greater efficiency and instrumentality cannot be ends in themselves. For Alexander, it is a moral imperative to save the world from ugliness and to make human culture match the natural world in beauty, complexity, and aliveness. It is described in The Timeless Way of Building as "the root criterion of life and spirit in a man, a town, a building, or a wilderness. This quality is objective and precise, but it cannot be named". The "quality" cannot be named not because it is a vague or airy concept, but because "the quality is too particular, and words too broad". Nevertheless, Alexander makes an attempt to circumscribe the concept with the words alive, whole, comfortable, free, exact, egoless, eternal.
Alexander would say that a Japanese temple and a German church are both approaching the "quality" from different histories and cultures. They are examples of two vernacular languages developing in parallel. The similarity between two modern cities is an example of how we've been severed from our pattern languages and therefore the "quality"; we are forced to design from barren earth. Global homogeneity is a symptom of disconnect from both temporal and spatial order—it is the death of our inherited languages.
The Nature of Order is Alexander's most recent book series and explores the metaphysical implications of Alexander's thought. According to Alexander, the failure of the modern built world is because we have learned to view the world as fundamentally dead. Alexander makes an argument that is close to hylozoism or IIT: all structures have varying amounts of aliveness (an aspect of the "quality"). Because of the modern worldview that sees all structure as dead we have become blind to this deeper aspect. The basic component which makes structures alive are strong and varied centers. Furthermore there are fifteen fundamental attributes of centers which allow them to network and become alive. These fifteen abstract units are what patterns are composed of—patterns that are then woven into languages (this process of formalizing implementations as higher-level abstractions should be familiar to any computer scientist). The Nature of Order is the most philosophical and spiritual of Alexander's work and ties together his overarching preoccupations: how to solve complex human problems and why the task of making the world beautiful is important.
You might be wondering how Christopher Alexander is relevant to Urbit?
That depends on who you ask.
I suppose the main thing is that most designers tend to become fixated on the mechanics of what they're building. Most design theory is about how things are made, not what it's like to live inside of them or actually rely on them on a daily basis. Alexander is much more concerned with the first-person experience of inhabiting a place or a building. I guess his approach is just much more empathetic which means it's also more practical. He's concerned with how people actually live and how their environment evolves alongside them.
We live, work, and develop on Urbit. We're often the first people to notice bugs because we are the end users ourselves. Alexander makes the point that old buildings were responsive to feedback because the architect was also the inhabitant. This tight feedback means that the system as a whole is dynamic and alive. We want Urbit to be a house that you live in and make yours, because unlike all the other software you use, your Urbit is actually yours.
The Nature of Order has had a big influence on my thinking. At first, the idea of all physical structures being alive sounded like something out of a new age bookstore. But not only do I think that Alexander justifies this claim; it started to make intuitive sense when I looked closely at my experience.
When I first read The Nature of Order I was living in an industrial neighborhood of San Francisco—the scale of the buildings and streets felt inhuman and everything was made of metal, glass, and concrete. I chose to leave. I moved into a 100+ year-old flat and the difference was immediate and visceral. The space felt like it was designed from experience rather than ex nihilo. The apartment was meant to be lived in, surrounded by public spaces where strangers could safely spend time outdoors together.
If physical objects can have the quality of "aliveness" so too can information objects. Alexander's book is alive. Many of the software projects I've worked on have been cold fish. Keeping this quality in mind is an important part of my decision making. I want Urbit to be a living structure.
I enjoy telling people unfamiliar with Urbit and interface design with respect to Urbit, that the object of our work is essentially that of designing an environment "like a piece of paper".
Consider how paper as a constrained environment is one that yet can bear nearly any visual expression imaginable—apart from containing drawings or human-made marks, paper can be used to display photographs, paper can be multiplexed to form lenticular holograms, paper can be folded into a crane, etc.
The "sheet of paper and its resulting forms" I manifest as a design ideal here is what Alexander might refer to as a "semilattice". A mathematical term he co-opted to describe an ideal structural relationship between elements in a system, as opposed to a "tree", which is a top-down structural system that forces elements into rigid categorical constraints. In his own words:
For the human mind, the tree is the easiest vehicle for complex thoughts. But the city is not, cannot and must not be a tree. The city is a receptacle for life. If the receptacle severs the overlap of the strands of life within it, because it is a tree, it will be like a bowl full of razor blades on edge, ready to cut up whatever is entrusted to it. In such a receptacle life will be cut to pieces. If we make cities which are trees, they will cut our life within to pieces.
A city is a good ideal to maintain for the construction of a new internet and notion of personal computing, but I've tended towards my own interpretation of a piece of paper as a semilattice-embodying object due to its accessibility and ability to be imagined by anyone, designer or not. Our object of design is that of a receptacle of life, of deep expression, of multiplexed possibilities. When I imagine an Urbit in the not-so-distant future, I imagine it as a method (to contrast against those who pin software's expression down to "tools" or "functions") by which I can become "whole" again in a digital context, in all my complexity.
Christopher Alexander wanted to collapse the distinction between those who live in buildings and those who design them. Urbit wants to do the same thing with software—in order to not produce ugliness, we should live in what we build. Although we have personal computers now, all of our data is housed in enormous warehouses that make the industrial computers of the 1950s look tiny. What we think of as “our information” actually belongs to someone else and, more often than not, is weaponized against us. Alexander’s moral imperative can be taken and applied to our digital structures. We need to become close with our software again.