A new mental model for computers and networks
We've built and re-built centralized top-down systems for the duration. Time for something that's not.
One of the great works of geekdom is Neal Stephenson's In the Beginning Was the Command Line, an essay-length book that came out in 1999. As with Linux, the code was open. Still is. Here's one copy of the book's full text.
Though many of Neal's references (e.g. the Be operating system) are
forgotten or stale, his case ever for Linux (and its Unix relatives) is
as fresh and right as ever.
Here is the gist of it:
The file systems of Unix machines all have the same general
structure. On your flimsy operating systems, you can create directories
(folders) and give them names like Frodo or My Stuff and put them
pretty much anywhere you like. But under Unix the highest level--the
root--of the filesystem is always designated with the single character
"/" and it always contains the same set of top-level directories:
/usr
/etc
/var
/bin
/proc
/boot
/home
/root
/sbin
/dev
/lib
/tmp
and each of these directories typically has its own distinct structure
of subdirectories. Note the obsessive use of abbreviations and
avoidance of capital letters; this is a system invented by people to
whom repetitive stress disorder is what black lung is to miners. Long
names get worn down to three-letter nubbins, like stones smoothed by a
river.
This is not the place to try to explain why each of the above
directories exists, and what is contained in it. At first it all seems
obscure; worse, it seems deliberately obscure. When I started using
Linux I was accustomed to being able to create directories wherever I
wanted and to give them whatever names struck my fancy. Under Unix you
are free to do that, of course (you are free to do anything) but as you
gain experience with the system you come to understand that the
directories listed above were created for the best of reasons and that
your life will be much easier if you follow along (within /home, by the
way, you have pretty much unlimited freedom).
After this kind of thing has happened several hundred or thousand
times, the hacker understands why Unix is the way it is, and agrees
that it wouldn't be the same any other way. It is this sort of
acculturation that gives Unix hackers their confidence in the system,
and the attitude of calm, unshakable, annoying superiority captured in
the Dilbert cartoon. Windows 95 and MacOS are products, contrived by
engineers in the service of specific companies. Unix, by contrast, is
not so much a product as it is a painstakingly compiled oral history of
the hacker subculture. It is our Gilgamesh epic.
What made old epics like Gilgamesh so powerful and so long-lived was
that they were living bodies of narrative that many people knew by
heart, and told over and over again--making their own personal
embellishments whenever it struck their fancy. The bad embellishments
were shouted down, the good ones picked up by others, polished,
improved, and, over time, incorporated into the story. Likewise, Unix
is known, loved, and understood by so many hackers that it can be
re-created from scratch whenever someone needs it. This is very
difficult to understand for people who are accustomed to thinking of
OSes as things that absolutely have to be bought.
When Tim Berners-Lee invented the World Wide Web, he did it on a
NeXT machine, which also had Unix ancestors. But never mind that. What
matters is that Tim arranged the Web's directory on the Unix model:
files were nested in directories divided hierarchically by a series of
slashes: http://example.com/this/that/etc. The same hierarchy is also implicit in
client-server, which should have been called server-client, to reflect the arrangement of status: server over client.
Between the directory path and client-server, what we've got is a
mental model of computing and networking that anchors all of computing's civilization.
But it also gives us problems
when it comes to conceiving and designing distributed approaches, such
as peer-to-peer. It gives us hierarchy after hierarchy, and heirarchies within hierarchies, rather than the heterarchy that Paul Baran imagined the future Internet to embody when he drew this in 1964:
While we're at it, let's also revisit End-to-End Arguments in
System Design, by David P. Reed, Jerome H. Saltzer, and David D.
Clark: a design guide
that helped manifest and rationalize the Internet Protocol,
which in an
ideal world would give us a fully distributed network (C, above). Alas,
the current Internet's implementation is closer to decentralized (B,
above). As distributed networks go, it's
good, but not good enough, because it still subordinates client nodes
to server ones, so servers get scale, while clients get little more
scale than the servers (and the operators of sphincters in the network
itself) allow. We also have a networked world where governments can
favor or ban traffic they don't like. Even society itself has to some
degree been re-organized and re-centralized by giant private
"social networks" such as Facebook and Linkedin.
Back in April, I suggested that our next fight is for freedom
from exactly the kind of centralized systems I just described. Fighting
for freedom would also get us closer to each of these ideals:
- General purpose computing and networking
- Decentralization and distributed everything
- Privacy
- The true Internet of things
Now I suggest that we also need to free ourselves from the very mental
models that we used to build giant centralized traps from which we need
to escape.
There are positive signs. The blockchain,
for all its faults, is distributed by design. To come up with
blockchain and Bitcoin (which uses a blockchain), Satoshi
Nakamoto (or whoever that really is) had to think outside
of fiat currency, banks, centralized trust systems and the
other familiar boxes that control transactions in the worlds economies,
nearly all of which are centralized by design. He had to think of ways
that a fully distributed
peer-to-peer approach to all those things would open possibilities and
outperform currency, payments and record-keeping done the old ways. One
can criticize Bitcoin and blockchain on many grounds, but what matters
is that a distributed system got imagined and implemented causing many
other new re-thinks and re-builds in the world.
The problem with mental models is that they work. Also that we
can't escape the deepest ones that are anchored in our own experience
as physical bodies, operating in the physical world.
Ever wonder why good is up (or high) and bad is down (or low)? Why it is
easier to conceive of heaven in the sky and hell below the ground, than
vice versa? Or why light is good and dark is bad? Or why people say
"enlightened" rather than "endarkened?" Or why we "catch" or "grasp"
ideas? The answer is, because we are upright-walking diurnal animals with hands and opposable thumbs.
If owls or moles were equipped by nature with the means to have moral systems and speak
about them, their metaphors would be radically different. Dark might be good, and light might be bad.
We are embodied animals, and we can't get away from that fact. But we
are also inherently distributed, and different. At a base level, we are
heterozygous. No two of us are the same, unless we are identical
twins; and even then we are separate and distinct individuals. (An
interesting fact: so are apples. Writes Michael Pollan in The Botany of Desire,
every seed in every apple "contains the genetic instructions for a
completely new and different apple tree, one that, if planted, will
bear only the most glancing resemblance to its parents." All the
varieties of Apple we know—Granny Smith, Delicious, Macintosh—grow on trees that start as grafts off a single ancestral plant.)
The designs we need are ones that appreciate our heterozygous
inheritances, and the fact that we are designed to learn throughout our
healthy lives. "Encompass worlds, but never try to encompass
me," Walt Whitman advises. He adds,
Urge and urge and urge,
Always the procreant urge of the world.
Out of the dimness opposite equals advance.
Always substance and increase, always sex,
Always a knit of identity, always distinction,
Always a breed of life.
I love how Whitman puts those together, because none of them fits in a
system, other than one even he fails to comprehend, even as he embraces
its mystery. I also love "knit of identity," because each life is a thread distinct in
its substance and capacity for increase, yet part of a whole that changes as well.
Every self, like every species, is a breed of life.
It is hard for computing to comprehend this, but not for the minds of people programming and using computers.
Computing and programming require that we think of both in explicit
ways, and in explicit terms. Yet our knowledge of the world is mostly
tacit. "We know more than we can tell," Michael Polanyi says, and
that's a near absolute understatement. It
applies to everything we think and say. For example:
even if I've made full sense to you in this column so far, you probably
won't be
able to repeat it back to me verbatim. And if you could, it would owe
more to memorization than comprehension. Short term memory is an
amazing grace of human nature. It forces us to communicate meaning more
than words. Consider how often, in the midst of explaining something,
we don't
remember exactly how we started the sentences we are now speaking, or
exactly how we will finish them, yet somehow we'll say what we mean,
and others will understand it, even though they can't repeat exactly
what we said.
That's because, when we communicate with each other, we don't deliver
an explicit cache of words. Instead we cause meaning to form in the
mind of another person.
Meaning is most of what we take away from any conversation. Same goes
for any course
in school, any book, or any experience. The meaning we take is mostly
tacit. It is also mostly unquestioned, once we make it our own.
Here's how I put it many years ago in a chapter of Open Sources 2.0:
Several years ago I was talking with Tim O'Reilly about the
discomfort we both felt about treating information as a commodity. It
seemed to us that information was something more than, and quite
different from, the communicable form of knowledge. It was not a
commodity, exactly, and was insulted by the generality we call
"content."
Information, we observed, is derived from the verb inform, which is related to the verb form.
To inform is not to "deliver information," but rather, to form the
other party. If you tell me something I didn't know before, I am
changed by that. If I believe you and value what you say, I have
granted you authority, meaning I have given you the right to author
what I know.
Therefore, we are all authors of each other. This is a
profoundly human condition in any case, but it is an especially
important aspect of the open source value system. By forming each
other, as we also form useful software, we are making the world, not
merely changing it.
So now look at authoring as something all of us do—or should be able to
do—all the time, in many more ways and contexts than our pyramidal
centralized systems would allow.
Consider the possible purposes of both our heterogeneousness and our
enormous capacity to communicate and learn, throughout our lives. Why
are we that way? Are those very human natures not insulted by systems
built to subordinate individuality to categories in databases? Is the
full promise of heterarchy
not a price we pay for making nothing but hierarchies, over and over
again, because that what our tools and mental models are biased to do
That we come in many colors, sizes and body shapes—all with different
faces that also change as we grow and age—is a grace meant to help us
recognize every person as distinctive and separate. Not just so we can
typify each other by any one of those characteristics. None of us is
just black or white, male or female, tall or short. We are sovereign
selves with complete souls that cannot be reduced to any one
characteristic, no matter how easy it is to do that, especially with
research and computers.
I bring this up because I believe it is also worth considering that the
best case for distributed systems and networks is that they take
advantage of the countless differences and originalities among us.
Distributed systems, more than any other kind we can name—make possible
recognizing that our greatest resources are each other—and ourselves.