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
>>>
>>