Living systems grow from simple seeds
How do you grow living systems? Plant simple seeds.
Do simple things
Wikis are beautifully simple. Like Minecraft for thought. What kind of mindset produces breakthroughs like the wiki?
We decided to try whatever is most simple: to write an if statement, return a constant, use a linear search. We would just write it and see it work. We knew that once it worked, we'd be in a better position to think of what we really wanted.
So when I asked, "What's the simplest thing that could possibly work," I wasn't even sure. I wasn't asking, "What do you know would work?" I was asking, "What's possible? What is the simplest thing we could say in code, so that we'll be talking about something that's on the screen, instead of something that's ill-formed in our mind."…
I think that that's a breakthrough, because you are always taught to do as much as you can. Always put checks in. Always look for exceptions. Always handle the most general case. Always give the user the best advice. Always print a meaningful error message. Always this. Always that. You have so many things in the background that you're supposed to do, there's no room left to think. I say, forget all that and ask yourself, "What's the simplest thing that could possibly work?"
(Interview with Ward Cunningham, 2004)
The simplest thing that could possibly works is an ethos that suffuses Ward Cunningham’s work. A wiki has two simple mechanisms:
Everyone can write on every page.
You can link other pages, whether or not they exist.
That’s it. Yet this simple alphabet evolved complex living systems, from personal notes, to collaborative fansites, to Wikipedia.
What about ACLs? Published status? Moderation? Messaging? Formatting? YAGNI. Ward didn’t worry about it. He just put something out there. Later, these things evolved on their own, as needed.
Simplicity is the shortest path to a solution.
(Ward Cunningham, inventor of the Wiki)
There’s a wu wei quality, a quality of effortlessness and non-action, embodied in this kind of simplicity. By starting with a simple alphabet, we allow living complexity to evolve organically out of the possibility space of the alphabet, in response to the environment.
Do small things
One of the most interesting ideas at Parc was: every invention has to be engineered for 100 users. So if you do a programming language or a DTP word processor, etc, it has to be documented for and usable by 100 people. If you make a personal computer, you have to be able to make 100 of them. If an Ethernet, it has to connect to 100 devices, etc.
(Alan Kay, 2017. What made Xerox PARC special?)
100 users. Enough that you know it can work, not so many that you spend all your time engineering for production at scale. If you can find product-market fit with 100 users, you can find it with 1,000, or 100,000, or a million.
An incomplete list of innovations that came out of PARC:
Bitmap graphics
GUIs, the desktop metaphor, windows, icons.
WYSIWYG text editors
Ethernet local area networks
Dynabook, a precursor to the iPad
The precursor to PostScript
Object-oriented programming through Smalltalk.
Prototypal inheritance through the Self programming language
Model–view–controller software architecture
Perhaps they were on to something?
Simple rules produce complex behavior
A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system. (Gall’s Law)
Or, as summarized by Andrew Hunt:
Simple rules produce complex behavior. Complex rules produce stupid behavior.
It seems there may be two kinds of complexity, living and dead.
Dead complexity: imposed, top-down.
Living complexity: emergent, bottom-up.
Dead complexity: rational, designed.
Living complexity: messy, permissionless.
Dead complexity: fixed hierarchy, static categories.
Living complexity: dynamic hierarchy, fluid and evolving statistical relationships across populations of individuals.
In what ways might we provoke the emergence of living complexity?
Living complexity grows from simple seeds
Ever since there were two organisms, life has been a matter of coevolution.
(Stewart Brand)
The moment two evolving systems touch, they begin to coevolve. Each system becomes part of the fitness function of the other. And each system is unique.
Take something in nature—two dandelions—and look at them for five minutes, listing how they are different from each other. Take two leaves from the same tree and do the same thing. Take two peas from the same pod and do the same thing. Nothing is the same. No thing is the same. Everything is itself and one of a kind.
(Sister Corita Kent, Jan Stewart, 2008. Learning By Heart.)
Because no thing is the same, asymmetries emerge. These asymmetries alter the fitness functions of all coevolving participants. They adapt, generating more asymmetries, causing more adaptation, in an endless loop.
From asymmetry emerges specialization. And so, the emergence of predator, prey, pal, parasite, pollinator, niche-creator, producer, consumer, scavenger, decomposer, all tangled together in an ecological Indra’s net.
You see in this beauty a dynamic stabilizing effect essential to all life. Its aim is simple: to maintain and produce coordinated patterns of greater and greater diversity. Life improves the closed system's capacity to sustain life. Life—all life—is in the service of life. Necessary nutrients are made available to life by life in greater and greater richness as the diversity of life increases. The entire landscape comes alive, filled with relationships and relationships within relationships.
(Liet Keynes in Frank Herbert’s Dune)
Everything becomes intertwingled in coevolutionary loops of recursive relationship, producing upward-spiraling complexity. Living systems evolve into complex systems.
Dead complexity kills living systems
So, rather than valuing simplicity over and against complexity, we might see simplicity as a living seed, which may grow into a living complexity. And, going back to Gall’s Law, we can say dead complexity hinders the emergence of living complexity.
A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system. (Gall’s Law)
One way to turn living complexity into dead complexity is by rationalizing it.
Living systems are evolved systems, and evolved systems are non-rational, nonteological. To rationalize a living system is to force it to fit our telos, to force it to fit our Procrustean rationality.
In software, we have a name for this mistake: second system syndrome.
Second-system syndrome is the tendency of small, elegant, and successful systems, to be succeeded by over-engineered, bloated systems, due to inflated expectations and overconfidence.
You hack together a small simple program to solve a problem. Congratulations! It's wildly successful. Now you have a community, and the limits of your hasty work are beginning to show. Time for a rewrite! You look at the ways the community is using the software, and rationalize it along those axes. The result is a complex system designed from scratch.
Second System Syndrome is a kind of Seeing Like a State. Like other forms of systemic rationalization, the risk is in killing the forest by organizing the trees.
While second system syndrome may rationalize the code, it often kills the ecology around it by scraping away the invisible relationships between users and software that evolved around the first system.
It’s easy to misapprehend that last line in Gall’s Law: you have to start over with a working simple system. Rationalization mistakes telos for simplicity, and starts over with a teleological system.
So the kind of simplicity we seek is almost a wu wei, a kind of living thing, a dance. Perhaps something like Chuang Tzu’s story of The Dexterous Butcher?
“Good work!” the Prince exclaimed,
“Your method is faultless!”
“Method?” said the cook
Laying aside his cleaver,
“What I follow is Tao
Beyond all methods!“When I first began
To cut up oxen
I would see before me
The whole ox
All in one mass.“After three years
I no longer saw this mass.
I saw the distinctions.“But now, I see nothing
With the eye. My whole being
Apprehends.
My senses are idle. The spirit
Free to work without plan
Follows its own instinct
Guided by natural line,
By the secrets opening, the hidden space,
My cleaver finds its own way.
I cut through no joint, chop no bone.
All life comes from already existing life
If you want to make a living flower, you don't build it, you grow it from the seed. (Christopher Alexander)
How do you create living systems? Paraphrasing Alex Komoroske:
Ecosystems are never created. You can’t create living systems from scratch. All life comes from already existing life, all the way back to the origins of life.
These are all things I’m reflecting on as we build Noosphere. In what ways might we evolve a shared protocol for thought?
The Tools for Thought scene is undoubtedly a living ecosystem, brimming with scenius, many tools, and knowledge scattered across them. If a protocol tried to rationalize and systematize this mess, it would only fail, or kill the ecology. A living ecosystem cannot be created from scratch. It can only evolve out of an already existing living ecosystem.
This ethos is why, for example, Noosphere solves a few pragmatic problems, like sync and credible exit, and has no opinions about ontology or what kind of data format you use. Publish any kind of data, allow any kind of header, bolt it on to any tool for thought. Bless this mess!
Our hope is to plant a simple seed.