13. The Void

a painting of a ring of daisies against an empty black background
Album art from Compendium by In Gowan Ring

A void might seem intuitively to be the opposite of living structure — empty space is about as dead as you can get. However, the purpose of a void is not to remain void, but to create an environment where life can bloom. This happens in two ways:

Christopher Alexander said of voids that

differentiation of minor systems almost always occurs in relation to the “quiet” of some larger and more stable system

and so it is in programming. The most significant systems in programming are also the quietest. Operating systems and programming languages are glacial, graceful beasts. The slowness of change in these systems creates the conditions for life — i.e. software applications — by providing a stable platform on which they can grow without being constantly disrupted. Innovation can bloom when platforms change slowly, and are unopinionated, quiet, and “empty.”

A programming language or library creates a metaphorical void in another way: it defines a space of hypothetical or potential programs, and this space “wants” to be filled by living structure. For more on this idea, I recommend watching Sarah Perry’s excellent and mind-bending talk “How to See Voids.”

Alexander thought voids had a spiritual quality - the sacredness of the void is communicated through its utter quiet. I don’t really know how to create this quality in code — except, perhaps, through the next property, simplicity and inner calm.