On Sat, Jan 5, 2013 at 6:59 PM, Mark Nottingham <m...@mnot.net> wrote:
>
> Yes, you've brought that to our attention several times. If you wanted
> this spec to align with your software, it would have been much easier
> if you'd got involved before Last Call.

Well, there shouldn't be any big adjustments to my software at all,
and the document generally looks good. This is just a bug: two parties
can apply the same patch and get different results, without
encountering an error.

>>> However, I'm even more interested in getting this format published,
>>
>> Well, I guess someone has something they want to ship...
>
> Right. I'll let that statement stand on its own; I think anyone who's been
> participating or watching the WG can assess how justified it is.

Ah. I meant that the WG seems to be favoring "running code" a little
too heavily in the presence of a bug. It's an old argument, and it's
boring: "We can't change it now, there are already twelve users!"

>
> Always a pleasure, Rob.

That tone leaves something to be desired, but no matter. This is a bug
and the WG should fix it. I don't think more process emails are
necessary.

- Rob

On Sat, Jan 5, 2013 at 6:59 PM, Mark Nottingham <m...@mnot.net> wrote:
> On 06/01/2013, at 1:29 PM, Robert Sayre <say...@gmail.com> wrote:
>
>> On Sat, Jan 5, 2013 at 5:48 PM, Mark Nottingham <m...@mnot.net> wrote:
>>>
>>> However, at this point, doing so really a judgement call; we have multiple 
>>> implementations, and we shouldn't
>>> force them to change arbitrarily.
>>
>> The word "arbitrarily" seems inappropriate here. I raised at least
>> four technical issues and your message addresses none of them.
>
> ... and I explained why.
>
>
>>> As far as I can see, you haven't convinced anyone that this is a serious 
>>> enough problem to do so (and I don't
>>> appear to be the only one to hold that opinion, by any means).
>>
>> Did you read this thread? Markus Lanthaler and Conal Tuohy raised
>> similar points.
>
> Yes.
>
>
>>> Furthermore, it's not clear that the use cases you have in mind (since you 
>>> have brought up JSON Sync)
>>> are in-scope for these specifications.
>>
>> That assertion is both unsubstantiated and incorrect. json-sync has
>> identical primitive operations to JSON Patch (create/edit/remove vs
>> add/replace/remove). The JSON Patch document defines Copy and Move in
>> terms of the add/replace, so those are mostly syntactic sugar. The
>> only meaningful delta is the "test" operation, and I do plan to add
>> that to json-sync, since it's a good way to make application-specific
>> assertions.
>
> Yes, you've brought that to our attention several times. If you wanted this 
> spec to align with your software, it would have been much easier if you'd got 
> involved before Last Call.
>
>
>>> However, I'm even more interested in getting this format published,
>>
>> Well, I guess someone has something they want to ship...
>
> Right. I'll let that statement stand on its own; I think anyone who's been 
> participating or watching the WG can assess how justified it is.
>
> Always a pleasure, Rob.
>
>
>>
>> - Rob
>>
>>> Cheers,
>>>
>>>
>>> On 06/01/2013, at 11:19 AM, Robert Sayre <say...@gmail.com> wrote:
>>>
>>>> Mark,
>>>>
>>>> The WG's reasoning, as stated in your message below, seems flawed.
>>>> Messages since your last communication on this matter have shown:
>>>>
>>>> 1) The ambiguity around arrays makes the patch format unsuitable for
>>>> common concurrent editing algorithms.
>>>> 2) The ambiguity is likely to occur in the real world, for a couple of
>>>> different reasons.
>>>> 3) It's not possible to tell whether a JSON Pointer document is
>>>> syntactically correct in isolation.
>>>>
>>>> Additionally, you raised this point in your message below:
>>>>>
>>>>> the patch author already has to understand the semantics of the document 
>>>>> they're patching
>>>>
>>>> That claim does not seem to be well-justified, and it could be
>>>> meaningless to the person implementing patch software (for example:
>>>> https://github.com/sayrer/json-sync).
>>>>
>>>> This issue is a problem in practice, and it's a problem in theory as
>>>> well. JSON-Patch messages aren't sufficiently self-descriptive, so
>>>> they aren't appropriate for use in a RESTful system.
>>>>
>>>> A response containing technical reasoning seems in order, since the
>>>> points raised by myself and others on this issue are unrelated to the
>>>> WG's previous thinking.
>>>>
>>>> - Rob
>>>>
>>>> On Sun, Dec 16, 2012 at 9:41 PM, Mark Nottingham <m...@mnot.net> wrote:
>>>>> Robert,
>>>>>
>>>>> This was discussed extensively in the Working Group.
>>>>>
>>>>> The root of the issue was that some people reflexively felt that this was 
>>>>> necessary, but upon reflection, we decided it wasn't; although it seems 
>>>>> "natural" to some, especially those coming from a static language 
>>>>> background, it didn't provide any utility.
>>>>>
>>>>> You might argue that someone who (for example) adds to "/foo/1" in the 
>>>>> mistaken belief that it's an array, when in fact it's an object, will get 
>>>>> surprising results. That's true, but if we were to solve this problem, 
>>>>> that person would still need to understand the underlying semantics of 
>>>>> "foo" to do anything useful to it -- and I'm not hearing anyone complain 
>>>>> about that (I hope).
>>>>>
>>>>> Put another way -- do you really think that people PATCHing something as 
>>>>> if it's an array (when in fact it's an object) is a significant, 
>>>>> real-world problem, given that the patch author already has to understand 
>>>>> the semantics of the document they're patching? I don't, and the WG 
>>>>> didn't either.
>>>>>
>>>>> Regards,
>>>>>
>>>>>
>>>>> On 17/12/2012, at 3:36 PM, Robert Sayre <say...@gmail.com> wrote:
>>>>>
>>>>>> The cost of fixing it seems low, either by changing the path syntax of
>>>>>> JSON pointer or changing the names of operations applied to arrays.
>>>>>> Array-like objects are common enough in JavaScript to make this a
>>>>>> worry. The other suggestions either assume a particular policy for
>>>>>> concurrent edits or require more machinery (test operation etc).
>>>>>> Wouldn't it be simpler to make the patch format more precise?
>>>>>>
>>>>>> - Rob
>>>>>>
>>>>>> On Sun, Dec 16, 2012 at 4:33 PM, Matthew Morley <m...@mpcm.com> wrote:
>>>>>>> I am usually lurking and struggling to keep up with these posts. But, I
>>>>>>> concur with James, this really is a non-issue in practice.
>>>>>>>
>>>>>>> The JSON Pointer expresses a path down a JSON object to a specific 
>>>>>>> context.
>>>>>>> The Patch expresses a change within or to that context.
>>>>>>> Everything about the both standards is about that end context.
>>>>>>>
>>>>>>> If you want to confirm the type of the context before applying a patch, 
>>>>>>> this
>>>>>>> should probably be part of a test operation. I'm not sure if this is
>>>>>>> possible at this point (?), but that is where the logic should exist.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Sun, Dec 16, 2012 at 12:22 AM, James M Snell <jasn...@gmail.com> 
>>>>>>> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sat, Dec 15, 2012 at 8:36 PM, Robert Sayre <say...@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>> On Fri, Dec 14, 2012 at 9:17 AM, Markus Lanthaler
>>>>>>>>> <markus.lantha...@gmx.net> wrote:
>>>>>>>>>>
>>>>>>>>>> Hmm.. I think that’s quite problematic. Especially considering how 
>>>>>>>>>> JSON
>>>>>>>>>> Pointer is used in JSON Patch.
>>>>>>>>>
>>>>>>>>> I agree--I provided the same feedback privately. It seems
>>>>>>>>> straightforwardly unsound.
>>>>>>>>>
>>>>>>>>
>>>>>>>> In practice it doesn't seem to be much of an issue.
>>>>>>>>
>>>>>>>> Specifically, if I GET an existing document and get an etag with the 
>>>>>>>> JSON,
>>>>>>>> then make some changes and send a PATCH with If-Match, the fact that 
>>>>>>>> any
>>>>>>>> given pointer could point to an array or object member doesn't really 
>>>>>>>> matter
>>>>>>>> much.
>>>>>>>>
>>>>>>>> For example:
>>>>>>>>
>>>>>>>>> GET /the/doc HTTP/1.1
>>>>>>>>
>>>>>>>> <  HTTP/1.1 200 OK
>>>>>>>>   ETag: "my-document-tag"
>>>>>>>>   Content-Type: application/json
>>>>>>>>
>>>>>>>>   {"1":"foo"}
>>>>>>>>
>>>>>>>>> PATCH /the/doc HTTP/1.1
>>>>>>>>   If-Match: "my-document-etag"
>>>>>>>>   Content-Type: application/json-patch
>>>>>>>>
>>>>>>>>   [{"op":"add","path":"/2","value":"bar"}]
>>>>>>>>
>>>>>>>> Generally speaking, someone should not be using PATCH to perform a 
>>>>>>>> partial
>>>>>>>> modification if they don't already have some knowledge in advance what 
>>>>>>>> they
>>>>>>>> are modifying. The only time the apparent ambiguity becomes an issue 
>>>>>>>> is when
>>>>>>>> a client is blindly sending a patch to an unknown endpoint... in which 
>>>>>>>> case,
>>>>>>>> you get whatever you end up with.
>>>>>>>>
>>>>>>>> - James
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> - Rob
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> Markus Lanthaler
>>>>>>>>>>
>>>>>>>>>> @markuslanthaler
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> From: James M Snell [mailto:jasn...@gmail.com]
>>>>>>>>>> Sent: Friday, December 14, 2012 5:41 PM
>>>>>>>>>> To: Markus Lanthaler
>>>>>>>>>> Cc: IETF Discussion; IETF Apps Discuss
>>>>>>>>>> Subject: Re: [apps-discuss] Last Call:
>>>>>>>>>> <draft-ietf-appsawg-json-pointer-07.txt> (JSON Pointer) to Proposed 
>>>>>>>>>> Standard
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> JSON Pointer does not distinguish between objects and arrays. That is
>>>>>>>>>> not determined until the pointer is applied to an actual object 
>>>>>>>>>> instance...
>>>>>>>>>> the pointer "/1" is valid against {"1":"a"} or ["a","b"]
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Fri, Dec 14, 2012 at 2:51 AM, Markus Lanthaler
>>>>>>>>>> <markus.lantha...@gmx.net> wrote:
>>>>>>>>>>
>>>>>>>>>> I've asked that before but didn't get an answer. So let me ask again
>>>>>>>>>> (even
>>>>>>>>>> though I'm quite sure it has already been asked by somebody else).
>>>>>>>>>>
>>>>>>>>>> How does JSON Pointer distinguish between objects and arrays? E.g.
>>>>>>>>>> consider
>>>>>>>>>> the following JSON document:
>>>>>>>>>>
>>>>>>>>>> {
>>>>>>>>>> "foo": "bar",
>>>>>>>>>> "1": "baz"
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> As I read the draft, the JSON Pointer "/1" would evaluate to "baz" 
>>>>>>>>>> even
>>>>>>>>>> though that's probably not what the author intended. Is there a way 
>>>>>>>>>> to
>>>>>>>>>> avoid
>>>>>>>>>> that?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Markus
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Markus Lanthaler
>>>>>>>>>> @markuslanthaler
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>> From: apps-discuss-boun...@ietf.org [mailto:apps-discuss-
>>>>>>>>>>> boun...@ietf.org] On Behalf Of The IESG
>>>>>>>>>>> Sent: Tuesday, December 11, 2012 4:01 PM
>>>>>>>>>>> To: IETF-Announce
>>>>>>>>>>> Cc: apps-disc...@ietf.org
>>>>>>>>>>> Subject: [apps-discuss] Last Call: <draft-ietf-appsawg-json-pointer-
>>>>>>>>>>> 07.txt> (JSON Pointer) to Proposed Standard
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> The IESG has received a request from the Applications Area Working
>>>>>>>>>>> Group
>>>>>>>>>>> WG (appsawg) to consider the following document:
>>>>>>>>>>> - 'JSON Pointer'
>>>>>>>>>>> <draft-ietf-appsawg-json-pointer-07.txt> as Proposed Standard
>>>>>>>>>>>
>>>>>>>>>>> The IESG plans to make a decision in the next few weeks, and 
>>>>>>>>>>> solicits
>>>>>>>>>>> final comments on this action. Please send substantive comments to
>>>>>>>>>>> the
>>>>>>>>>>> ietf@ietf.org mailing lists by 2012-12-25. Exceptionally, comments
>>>>>>>>>>> may
>>>>>>>>>>> be
>>>>>>>>>>> sent to i...@ietf.org instead. In either case, please retain the
>>>>>>>>>>> beginning of the Subject line to allow automated sorting.
>>>>>>>>>>>
>>>>>>>>>>> Abstract
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> JSON Pointer defines a string syntax for identifying a specific
>>>>>>>>>>> value
>>>>>>>>>>> within a JSON document.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> The file can be obtained via
>>>>>>>>>>> http://datatracker.ietf.org/doc/draft-ietf-appsawg-json-pointer/
>>>>>>>>>>>
>>>>>>>>>>> IESG discussion can be tracked via
>>>>>>>>>>>
>>>>>>>>>>> http://datatracker.ietf.org/doc/draft-ietf-appsawg-json-pointer/ballot/
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> No IPR declarations have been submitted directly on this I-D.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> apps-discuss mailing list
>>>>>>>>>>> apps-disc...@ietf.org
>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/apps-discuss
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> apps-discuss mailing list
>>>>>>>>>> apps-disc...@ietf.org
>>>>>>>>>> https://www.ietf.org/mailman/listinfo/apps-discuss
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> apps-discuss mailing list
>>>>>>>>>> apps-disc...@ietf.org
>>>>>>>>>> https://www.ietf.org/mailman/listinfo/apps-discuss
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> apps-discuss mailing list
>>>>>>>> apps-disc...@ietf.org
>>>>>>>> https://www.ietf.org/mailman/listinfo/apps-discuss
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Matthew P. C. Morley
>>>>>> _______________________________________________
>>>>>> apps-discuss mailing list
>>>>>> apps-disc...@ietf.org
>>>>>> https://www.ietf.org/mailman/listinfo/apps-discuss
>>>>>
>>>>> --
>>>>> Mark Nottingham   http://www.mnot.net/
>>>>>
>>>>>
>>>>>
>>>
>>> --
>>> Mark Nottingham   http://www.mnot.net/
>>>
>>>
>>>
>
> --
> Mark Nottingham   http://www.mnot.net/
>
>
>

Reply via email to