Weak data model is by design. It's a Key/Value store - if you need something more complex then it isn't the right fit for you; Riak is not meant to replace relational databases.
Small community? Certainly not. Weak adoption? Definitely not. Adobe is using Riak, Braintree, and hundreds of other LARGE companies.
The query API is pretty easy to use from the clients in my experience. If you want REAL performance you can write Erlang map/reduce workers - which admittedly gets more complicated but you get far more performance out of that than doing it in JS (which is limited on ANY platform, no just Riak).
Your gripes really aren't legitimate, purely because you're not understanding the use-case for Riak.
We use riak for ONLY TWO pieces of data in our app (out of hundreds of pieces). Everything else is in a relational database. Riak is perfect for FAST GROWING data that maps to the Key/Value model very easily; I can't even begin to describe how perfect Riak is for that. Everything else fits into MySQL/PostgreSQL perfectly and without a hitch. Our fast growing data is handled purely by Riak and Map/Reduce using Erlang workers is FAST.
> - poor single node performance
I am in the process of evaluating riak for an project, and have run across this too. I am not sure if it is specific to the eleveldb backend (I just used the default values so far), or just a bad config on my part. Even when I relaxed consistency down to r=1,w=1 and used the protobuf interface, riak was still performing rather slowly (compared to some other things I am testing) in single node performance.The minimum recommended number of nodes is 3; the "ideal" minimum number of nodes is 5.