If you are a software engineer, you have probably dreamed of building something general — software that many people use.
An open-source project with ten thousand GitHub stars.
A social network with hundreds of millions of users.
The mission-critical systems that move the world.
And the operating systems that hold it all up.
In the world of software, we tend to speak of value as "usable in more cases."
And generality is, in practice, genuinely important.
But generality does not last forever.
Flash, once at the height of its glory, faded with its era.
XML, built to be the general standard, lost the mainstream to another format.
jQuery, which once ran nearly every page on the web, is rarely chosen for anything new.
Generality depends on the breadth of its cases
Generality means covering many cases.
A web framework like Rails or Laravel can build most web applications on its own.
If I were advising a beginner, I would point them to one of these first; learn it, and some kind of work will be within reach.
But this "many cases" keeps shifting with the times.
SPAs, PWAs, WebAssembly.
So generality, by its nature, erodes with time.
All things are impermanent, as the Buddhist phrase goes.
Is there anything that does not change?
Here, instead of adding more cases, try changing the conditions under which you look.
Change the era.
Change the culture.
Change the representation.
Change where you observe from, and at what resolution.
Then you start to see what changes and what does not.
Relativize, and the essence remains
What remains, then?
For Rails, perhaps its conventions.
Even as eras and cultures change, governing a codebase by convention keeps its value.
For React, perhaps what remains is having brought the pure function — an idea from functional programming — to the frontend.
Rendering the view as a pure, idempotent function is a benefit that outlives the era.
Only by changing how you look does the outline of the universal become visible.
This is not to say that everything is relative.
We relativize in order to learn what is not relative.
What survives relativization — that is universality.
The essence of Buddhism
Buddhism is said to be some 2,500 years old.
Over that long history it spread across East Asia and divided into many schools.
Doctrine, practice, precepts — they differ from school to school.
What survived was not the answers.
It was the questions.
Why do we suffer?
Where does attachment come from?
What is the self?
How should we live?
The form varies, school by school, relative to place and age — and something does not.
The questions themselves are the universality.
The teaching that preached impermanence has itself lasted 2,500 years.
Lehman's questions
Back to software.
Fifty years ago, Meir Lehman published his laws of software evolution.
Eight laws, describing how software that is used in the real world goes on changing.
Software in use must keep changing, or it loses its value.
The more it changes, the more complex it becomes.
Features keep growing, and without upkeep, quality appears to decline.
Evolution proceeds through layers of feedback.
There was also a law that said the work rate of a development organization holds roughly constant.
Not all eight laws are universal.
Change the condition called "era," and they separate: some remain, some age.
The constant-work-rate law aged.
It was a statistic drawn from the development organizations of its day, and those organizations no longer exist.
Right now, AI is changing the work rate itself.
But the law that software in use keeps changing — that law remains.
It is not a statistic; it follows from the relationship between software and the world.
Software connected to reality changes the world, and then has no choice but to keep adapting to the world it changed.
That round trip does not disappear, however many languages and frameworks come and go.
What Lehman left behind was not the statistics of an era, but the questions born of a relationship with the world.
The age of AI
We are living through a turning point.
AI now writes code faster than humans do.
AI is good at finding what is common across vast amounts of data.
The pace at which general software and frameworks appear will quicken dramatically.
But by the same token, the era itself turns over faster.
The tips that count as general in August may be obsolete by December.
What lasts? What holds when the conditions change?
Precisely because this is the age of AI, universality is what holds value.
AAT: Algebraic Architecture Theory
What survived in Buddhism, and what survived in Lehman, was questions.
Then what do the answers look like — the ones that withstand the questions and remain?
I believe they take the form of structure.
Looking back: Rails' conventions, React's pure functions — both were structures.
AAT, the theory I work on, is in pursuit of universality.
It is an attempt to read the structure of software architecture in the language of algebraic geometry.
What it measures is the gap between the parts and the whole.
Each individual change is correct, and each passes review.
And yet the whole, glued together, is somehow broken.
AAT gives that phenomenon — the one every engineer has lived through — mathematical form.
Software metrics are usually decided by people.
We agree on a way of computing something, and then we measure it.
That is why metrics are countless, and why the answer to "why measure this one?" is weak.
The quantity at the center of AAT is a little different.
Pose the question — why can the parts be correct while the whole fails to assemble? — and mathematics fixes, all by itself, the one place where the answer can live.
H¹
Not chosen.
Forced.
Generality can be chosen.
Universality cannot.
The Atlas Theorem, proved just recently, formalizes exactly this universality.
When you observe source code, there is a resolution to the reading: coarse or fine.
What the Atlas Theorem gives is a sufficient condition under which the result of the review does not change when the resolution does.
Change the resolution of your reading — relativize it — and the obstruction that still remains is the universality.
To claim universality is to take on an obligation of proof.
Change the observation.
Change the representation.
Change the coefficients.
Every condition you move adds one more theorem to prove.
The Atlas Theorem is one of them, and the road goes on.
Universality does not come free.
The conditions for survival are themselves the content of the theorems.
What remains
Generality changes with the times.
Relativize — move the conditions of seeing — and universality dwells in what still remains.
And universality lives in structure.
With the weapons of algebraic geometry, AAT is closing in on the universal structure of architecture.
Top comments (0)