Re: [apps-discuss] Last Call: <draft-ietf-appsawg-json-pointer-07.txt> (JSON Pointer) to Proposed Standard

Robert Sayre <> Mon, 07 January 2013 00:01 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 3E1E421F857B; Sun, 6 Jan 2013 16:01:36 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -3.599
X-Spam-Status: No, score=-3.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id AJ0W-a3YgXMX; Sun, 6 Jan 2013 16:01:35 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 223E621F8578; Sun, 6 Jan 2013 16:01:34 -0800 (PST)
Received: by with SMTP id x48so9224028wey.8 for <multiple recipients>; Sun, 06 Jan 2013 16:01:34 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=dw+ysy5x2Qze/pzJPJljE4jmDrGirRkeSdFljnROM/o=; b=gFcK7/BKijCgnKvfld7Uc1Xkqsc8Cx4/Y9VHv59KLPGuSoXEFN/mchcUwXqBO5gc60 4KqixqSC/x6xT9BP2zcgxpBrNLHUEZ7eN+qVMgYbwT90iDptnRdaigBgWqg7SH+QCCMk neeDlHjYCYmJdd2dcul/glzWFWinFdvo9l4Wsoh9Q9fr/zW5hVDSbw+RAVueSMrpxquc A/kl8zopZcQ8l/n1gTIxEVI9NGj8HV5xcTqtLjIrjaKTViKp3Oz2PrMW+yBo4FAhGqD2 svjXNNQlFvL3qGTMZsvjUqRFlAB2bEwmNY3Lwe6DqYS2D/JBz3ntIxiHUlnhA5nUIaWA Cy4w==
MIME-Version: 1.0
Received: by with SMTP id j5mr92782594wjf.28.1357516894252; Sun, 06 Jan 2013 16:01:34 -0800 (PST)
Received: by with HTTP; Sun, 6 Jan 2013 16:01:34 -0800 (PST)
In-Reply-To: <1357515310.6827.23.camel@polyglot>
References: <> <> <> <> <> <> <> <> <> <> <1357515310.6827.23.camel@polyglot>
Date: Sun, 06 Jan 2013 16:01:34 -0800
Message-ID: <>
Subject: Re: [apps-discuss] Last Call: <draft-ietf-appsawg-json-pointer-07.txt> (JSON Pointer) to Proposed Standard
From: Robert Sayre <>
To: "Paul C. Bryan" <>
Content-Type: text/plain; charset="ISO-8859-1"
Cc: Mark Nottingham <>, IETF Discussion <>, IETF Apps Discuss <>
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: IETF-Discussion <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 07 Jan 2013 00:01:36 -0000

On Sun, Jan 6, 2013 at 3:35 PM, Paul C. Bryan <> wrote:

Thank you for the technical response.

> 1) The ambiguity around arrays makes the patch format unsuitable for common
> concurrent editing algorithms.
> Common concurrent editing algorithms should, in my opinion, use techniques
> to ensure the state of the resource (relative to the edits) is known. In
> HTTP, we have ETag and If-Match/If-None-Match preconditions. In JSON Patch,
> we have (a rudimentary) test operation.

That is sequential editing, not concurrent editing. Here are a few
links to make sure we're not talking past each other:

The above overview section contains a two-step insert/delete process
bearing an uncanny resemblance to a JSON Patch document.

Here's some software that uses patch documents in this fashion:

> [snip]
> 3) It's not possible to tell whether a JSON Pointer document is
> syntactically correct in isolation.
> There is no such thing as a JSON Pointer document.

Yes, I meant JSON Pointer /reference/. This error seems tangential to
the thread in general, though, which is why I didn't bother to correct
myself when others raised this point.

> 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.
> 99% of RESTful systems I'm familiar with are based on HTTP. Where optimistic
> concurrency is acceptable, HTTP preconditions seems to provide acceptable
> coverage. Where more granularity or more pessimistic concurrency is
> required, implementors are free to use their own mechanisms, including more
> expressive predicates (as has been proposed here, with my endorsement)
> and/or resource locking. These are intentionally out of scope for JSON
> Patch.

Fully disagree. My point is that the array ambiguity makes it hard to
implement more optimistic concurrency.

> Later in this thread, you wrote:
> 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!"
> I don't agree that this is a bug; it lacks a feature that you and some
> others have requested.

The only rationale I've seen prior to my message was something about
"feeling natural" and "static languages" that I admit I don't fully
understand. Are there other technical arguments I've missed? I'm happy
to go read up.

> Our reasoning for resisting such change is
> legitimate.

This last assertion really isn't qualified very well. Do you have a
more extensive rationale, or is a simple contradiction the extent of
your argument?

- Rob