Re: [calsify] AD review of draft-ietf-calext-ical-relations-05

Barry Leiba <barryleiba@computer.org> Thu, 31 December 2020 21:38 UTC

Return-Path: <barryleiba@gmail.com>
X-Original-To: calsify@ietfa.amsl.com
Delivered-To: calsify@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6A64B3A0BEF; Thu, 31 Dec 2020 13:38:22 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.398
X-Spam-Level:
X-Spam-Status: No, score=-1.398 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
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 0TvcH8t7-L2n; Thu, 31 Dec 2020 13:38:19 -0800 (PST)
Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (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 456C33A005C; Thu, 31 Dec 2020 13:38:19 -0800 (PST)
Received: by mail-lf1-f46.google.com with SMTP id o13so46316130lfr.3; Thu, 31 Dec 2020 13:38:19 -0800 (PST)
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=n0P/4VxY6r2kv8gQHsIeJMe0TmPfNQQLYG2TwtxhDCc=; b=UE4a6tBb177hiZIJ1Vwt1GqXPOdQ5vtVQuooSYyflnwp50P10uQLa2cfxJRxbCmX6T nhJ1abxxNsUXDT9/INIUfBMnonN7/e3OaWhV1JrnL3i/rnz0OI2agw4AhCufL5/tz//M e3c4F08DqdLfRS/29DfEt+629ILAOZj5b6Nq/OerQdLmD/4WFBXUXmJ/+wLO10W4ogzc QVmG85u0zaSsejJANcBG72YuuI5gYgbqKoNF10kcXUBNJhbO5X+oGYw6FLMsIPSd4zQo g4ez6RmzudTpyp54teeGPg4DM9FKyv5LRsBnDdqCOwc5jfNmzP/kUDcN9/xbq4E8D5lV 9Caw==
X-Gm-Message-State: AOAM531I83uPQ1I1f0IwqAR2yGDV/vSxrOJbe8MkoFsj9HPYIYN1R28S saTaMXB1CkG7/2kcO/fdQ/w36Qk9NcyHwo72U1w=
X-Google-Smtp-Source: ABdhPJyXmUxBv6CEwGuILD8Fy3mpKbG+P7oMxfHmPg7EUICSzjapv/O98gA67ePgzrw5/EPKNx3055wNZ3IuO3QpbXY=
X-Received: by 2002:a2e:b047:: with SMTP id d7mr27914353ljl.467.1609450697165; Thu, 31 Dec 2020 13:38:17 -0800 (PST)
MIME-Version: 1.0
References: <CALaySJKAMbY8ggUCCiG4hDL7wzD9RpW8Zx3z719VhTypX6cKjg@mail.gmail.com> <d84bea79-1c60-3f3f-46d9-78fdcd0eb11d@gmail.com>
In-Reply-To: <d84bea79-1c60-3f3f-46d9-78fdcd0eb11d@gmail.com>
From: Barry Leiba <barryleiba@computer.org>
Date: Thu, 31 Dec 2020 16:38:05 -0500
Message-ID: <CALaySJKgsEeq9-+h4avSv-a4XR4oEb02Dih_Qu22RpLuBTiybw@mail.gmail.com>
To: Michael Douglass <mikeadouglass@gmail.com>
Cc: calsify@ietf.org, draft-ietf-calext-ical-relations.all@ietf.org
Content-Type: multipart/alternative; boundary="00000000000016901305b7c97148"
Archived-At: <https://mailarchive.ietf.org/arch/msg/calsify/fnavENU0F3fNZB-8wJI629yOKIU>
Subject: Re: [calsify] AD review of draft-ietf-calext-ical-relations-05
X-BeenThere: calsify@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <calsify.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/calsify>, <mailto:calsify-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/calsify/>
List-Post: <mailto:calsify@ietf.org>
List-Help: <mailto:calsify-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/calsify>, <mailto:calsify-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 31 Dec 2020 21:38:22 -0000

All this looks good, and thanks.  Post the update when ready.

On your question:

> other-param (and xparam) are defined in 5545. Do we require an
> explicit reference to that spec.

I think “xparam” is not defined there (“x-param” is).  And I guess we don’t
have to be explicit, but I think it would help to have a comment that says
where it’s defined, or perhaps a general comment that some items are
defined in 5545.

Barry

On Thu, Dec 31, 2020 at 4:11 PM Michael Douglass <mikeadouglass@gmail.com>
wrote:

> Thanks for your comments: I'll work through them below.
>
> I'll submit an update in a short while.
> On 11/19/20 14:08, Barry Leiba wrote:
>
> Hi, Michael and the working group,
>
> As we discussed the ical-relations doc during the IETF 109 session, I
> though I'd get a jump on the publication request and do an AD review
> now.  Here it is below.
>
> — Section 1 —
>
>    associated meta-data.  These relationships can take the following
>    forms
>
> Nit: That needs a colon at the end of it.
>
>       CATEGORIES are often used for this purpose but are
>       problematic for application developers.
>
> It’s a small thing, but it might be good to briefly say why it’s problematic.
>
> Replaced with
>
> Grouped iCalendar:  iCalendar entities can be related to each other
>    as a group.  CATEGORIES are often used for this purpose but are
>    problematic for application developers due to their lack of
>    consistency and use as a free-form tag.
>
>    Linked:  Entities are linked to each other through typed references.
>
> Can you be a little less terse here, or explain what you mean by
> “typed references” in this context?
>
> How about the following:
>
>
> — Section 1.1 —
>
>    and lag values and RELATED-TO is extended to allow URI values.
>
> This particular sentence would benefit from the Oxford comma after “lag values”.
>
> Yes - done
>
> — Section 1.2 —
>
>    This may be, for example, to identify
>    the tasks associated with a given project without having to
>    communicate the task structure of the project, or, for example, in a
>    package delivery system all tasks associated to a specific package.
>
> Another small suggestion for rephrasing (to avoid the awkward
> repetition of “for example”):
>
> NEW
>    Two examples of how this may be used are to identify the tasks
>    associated with a given project without having to communicate the
>    task structure of the project, and to group all tasks associated to
>    a specific package in a package delivery system.
> END
>
> Thank you - done
>
> — Section 1.3 —
>
>    This more accurately
>    defines what we mean by a category.  It's not the words but the
>    meaning.
>
> Two things here:
> 1. I’m not sure what “this” refers to.  Is it “the name CONCEPT”?  Or
> is it the Simple Knowledge Organization System?
> 2. The sentence “It's not the words but the meaning,” is just sort of
> hanging around without being connected to anything.
>
> Is this better?
>
> The term "concept" more accurately defines what we often
> mean by a category. It's not the text string that is important
> but the meaning attached to it. For example, the term
> "football" can mean very different sports.
>
> I’d really like to see this paragraph reworded.
>
>    Rather than attempt to add semantics to the current property it
>    seeems best to continue its usage as an informal tag and establish a
>    new property with more constraints.
>
> I think this would be clearer with names on the properties (and one
> "e" fewer in "seems"):
>
> NEW
>    Rather than attempt to add semantics to the existing CATEGORY
>    property, it seems best to continue its usage as an informal tag
>    and to establish a new CONCEPT property with more constraints.
> END
>
> Done.
>
> — Section 1.4 —
>
>    It is often necessary to relate calendar components.
>
> To what?  To each other?  Something else?  Please say.
>
> Does this work?
>
> It is also often necessary to reference calendar components
> in other collections. For example, a VEVENT might refer to
> a VTODO from which it was derived.
>
>
> — Section 1.6 —
> Please use the new BCP 14 boilerplate and add a normative reference to RFC 8174.
>
> Done.
>
> — Section 2 —
>
>    UID:  This allows for linking within a single collection and the
>       value is assumed to be another component within that collection.
>
> Why “assumed to be”?  Is this any different to “the value is the UID
> of another component within that collection”?
>
> Changed to:
>
> This allows for linking within a single collection and the value
> MUST be another component within that collection.
>
> For “xpointer”, please be consistent in capitalizing the term.  I
> suggest using “XPointer” here and in Section 6, to match usage in the
> reference doc.
>
> Done
>
> — Section 3 —
>
>    [RFC5988] defines two forms of relation type, registered and
>    extension.  Registered relation types are added to a registry defined
>    by [RFC5988] while extension relation types are specified as unique
>    unregistered URIs, (at least unregistered in the [RFC5988] registry).
>
> First, RFC 8288 replaced 5988 three years ago; please change to using
> that as the reference.
>
> Second, the parenthetical seems odd.  I suggest, “while extension
> relation types are specified as unique URIs that are not registered in
> the registry.”
>
> Third, I strongly suggest adding section references here.  So the
> result might be this:
>
> NEW
>    [RFC8288] defines two forms of relation type: registered and
>    extension.  Registered relation types are added to the Link
>    Relations registry as specified in Section 2.1.1 of [RFC8288].
>    Extension relation types, defined in Section 2.1.2 of [RFC8288],
>    are specified as unique URIs that are not registered in the registry.
> END
>
> Done
>
> — Section 4 —
>
>    Relationship parameter type values are defined in section 3.2.15. of
>    [RFC5545].
>
> Nit: remove the dot at the end of “3.2.15” (and capitalize “Section”,
> to be consistent with how we do section references).
>
> Done
>
> This is probably a good time to pay attention to BCP 178 (RFC 6648) by
> removing the x-name construction from the ABNF (also in Section 5.1).
>
> I ended up reworking this section.
>
> First I realized I didn't have to redefine the parameter anyway - just
> define new values. I broke it into 2 new sections - one defining the
> temporal values and one the rest - simply because the temporal values
> seemed to justify their own section.
>
>       The GAP parameter specifies the
>       lead or lag time between the predecessor and the successor.
>
> This would benefit from a forward reference: “The GAP parameter,
> defined in Section 5.2, specifies”
>
> done
>
>       the description of each temporal relationship below we refer to
>       Task-A which contains and controls the relationship and Task-B the
>       target of the relationship.
>
> Nit: this needs commas: “Task-A, which contains and controls the
> relationship, and Task-B, the target”.  (There are a lot of missing
> commas throughout, and I’m not calling them all out; we’ll leave most
> to the RFC Editor.)
>
> I'll take a read through looking for that
>
> — Section 5.2 —
>
>    Purpose:  To specify the length of the gap, positive or negative
>       between two temporaly related components.
>
> Another example of a missing comma that rates mention: after “negative”.
>
> Thanks
>
> — Section 7.1 —
>
>       Possible category resources are the various proprietary systems,
>       for example Library of Congress, or an open source derived from
>       something like the dmoz.org data.
> dmoz.org died 3.5 years ago; do we really still want to use it as an example?
>
> I have a copy of their categorizations... - but I'll cut it out of this
> spec
>
>      conceptparam = *(
>                    ;
>                    ; The following is OPTIONAL,
>                    ; and MAY occur more than once.
>                    ;
>                    (";" other-param)
>                    ;
>                    )
>
> The ABNF already says that it can occur zero or more times, so the
> comment is supefluous.  I think the comments and the nested grouping
> makes this more confusing than helpful, and suggest just changing it
> to this:
>
> NEW
>      conceptparam = *(";" other-param)
> END
>
> Agreed
>
>      SCONCEPT:http://example.com/event-types/sports
>      CONCEPT:http://example.com/event-types/arts/music
>      CONCEPT:http://example.com/task-types/delivery
>
> Is “SCONCEPT” a typo?  (And is there really value in three essentially
> indistinguishable examples?)
>
> Yes and no - removed 2
>
> — Section 7.2 —
>
>      link            = "LINK" linkparam  /
>                        (
>                          ";" "VALUE" "=" "TEXT"
>                          ":" text
>                        )
>                        (
>                          ";" "VALUE" "=" "REFERENCE"
>                          ":" text
>                        )
>                        (
>                          ";" "VALUE" "=" "URI"
>                          ":" uri
>                        )
>                        CRLF
>
> This ABNF doesn’t make any sense.  Are you missing some alternative operators?
>
>      linkparam       = *(
>
>                      ; the following is MANDATORY
>                      ; and MAY occur more than once
>
>                      (";" relparam) /
>
>                      ; the following are MANDATORY
>                      ; but MUST NOT occur more than once
>
>                      (";" fmttypeparam) /
>                      (";" labelparam) /
>                      ; labelparam is defined in ...
>
>                      ; the following is OPTIONAL
>                      ; and MAY occur more than once
>
>                      (";" xparam)
>
>                      )
>
> And there are multiple problems here:
> - Where is labelparam defined?
> - Where is xparam defined?
> - All elements of linkparam are optional, because you use “*”, so how
> can any elements be MANDATORY?
> - The ABNF should make it clear, without comments, whether things are
> optional or mandatory and whether they can appear once or multiple
> times.
>
> Please re-work this ABNF, and get help from an ABNF expert if you need that.
>
> OLD
>
> link            = "LINK" linkparam  /
>                   (
>                     ";" "VALUE" "=" "TEXT"
>                     ":" text
>                   )
>                   (
>                     ";" "VALUE" "=" "REFERENCE"
>                     ":" text
>                   )
>                   (
>                     ";" "VALUE" "=" "URI"
>                     ":" uri
>                   )
>                   CRLF
>
>
> linkparam       = *(
>
>                 ; the following is MANDATORY
>                 ; and MAY occur more than once
>
>                 (";" relparam) /
>
>                 ; the following are MANDATORY
>                 ; but MUST NOT occur more than once
>
>                 (";" fmttypeparam) /
>                 (";" labelparam) /
>                 ; labelparam is defined in ...
>
>                 ; the following is OPTIONAL
>                 ; and MAY occur more than once
>
>                 (";" xparam)
>
>                 )
>
> NEW
>
> link           = "LINK" linkparam ":"
>                    ( text /  ; for VALUE=REFERENCE
>                      uri /  ; for VALUE=URI
>                      text ) ; for VALUE=TEXT
>                  CRLF
>
> linkparam      = ; the elements herein may appear in any order,
>                  ; and the order is not significant.
>
>                  (";" "VALUE" "=" ("UID" /
>                                    "URI" /
>                                    "TEXT"))
>                  1*(";" linkrelparam)
>                  (";" fmttypeparam)
>                  (";" labelparam)
>                  *(";" other-param)
>
> END
>
> Also added paragraph providing reference to labelparam
>
> Also, this section is exactly one that *can* benefit from multiple
> examples, each showing a different set of value types and parameters.
>
> Yes. Additionally, the example is incorrect. The abnf doesn't allow for a
> default value type so it should specify VALUE=URI
>
> Also , "The Egg" is a real place. Changed to "The Venue".
>
> — Section 7.3 —
>
>    Description:  The value of this property is a text identifier that
>       allows associated components to be located or retrieved as a
>       whole.  For example all of the events in a travel itinerary would
>       have the same REFID value.
>
> This seems to be more vague than necessary.  May I suggest an update?:
>
> NEW
>    Description:  The value of this property is free-form text that
>       creates an identifier for associated components.  All components
>       that use the same REFID value are associated through that value
>       and can be located or retrieved as a group.  For example, all of
>       the events in a travel itinerary would have the same REFID value,
>       so as to be grouped together.
> END
>
> Done.
>
>      refidparam      = *(
>
>                      ; the following is OPTIONAL
>                      ; and MAY occur more than once
>
>                      (";" xparam)
>
>                      )
>
> Changed to
>
> refidparam      = *(";" other-param)
>
> Same comment as with conceptparam.  And, again, where is xparam defined?
>
> other-param (and xparam) are defined in 5545. Do we require an explicit
> reference to that spec.
>
> — Section 8.1 —
>
>       definition here extends the definition in Section 3.8.4.5. of
>       [RFC5545]
>
> Also here: remove the dot at the end of the section number.
>
> done. I also added the following paragraph to the description:
>
> To preserve backwards compatibility the value type MUST be UID
> when the PARENT, SIBLING or CHILD relationships are specified.
>
> For the ABNF in this section I have the same comments as for the ABNF
> in Section 7.1.  In addition, this defines “relparam”, but “relparam”
> is already defined in Section 5.1.  That needs to be fixed.
>
> Changed the section 5.1 definition to be linkrelparam and changed its name
>
> For related:
>
> OLD
>
> related    = "RELATED-TO" relparam ( ":" text ) /
>              (
>                ";" "VALUE" "=" "UID"
>                ":" uid
>              )
>              (
>                ";" "VALUE" "=" "URI"
>                ":" uri
>              )
>              CRLF
>
> relparam   = *(
>             ;
>             ; The following are OPTIONAL,
>             ; but MUST NOT occur more than once.
>             ;
>             (";" reltypeparam) /
>             (";" gapparam) /
>             ;
>             ; The following is OPTIONAL,
>             ; and MAY occur more than once.
>             ;
>             (";" other-param)
>             ;
>             )
>
> NEW
>
> related    = "RELATED-TO" relparam ":"
>              ( uid /  ; for VALUE=UID
>                uri /  ; for VALUE=URI
>                text ) ; for VALUE=TEXT or default
>              CRLF
>
> relparam   = ; the elements herein may appear in any order,
>              ; and the order is not significant.
>              [";" "VALUE" "=" ("UID" /
>                                "URI" /
>                                "TEXT")]
>              [";" reltypeparam]
>              [";" gapparam]
>              *(";" other-param)
>
> END
>
>
>