The client is an independent module, somewhat like a gem. The demos in the public directory and the ruby and node servers should be thought of as separate modules as well. They ought to go in their own repos as soon as we can work out where the split is and how developers can get running as easily as `git clone`.

Since they are separate modules, it makes sense for each to have its own `build`, `test`, etc. targets as appropriate for the module. The outer `Rakefile` then just aggregates these. Unfortunately, with the current combined repo, the top-level project is a chimera of the ruby server, the node server, and the aggregation of the parts--and so is its `Rakefile`.

Delegating to the sub-rakes by doing a `cd` and re-executing `rake` isn't really a good way to do it. It would be much better to import tasks from the other `Rakefile`s into namespaces and to set up a single, combined dependency graph. For example, `test` could depend on something like `ruby:test`, `node:test` and `client:test`. Running `rake test` would be appropriate when working with the overall system, but it would also be easy to run just the ruby or client tests using `rake ruby:test` or `rake client:test`, respectively.

The only way to run just the client tests now is the somewhat awkward `( cd support/client && rake test )`. There isn't currently a way to run just the ruby tests without also running the submodule tests. I agree that this should be fixed.