Re: [alto] Suresh Krishnan's No Objection on draft-ietf-alto-incr-update-sse-20: (with COMMENT)
Jensen Zhang <jingxuan.n.zhang@gmail.com> Thu, 12 March 2020 16:34 UTC
Return-Path: <jingxuan.n.zhang@gmail.com>
X-Original-To: alto@ietfa.amsl.com
Delivered-To: alto@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7754A3A0D54; Thu, 12 Mar 2020 09:34:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.855
X-Spam-Level:
X-Spam-Status: No, score=-0.855 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, NUMERIC_HTTP_ADDR=1.242, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SNYRgkU4YvXj; Thu, 12 Mar 2020 09:34:37 -0700 (PDT)
Received: from mail-qk1-x72b.google.com (mail-qk1-x72b.google.com [IPv6:2607:f8b0:4864:20::72b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 634773A0D50; Thu, 12 Mar 2020 09:34:36 -0700 (PDT)
Received: by mail-qk1-x72b.google.com with SMTP id f3so7270745qkh.1; Thu, 12 Mar 2020 09:34:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=N77i8PG7ZUwEvJWG5syGAlHcySzJ8zLuRt3qv2GfZvQ=; b=rXwCQYQApBzcUhi8JACRI0jVenve80fBE2DoQsfKwN6GmgxGwbAhJTJ1rl01ASoGCs cOCoSv3hrniGr49Im+LpI09RJRc0xrTfiLfP4s6M5Y9M9h2lsrHcwyxBMhssnSXSKxYG 2SgN2kfmwNORzwvhPa9ffMyDuxtZtBfEE8zKGJ5SAP5E5iuvUFEtyEnMSc/wyENTSz/s a97dXwFFGeqy2elvz2PB3YLZGJlY4hshNZilMgJDaRxr8BzeBQC6jAXdeFjAWxJGZMY4 OjcQlpo1mk7RVvCTRc0pwQQuDddVFuqi/rNSS4fjW17bQHtzSfjTwR4otD7j1sqEWurj BxCg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=N77i8PG7ZUwEvJWG5syGAlHcySzJ8zLuRt3qv2GfZvQ=; b=Z+3b+GQKKECytnj29vG4FkEIUa6ZUZrqTFPyRtPPfIbZk2mXR3yLbHkwtdBJvVwp1p ty4cAfPRSL3VWkNOXMehjFKiJV2Hy7h0w71t/wrHtM1LZy+05YU6fgKLPdmB5rihR5ea D7zMP+A4OZ6VNnKgR3Yx88i9zrDHDsE6Dp9k3/Yl67GZfDdpWdF0vcKvu+atMVmAvx5V MEQvQuyX1/KcdE+W/wQkCfqOAdJN4fXyWQmU9eket61oPBIymm0MpmYVywkN4MdMYqrk 5xUdH80xuY9QTpP+Pcg7E+c1dlv9BYGSYi7YzLzzdfSxclP1dnAMqmZL8WNv1ujweimE bTww==
X-Gm-Message-State: ANhLgQ0O/eftX8EivbnS2XwVY2A6GM3Ee+lLIbms5N/h0y5EplWs84IQ 3coK+JdX4Vg+9Cfie7kS46vhi8jn3O5UAAcYaws=
X-Google-Smtp-Source: ADFU+vvFYNLfK6cXRTrzVtQsvfcgkL3pyVftLi/2edmsOiZ2rc7pRGF+jXpzjcUa7EQ2eeIgcVBBvLH6IN/HtKMkjXo=
X-Received: by 2002:a25:aa51:: with SMTP id s75mr10575395ybi.171.1584030875057; Thu, 12 Mar 2020 09:34:35 -0700 (PDT)
MIME-Version: 1.0
References: <158394360705.1422.16248123466165338736@ietfa.amsl.com> <CANUuoLqLO-hri4w6UFFQ6XPnfxzii7ePukY0Njd2fOij9abyTQ@mail.gmail.com> <1321311D-D49A-420B-A1F1-2643B6347649@kuehlewind.net> <CAAbpuypMdKuo-tw7DfKVtX8vPcZ1ZiNT7zG765viZiZzrrRz7w@mail.gmail.com> <CANUuoLrzeseG4zUMo3_7Yyo3iQkd5t7=UyQsY_sTBGrcWCWC8Q@mail.gmail.com>
In-Reply-To: <CANUuoLrzeseG4zUMo3_7Yyo3iQkd5t7=UyQsY_sTBGrcWCWC8Q@mail.gmail.com>
From: Jensen Zhang <jingxuan.n.zhang@gmail.com>
Date: Thu, 12 Mar 2020 12:34:23 -0400
Message-ID: <CAAbpuypRh7PycBVNBRXz19T6q7XQf_jyJkS+wUH6Rxa5uV=dog@mail.gmail.com>
To: "Y. Richard Yang" <yry@cs.yale.edu>
Cc: Adam Roach <adam@nostrum.com>, IETF ALTO <alto@ietf.org>, Mirja Kuehlewind <ietf@kuehlewind.net>, Suresh Krishnan <suresh@kaloom.com>, The IESG <iesg@ietf.org>, "Vijay K. Gurbani" <vkg@bell-labs.com>, alto-chairs@ietf.org, draft-ietf-alto-incr-update-sse@ietf.org
Content-Type: multipart/alternative; boundary="0000000000009f055105a0aaed5a"
Archived-At: <https://mailarchive.ietf.org/arch/msg/alto/vU-RM7inffMYYWkNrOcfHTKYgcI>
Subject: Re: [alto] Suresh Krishnan's No Objection on draft-ietf-alto-incr-update-sse-20: (with COMMENT)
X-BeenThere: alto@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Application-Layer Traffic Optimization \(alto\) WG mailing list" <alto.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/alto>, <mailto:alto-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/alto/>
List-Post: <mailto:alto@ietf.org>
List-Help: <mailto:alto-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/alto>, <mailto:alto-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 12 Mar 2020 16:34:40 -0000
Hi Richard, The current revision sounds good to me. Sorry for the confusion. The "loose dependency" refers to what Mirja said ("... replace it by a few sentences that loosely described the scheme.") Maybe I misunderstood it. I thought Mirja suggested when the RFC7396 is updated in the future, the sentences in this document should also imply the updated specification. What I suggest is that we should use a fixed specification, not an adaptive one. Thanks, Jensen On Thu, Mar 12, 2020 at 12:13 PM Y. Richard Yang <yry@cs.yale.edu> wrote: > - add Adam explicitly. > > Hi Jensen, > > Not sure by loose dependency, what you meant. The current approach is to > revise the current document to include key features/notes of the algorithm. > We will plan to use the change below: > > Old > > > To avoid always sending complete data, a server needs mechanisms to > encode incremental changes. This design uses JSON merge patch as one > mechanism. Below is a non-normative summary of JSON merge patch; see > [RFC7396 <https://tools.ietf.org/html/rfc7396>] for the normative definition. > > JSON merge patch is intended to allow applications to update server > resources via the HTTP patch method [RFC5789 <https://tools.ietf.org/html/rfc5789>]. This document adopts > > the JSON merge patch message format to encode incremental changes, > but uses a different transport mechanism. > > Informally, a JSON merge patch object is a JSON data structure that > defines how to transform one JSON value into another. Specifically, > JSON merge patch treats the two JSON values as trees of nested JSON > objects (dictionaries of name-value pairs), where the leaves are > values (e.g., JSON arrays, strings, numbers) other than JSON objects > and the path for each leaf is the sequence of keys leading to that > leaf. When the second tree has a different value for a leaf at a > path, or adds a new leaf, the JSON merge patch tree has a leaf, at > that path, with the new value. When a leaf in the first tree does > not exist in the second tree, the JSON merge patch tree has a leaf > with a JSON "null" value. The JSON merge patch tree does not have an > entry for any leaf that has the same value in both versions. > > As a result, if all leaf values are simple scalars, JSON merge patch > is a quite efficient representation of incremental changes. It is > less efficient when leaf values are arrays, because JSON merge patch > replaces arrays in their entirety, even if only one entry changes. > > Formally, the process of applying a JSON merge patch is defined by > the following recursive algorithm, as specified in [RFC7396 <https://tools.ietf.org/html/rfc7396>]: > > define MergePatch(Target, Patch) { > if Patch is an Object { > if Target is not an Object { > Target = {} # Ignore the contents and > # set it to an empty Object > } > for each Name/Value pair in Patch { > if Value is null { > if Name exists in Target { > remove the Name/Value pair from Target > } > } else { > Target[Name] = MergePatch(Target[Name], Value) > } > } > return Target > } else { > return Patch > } > } > > Note that null as the value of a name/value pair will delete the > element with "name" in the original JSON value. > > > > New > > To avoid always sending complete data, a server needs mechanisms to > encode incremental changes. This design uses JSON merge patch as one > mechanism. Below is a non-normative summary of JSON merge patch; see > [RFC7396 <https://tools.ietf.org/html/rfc7396>] for the normative definition. > > JSON merge patch is intended to allow applications to update server > resources via the HTTP patch method [RFC5789 <https://tools.ietf.org/html/rfc5789>]. This document adopts > > the JSON merge patch message format to encode incremental changes, > but uses a different transport mechanism. > > Informally, a JSON merge patch message consists of a JSON merge patch > object (referred to as a patch in [RFC7396]), which defines > how to transform one JSON value into another using a recursive > merge patch algorithm. > Specifically, the patch is computed by treating two JSON values (first one > being the original, and the second being the updated) as trees > of nested JSON objects (dictionaries of name-value pairs), where the > leaves are values (e.g., JSON arrays, strings, numbers) other than > JSON objects and the path for each leaf is the sequence of keys leading > to that leaf. When the second tree has a different value for a leaf at a > > path, or adds a new leaf, the patch has a leaf, at > that path, with the new value. When a leaf in the first tree does > not exist in the second tree, the JSON merge patch tree has a leaf > with a JSON "null" value. Hence, in the patch, null as the value of > a name/value pair will delete the element with "name" in the original > JSON value. The patch does not have an entry for any leaf that has the same > value in both versions. See the MergePatch pseudocode > > at the beginning of Section 2 of [RFC7396] for the formal specification of > how to apply a given patch. > > As a result, if all leaf values are simple scalars, JSON merge patch > is a quite efficient representation of incremental changes. It is > less efficient when leaf values are arrays, because JSON merge patch > replaces arrays in their entirety, even if only one entry changes. > > > ==== > > If there is an objection, please do let us know. > > Thanks, > Richard > > On Thu, Mar 12, 2020 at 11:30 AM Jensen Zhang <jingxuan.n.zhang@gmail.com> > wrote: > >> Hi Suresh, Mirja and Richard, >> >> To make the content consistent, I agree that we should not duplicate the >> formal specification. But I don't think it should be a loose dependency. >> Personally, I think we should strictly refer to RFC7396, even though it >> could be updated or obsoleted. If it is a loose dependency, an ALTO client >> adopting the old specification may not be compatible with the ALTO server >> adopting the new specification. We should make sure all the clients/servers >> based on this document are compatible in any case. If RFC7396 is updated or >> obsoleted in the future, we can also update this document. >> >> Jensen >> >> >> On Thu, Mar 12, 2020 at 6:23 AM Mirja Kuehlewind <ietf@kuehlewind.net> >> wrote: >> >>> Hi Richard, >>> >>> The concern is that RFC7396 could be updated by another RFC or even >>> obsoleted. Therefore duplicating any formal specification should be avoided >>> and it’s actually a feature that people have to look up RFC7396. I >>> recommend to remove the pseudo code and replace it by a few sentences that >>> loosely described the scheme. >>> >>> Mirja >>> >>> >>> >>> > On 11. Mar 2020, at 21:49, Y. Richard Yang <yry@cs.yale.edu> wrote: >>> > >>> > Dear Suresh, >>> > >>> > Thanks for the review! Please see inline. >>> > >>> > On Wed, Mar 11, 2020 at 12:20 PM Suresh Krishnan via Datatracker < >>> noreply@ietf.org> wrote: >>> > Suresh Krishnan has entered the following ballot position for >>> > draft-ietf-alto-incr-update-sse-20: No Objection >>> > >>> > When responding, please keep the subject line intact and reply to all >>> > email addresses included in the To and CC lines. (Feel free to cut this >>> > introductory paragraph, however.) >>> > >>> > >>> > Please refer to >>> https://www.ietf.org/iesg/statement/discuss-criteria.html >>> > for more information about IESG DISCUSS and COMMENT positions. >>> > >>> > >>> > The document, along with other ballot positions, can be found here: >>> > https://datatracker.ietf.org/doc/draft-ietf-alto-incr-update-sse/ >>> > >>> > >>> > >>> > ---------------------------------------------------------------------- >>> > COMMENT: >>> > ---------------------------------------------------------------------- >>> > >>> > Section 3.1.1.: >>> > I feel strongly that this document should not restate the >>> pseudo-code for the >>> > JSON merge patch algorithm and should instead use a reference to >>> Section 2 of >>> > RFC7396 instead. This will avoid inconsistencies (e.g. note that the >>> pseudo >>> > code in this draft is *already different* from that in RFC7396 even >>> though >>> > the difference is only the braces) and be amenable to updates to >>> RFC7396. >>> > >>> > >>> > This is an interesting discussion point. In an earlier version, the >>> authors had some back-and-forth on including the pseudo-code or not. The >>> "include" argument "won" because it makes the document more self-contained >>> and a potentially more pleasant read---a reader does not need to track down >>> a separate document to find the pseudo-code, and we are referring to a >>> "fixed" document---I can see your argument that there can be Errata/Update >>> to the RFC7396 pseudocode. It is amazing that you caught the difference in >>> braces vs : ! One proposal is that we change to the exact format (replace >>> braces with {) as in RFC 7396 and keep the pseudocode. Or let the coauthors >>> discuss a bit more and get a conclusion in the next couple of days. How >>> does this sound? >>> > >>> > References: >>> > >>> > Is there a reason this document is using the obsoleted JSON reference >>> to >>> > RFC7159? Suggest updating the reference to RFC8259. >>> > >>> > >>> > Good catch. We are updating to RFC 8259. Thanks! >>> > >>> > Thanks again. >>> > Richard >>> >>> _______________________________________________ >>> alto mailing list >>> alto@ietf.org >>> https://www.ietf.org/mailman/listinfo/alto >>> >>
- [alto] Suresh Krishnan's No Objection on draft-ie… Suresh Krishnan via Datatracker
- Re: [alto] Suresh Krishnan's No Objection on draf… Y. Richard Yang
- Re: [alto] Suresh Krishnan's No Objection on draf… Mirja Kuehlewind
- Re: [alto] Suresh Krishnan's No Objection on draf… Jensen Zhang
- Re: [alto] Suresh Krishnan's No Objection on draf… Y. Richard Yang
- Re: [alto] Suresh Krishnan's No Objection on draf… Jensen Zhang