[FoRK] Our dispersed, not distributed, computing future
jbone at place.org
Sat Nov 7 14:15:24 PST 2009
Riffing off the Vint Cerf / interplanetary networking / Android meme
that's been going around...
I've been saying this for years, but: the edge case of latency is
disconnection. Ken Arnold *almost* got it right, but didn't take it
to its logical (end-user impacting) conclusion: in the general case,
we should *assume* (highly-variable and) high latency and frequent and
prolonged disconnection. We need a different general model of
computing for this, something that for years I've been calling
"dispersed" rather than "distributed" computing. While e.g.
interplanetary networking *obviously* suffers from the problems at
hand, I maintain that *no matter what* the infrastructure technology
development / deployment curve, we will *continue* to have
connectivity and latency gradients *terrestrially* such that there are
multiple-orders of magnitude difference between different (e.g.
stationary vs. mobile) realistic end-user scenarios. (This should be
understood as a quasi-physical / quasi-economic consequence of both
natural and social "law" and a corollary to accelerating change laws;
as Gibson said, the future's here, it's just not evenly distributed.
Nor, I submit, *can* it be --- ever.)
In general, many if not all user experiences should *assume* and
*accommodate* this case, and work accordingly. (Consider my long-term
nemesis, "the file system problem.")
The implications are obvious: replication rather than immediate
remote access, explicit remote interaction rather than implicit,
explicitly latency-aware software with appropriate failure modes,
loose / eventual consistency protocols, caching (and timeouts)
everywhere, loose time protocols that preserve causality *as much as
is physically possible* (and no more --- cf. Lamport) --- and
generally store-and-forward / queueing-friendly architectures rather
than synchronous, blocking architectures. (Indeed, one of the reasons
I remain highly enthusiastic about the future of Linda-like
coordination languages and architectures is their loose coupling in
time, making them sell-suited for coordination in a "dispersed"
There's lots of interesting work around "delay-tolerant networking."
One of the better and more thought-provoking earlier "overview" type
papers is this:
More information about the FoRK