Can Scala Actors compete with Erlang in concurrency and distribution? It is a demonstrated fact that Erlang owns this space. From a concurrency perspective the JVM holds Scala back, but that is not the insurmountable problem I and others have claimed it to be. Having been open sourced the JVM is now in an ideal position to move forward on concurrency.
The problem is that the mob is going with Software Transactional Memory as the solution. It will help scalability for a while, but at the cost of introducing a grossly complicated and incomplete solution for the average developer. STM won't make it much easier to write workable concurrent code so what's the point of having it at all? I hope that STM is abandoned because it is a poor fit for object-oriented programming. Just because it works for SQL and Haskell doesn't mean it will work for Java.
Shared-nothing asynchronous message-passing concurrency is easy to understand and reason about even for less experienced developers. STM will cost billions and leave us with another incomprehensible concurrency model that programmers will avoid. Is this really a hard choice?
I think Scala Actors can compete with Erlang in concurrency and distribution, but it will need the shepherds of the JVM to have the presence of mind to abandon STM and implement shared-nothing asynchronous message-passing concurrency.
We don't have to use Erlang, but we should be practical enough to clone its obviously superior model for concurrent and distributed programming.