In HTTP, PUT is replace, or possibly create. In CouchDB, PUT of a db is create if it didn't already exist, otherwise return status 409 ("conflict"). It would be more consistent if put of a db that already exists replaced it. In CouchDB, json objects are returned from pretty much any operation, but with a mime type of text/plain. RFC 4627 specifies application/json for this use. Applications like Ruby on Rails can take advantage of this extra bit of metadata if it is present; applications like browsers get confused by it. This may be a case where the response type may need to vary based on the ACCEPT header that is provided on the request. What is called a view today is essentially a list comprehension, as defined by Python and Erlang. However, the fact that JavaScript treats the number zero as false will result in surprising results for some.