Chris Double writes in a comment about Factor and his concurrency model...
I'm also keen to look into capabilities and how support for that could be added. But I'm completely unknowledgable in that area at the moment.I intend to look into this with Termite and hopefully discuss this with Guillaume and I hope others.
The basic idea is to give each process its own set of known capabilities and aquire new capabilities from other processes (some coming from the "outside" world). A capability would be the ability to send a message to another process and some fundamental actions like spawning a new process, file I/O, etc. Joe Armstrong's work on unifying these actions as all being message sends would help with the design.
This implementation would require capabilities (e.g. process ID's and perhaps node ID's) to be unguessable and unforgeable. Rather a Pet Naming scheme would make capabilities more usable for developers.
Similarly connections to the outside world, e.g. the Internet, would apply the concept to URL's and so on.
Update: This reminds Chris of Plan 9. Just so... Plan 9 I recall has the same ability to map a tree of names (i.e. file system) onto a set of capabilities (i.e. the actual files, drivers, etc.) such that any given user's tree of names will refer to potentially *different* objects, based on the capabilities that user has.