If the metadata was separate from the "user data" everywhere, as it is in view results, the problem just simply goes away. But I realize that won't be the solution. :)

My $0.02 as a new user - I think I agree with Jan here - consistency is important.

I started really learning about CouchDB yesterday, so my memory of the "journey" is clear, and the "special fields" thing did throw a WTF exception... not because of the existence of _id and _rev in user data (that threw the "OhGeeze..." exception), but because they were inconsistently handled and presented in basic things like _all_docs/

The start of my thread yesterday ("newbie question #1") was really about that - why "id" *and* "_id", "rev" *and* "_rev", how the presence of "key" in _all_docs/ seems to be a leak from how views work, why are view results so different than document results (e.g. why you don't inject _rev, _id_ and key into the data part of the view, why view/all is different format than db/_all_docs/...)

I do understand that as codebases evolve, APIs are going to change, and when it's OSS, you always accrete users depending on "whatever is there", so change is hard.

But this could be solved by versioning the API - put something in a standard place in the URI to indicate that it's not the current API e.g.

 GET v1/somedatabase/_all_docs

and this gives you the chance offer other APIs (like one for us crackpots that insist that implementation metadata doesn't belong in the user data :)

Dunno. Haven't used CouchDB in anger yet, so take all this w/ a grain of salt, but all my observations and what I hope are taken as constructive criticisms notwithstanding, I really am excited about CouchDB.

geir


On Dec 29, 2008, at 8:14 AM, Jan Lehnardt wrote:


On 29 Dec 2008, at 13:41, Damien Katz wrote:

I disagree we should change this back. I don't know if anyone remembers, but this is how I implemented long ago in the first versions of the post-XML CouchDB. The problem was there where other reserved fields in documents that started with underscore, but in other places the fields wouldn't have an underscore. Keep track of which fieldname had underscores and where became confusing. The rule was changed to be simpler to understand and deal with. If it's in the root of a doc and it starts with underscore, it's reserved. You don't see the reserved underscore fields anywhere else, only in document top level.

My issue with this is when learning about CouchDB, documents come first and the "special fields are prefixed with an underscore" rule is taken up naturally. Later with views and query parameters, this rule is broken. You could argue that when we teach documents, we should make the actual rule more explicit and that is certainly true, but we don't control the ways people pick up CouchDB. We control the API however and are able to reduce WTF-factors.


-Damien


On Dec 28, 2008, at 2:21 PM, Jan Lehnardt wrote:


On 28 Dec 2008, at 14:32, Antony Blakey wrote:


On 28/12/2008, at 11:56 PM, Paul Davis wrote:

Why "id" and "rev" are used instead of "_id" and
"_rev" I couldn't really tell you. I hate to say "historical reasons"
but I'm guessing that when Damien designed the view output he just
labeled then "id" and "rev" without the underscore because it's not
needed to distinguish from the rest of the doc.

Desirable to change that (and any other inconsistencies) before a 1.0

This keeps coming up and I've been advocating this for a while now:

+1 for changing view result rows `rev` to `_rev` to avoid confusion.

CC'ing [email protected].

Cheers
Jan
--





Reply via email to