On 28/11/2008, at 2:02 PM, Paul Davis wrote:

I think what Noah might be saying is, "As soon as there's a JSON diff
RFC, we'll implement it". Which I agree with completely. Until then,
if we implement something it'd most likely be not the RFC which we've
all had to deal with when coding to web 'standards'. It's not fun.

That said, pushing the JSON community towards acceptance of a diff
format is something we could do. Not sure how we should organize other
than all joining the JSON lists and pushing. And then nominating Noah
to write the RFC that we'll implement. Matter of fact I kinda like
that idea. Anyone with me?

All IMO (of course) ...

There's no guarantee that a JSON diff RFC will happen in any reasonable time frame if it doesn't arise from this group, which has a specific need in mind. And I've had plenty of problems coding to web standards that are RFC's. Even when there is an RFC there is no guarantee that it is unambiguous or correctly implemented - witness the recent discussion about duplicate names in JSON hashes.

Furthermore, there's no guarantee that a proposal from the JSON community will be appropriate. Consider the current JSONPath proposal linked from www.json.com (acknowledging that JSONPath might not be a component of a diff spec). It presumes a script engine, and IMO only an explicitly declarative model without the need for expression evaluation would be suitable for Couch (which doesn't mandate a JS engine). As an example, consider a reference to the last element of an array, which in the current proposal is like this: "$.store.book[(@.length-1)]". You could use an explicit index, but that presumes you have the entire structure of interest. I can imagine wanting to generate a stream of partial updates that append to a list, where you don't want the client to have to track the entire list structure. One response might be 'write them as separate documents', but then you are forced to fake-join/merge in your view, which can get very complicated, and run into intermediate documents that expand during (re)reduction.

Finally, why does this have to be driven through the 'JSON community'. Given that Couch is an *alpha* product, this is a good time to implement something, which IMO is the best way to prove a particular model. Why not just implement something to get a feel for suitability? We don't have to push anyone, we just have to do it, surely? And yes, I understand the inherent irony of that statement :)

Antony Blakey
-------------
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Every task involves constraint,
Solve the thing without complaint;
There are magic links and chains
Forged to loose our rigid brains.
Structures, structures, though they bind,
Strangely liberate the mind.
  -- James Fallen


Reply via email to