exactly :)

On Jan 4, 2009, at 11:35 AM, Michael Fellinger wrote:

On Fri, Jan 2, 2009 at 9:30 PM, Robert Dionne <[email protected]> wrote:
When it comes to design I think there are always tradeoffs. This is where intuition and experience count. In my opinion separating metadata from the
user's data is a more complex approach. It creates two parts to the
document, they have to be handled separately and it creates the need for two
kinds of API calls for the two types of data.  It seems like a good
approach, however it's very easy to look at an existing implementation and
see how things "ought" to be done.

The current implementation has a nice simplicity to it that I would not readily advocate changing. My first impression is that it reminded me of Berkeley DB on steroids. The convention governing the use of the _id is not that hard to deal with and it doesn't prevent one from handling JSON docs that come from elsewhere. It seems that converting data from one database
system to another always involves some transformation.

For what it's worth, I'd love to see a separation of data and data
about data, and I'd also like to propose a change to map functions:

function(doc, meta){ emit(doc.title, [meta.id, meta.ref]); }
function(doc){ emit(doc.title); }

That way people who are complaining about having to type doc.doc.title
can have their peace of mind as well.

I might see the whole issue very limited, but it makes absolutely the
most sense to me, everybody can stop worrying about which data is
allowed in the data part and the metadata can grow in any direction.
Nobody is annoyed by prefixing _ anymore (symetric API) and there is
little technical need anymore for validating documents (as long as
they can be serialized to valid JSON) before putting them into the db.

^ manveru

This discussion reminds me of Perlis' epigram(#15) that everything should be
built top down, except the first time.


On Jan 2, 2009, at 12:33 AM, Antony Blakey wrote:


On 02/01/2009, at 2:17 PM, Noah Slater wrote:

I appreciate you're frustrated with the current situation Antony, but I
think
it's unfair for you to be claiming any kind of consensus without a vote.

That post wasn't meant to be a criticism. Apologies if it felt like it
was.

There isn't a clear consensus in this thread, which to my mind reflects the fact that there are trade-offs that don't have objective evaluation
measures.

I fully support the idea that a product should reflect the vision and opinion of a very small group. Abstracting from my preference for a more robustly theoretical approach to API desig, the holistically best result is likely to arise from this model. So I don't e.g. mean 'gatekeeper' in a
negative way.

I would
be interested in seeing a patch, explanation, and vote. I've already
expressed
my agreement with many of the points you've raised, and I'm not the only
one.

I was only referring to a lack of expressed support for a fully reflexive
model.

It's never been clear to me that there is a process for voting - the
decision making process within the commit group seems opaque.

It's pretty pointless for us to keep sending emails over proposed changes
to the
code without actually seeing the changes.

I think a change to the API could be decided without reference to the code implementing that change. In fact, IMO the API *should* be considered separately from the code implementing that change. Otherwise APIs will tend to be decided not on the basis of design, but on the amount of effort some person is prepared to spend to demonstrate it, and hence code inertia, often resulting in expedient solutions. This means that good, but expensive ideas,
can be lost.

The models under discussion have evolved from simple name identity by using '_id' and '_rev' everywhere, to a '_meta' wrapper, to Geir's fully
reflexive model.

So I'd prefer to get buy-in to a model or principles, at which point
anyone could implement it. That's what I tried to do with the change to the FS layout to support i18n, the committable implementation of which is my
focus right now.

Reply via email to