This thread is somewhat quixotic for the CouchDB list.
Having said that, I'm doing Scala implementation, although with some
significant architectural differences from CouchDB:
1. Using binary data rather than JSON - hence no attachments, and a
clear separation of data and metadata e.g. no injection;
2. A more explicit layering/modularity i.e. a toolkit rather than a
product;
3. A focus on mechanism rather than policy, allowing CouchDB style
replication as well as Bayou/PRACTI models using different consistency/
coupling/deployment tradeoffs such as monotonic writes, local ACID;
4. No specific app-server mechanisms - use existing JVM technologies
and frameworks for that e.g. purely a database;
5. Pluggable indexing including map/reduce, obviously using any
language available on the JVM e.g. clojure/java/javascript/scala/jruby/
groovy etc;
6. Clustering using Terracotta.
The benefit of Scala is primarily that it is on the JVM, so you can
use the existing infrastructure, both in development and for
deployment. Users get all of the management etc tools available for
the JVM environments, and it certainly eases the political issues of
adoption.
IMO you can also do this in Clojure - both Scala and Clojure are
focussed on concurrency and well suited to implementing systems in
this space. In the end though, after starting in Clojure, Scala's
maturity was a deciding factor.
Antony Blakey
-------------
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787
He who would make his own liberty secure, must guard even his enemy
from repression.
-- Thomas Paine