What the HTTP is CouchApp?
couchapp.org
couchapp.org
Today's world is full of programmers posing as production administrators, while the solution is to employ administrators and move on. I've seen so many production failures because of admin-posed programmers wishful thinking or not having a sufficiently broad perspective to prepare themselves for the disaster. It was regardless if it was a simple Apache+PHP, hairy Weblogic+Oracle stack or some new sexy Erlangish stuff.
I have nothing against programmers and I am both admin & programmer myself, but many (most?) coders just lack some operational perspective & experience. Is is possible that selling new solutions as "don't plan, deploy & pray" will make this trend worse?
Once you have a fully replicating application, you want to run it as close to the user as possible to avoid network latency. I don't think the deployment challenges of large centralized apps will go away, but there are a lot of apps that better fit the decentralized model.
Now that CouchDB makes decentralized web apps possible, we'll get to see what can be done.
now in the real world:
select data
from this_table and this_table and this_table and that_table
where there was no previously defined relationship
but users need this data with the new relationship
and have it done in a few minutesIt looks interesting but I see any moderately complex web app, i.e. more than CRUD, hitting a wall of complexity when using CouchApp as a base. You eliminate so called "fragile custom code" up until the point where the framework doesn't support something and you need the custom code anyway, except now there is the overhead of getting custom code working together with everything else. At which point you wonder what was the point?
It uses OAuth and all that good stuff. The "fragile" parts are handled by an asynchronous _changes based process (Node.js is a good fit but really anything works).
The key is to get anything that could go wrong, out of the request / response loop between the browser and the server. The asynchronous handler pattern is a best practice anyway (resize an image on POST, or in a queue?). Keeping the request / response critical path simple makes for more reliable apps.
I'm going to sleep on it.
Is there some arcane wisdom in here, or is this just stupidity? Sure, if I run Google on my own computer, and replicate it to my laptop, they will both be very fast... and need quantum HDs for storage.
Cell level security in a database? Hmm.
Am I right that the database would be shared by all clients and that the application layer is essentially moved into the client? If so, this seems like a pretty silly architecture.