(preface: Riffing wildly here -- and may have gone in a different direction than your analogy's original intent --)
So, regardless of whether or not actors are a good pattern, what we need is scale-free patterns?
I can see how getting hung up on actors as a programming language feature would impede that.
How can we make the jump to scale-free, though?
- With actors, historically, we seem to have gravitated to talking about them in terms of a programming language feature or design problem -- while in some sense it implies "message passing", we usually implement the concept at scales of small bits of an in-memory process.
- With processes in the unixish family, we've made another domain with boundaries, but the granularity and kind of communication that are well-standardized at the edges of process aren't anywhere near what we expect from the languages we use to craft the interior of processes. And processes don't really compose, sadly.
- With linux cgroups, things finally go in a tree. Sorta. (It's rough trying to stack them in a way where someone arbitrarily deep in the tree can't decide to take an axe directly to the trunk and topple the whole thing). Like processes, we're still handling granularity of failure domains here (better than nothing), but not defining any meaningful or scalable shepherding of communication. And we still haven't left the machine.
I'm sold that we need some sort of architectural ideas that transcend these minutiae and are meaningful at the scale of the-internet-or-larger. But what patterns are actually scalable in terms of getting many systems to consensually interoperate on them?
I'm twitchy about trying to define One True Pure Form of message passing, or even intent passing, which seems to be a dreamier name that still converges at the same limits when implemented.
But I dream that there's a few true forms of concurrent coordination pattern that really simplify distributed and asynchronous systems, and perhaps are scale-free. Perhaps we haven't hit them yet. Words like "actor" and "agent" (divorced of e.g. programming language library) sometimes seem close -- are there other concepts you think are helpful here?