Re: [Gen-art] [Tzdist-bis] Genart last call review of draft-murchison-tzdist-tzif-14

Eliot Lear <lear@cisco.com> Mon, 01 October 2018 07:40 UTC

Return-Path: <lear@cisco.com>
X-Original-To: gen-art@ietfa.amsl.com
Delivered-To: gen-art@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D836F130DD8; Mon, 1 Oct 2018 00:40:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.956
X-Spam-Level:
X-Spam-Status: No, score=-14.956 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.456, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.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 2dKi0M9gfOnO; Mon, 1 Oct 2018 00:40:47 -0700 (PDT)
Received: from aer-iport-2.cisco.com (aer-iport-2.cisco.com [173.38.203.52]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 991581271FF; Mon, 1 Oct 2018 00:40:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=16909; q=dns/txt; s=iport; t=1538379647; x=1539589247; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to; bh=GPyW7I0s5zzUdM64fuTy10YJCoJQF8bYX6VgmxOQj7A=; b=NM98j7aTqKqiEhdxpI0+ZxLnIcBaAIWYkDy8mJAifYL+ACVoJlm6fsiV RGY22CjflXlJsm1dNrllEt/U5uBNTbP2JqoOb23mjzz2jLLyE1ylk3hLq 6eKwB6b7dopteV9ymUjbJFxvBK3SjBjbuPaW1fO7pQRA2NmEKSA/RWCvH o=;
X-Files: signature.asc : 488
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AOAAAhzrFb/xbLJq1aGQEBAQEBAQEBAQEBAQcBAQEBAQGBU4JybRIog3SIdI0xLZZagXoIAxgLhANGAoQkNhYBAwEBAgEBAm0cDIU4AQEBAQIBAQEhSwsFCwkCFAQqAgInMAYBDAYCAQEQgw0BgXkID4dum02BLol6CgWCbYgsggCBEieCPS6DGwEBgTpHDIJVglcCiEsBAyoClC4JhAGBZl6DDIMPg04GF4FHIoQ5gmMmhiSMDIklgUkGK0GBFDMaCBsVO4JsixaFQD0wijWCTQEB
X-IronPort-AV: E=Sophos; i="5.54,327,1534809600"; d="asc'?scan'208"; a="6912531"
Received: from aer-iport-nat.cisco.com (HELO aer-core-3.cisco.com) ([173.38.203.22]) by aer-iport-2.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Oct 2018 07:40:43 +0000
Received: from [10.61.230.157] ([10.61.230.157]) by aer-core-3.cisco.com (8.15.2/8.15.2) with ESMTP id w917egQ5001268; Mon, 1 Oct 2018 07:40:42 GMT
To: Dale Worley <worley@ariadne.com>, gen-art@ietf.org
Cc: draft-murchison-tzdist-tzif.all@ietf.org, ietf@ietf.org
References: <153836174465.13418.13652697245235348230@ietfa.amsl.com>
From: Eliot Lear <lear@cisco.com>
Openpgp: preference=signencrypt
Autocrypt: addr=lear@cisco.com; prefer-encrypt=mutual; keydata= xsBNBFMe1UQBCADdYOS5APDpIpF2ohAxB+nxg1GpAYr8iKwGIb86Wp9NkK5+QwbW9H035clT lpVLciExtN8E3MCTPOIm7aITPlruixAVwlBY3g7U9eRppSw9O2H/7bie2GOnYxqmsw4v1yNZ 9NcMLlD8raY0UcQ5r698c8JD4xUTLqybZXaK2sPeJkxzT+IwupRSQ+vXEvFFGhERQ88zo5Ca Sa1Gw/Rv54oH0Dq2XYkO41rhxQ60BKZLZuQK1d9+1y3I+An3AJeD3AA31fJZD3H8YRKOBgqe ILPILbw1mM7gCtCjfvFCt6AFCwEsjITGx55ceoQ+t5B5XGYJEppMWsIFrwZsfbL+gP31ABEB AAHNJUVsaW90IExlYXIgPGxlYXJAb2Zjb3Vyc2VpbXJpZ2h0LmNvbT7CwJEEEwECADsCGwMC HgECF4ACGQEWIQSY0L2QRh2wkqeyYR2HtmtG2dJ6MwUCWxJwMwULCQgHAgYVCAkKCwIEFgID AQAKCRCHtmtG2dJ6MyMyCACXvtFjAYGMtOkD9MD4nI3ifFpkrj8xTMbXjrv5hdqmzRmQ0wqA 1U/OlZux+P/NaVMiZNZc8zw0nsx/INAqDOVd4/tLWF+ywTkeRFR0VnaUxLwCReZAZOaRS+md +52u/6ddoFja2RnjZ43qbbuvVUARQVIyMJz+GbR6mEZQHR0psD7dDYZDyrpivCxm8zHQwmB6 AZUlO7OJgljDvVPVDCabg/ZnJw1qS0OzSiNb0MySk1D5A7FdwDgeKxuMYUOOoVVTTMWNWcME UkRX9LxElswEt0PQWiz/j3FYXTxiFfl/1vKcHx4pM+E5C5mhTbrdFUFLJC3Y5fLID7stK/Ch aEaBzsBNBFMe1UQBCAC0WV7Ydbv95xYGPhthTdChBIpPtl7JPCV/c6/3iEmvjpfGuFNaK4Ma cj9le20EA5A1BH7PgLGoHOiPM65NysRpZ96RRVX3TNfLmhGMFr5hPOGNdq+xcGHVutmwPV9U 7bKeUNRiPFx3YdEkExddqV2E8FltT0x2FSKe2xszPPHB6gVtMckX5buI9p1K3fbVhXdvEkcY Y/jB0JEJGyhS5aEbct5cHUvDAkT81/YFK5Jfg8RRwu1q1t1YuIJSOWAZQ9J9oUsg6D9RpClU +tIFBoe3iTp1AUfJcypucGKgLYKtpu/aygcpQONHYkYW5003mPsrajFhReVF5veycMbHs4u5 ABEBAAHCwF8EGAECAAkFAlMe1UQCGwwACgkQh7ZrRtnSejOSuQgA27p2rYB7Kh20dym6V8c6 2pWpBHHTgxr/32zevxHSiXl6xvUCg5T8WUwfUk8OvgDcBErK/blDAMXQzSg3sp450JhR8RnX HXF5Zz2T04X7HnlIVJGwf2CjnwyEAJCqMzaCmI+g3Imvg/8L4nyBFvhlFHDv+kIvMiujyycj PAu7xxKplBs1/IEwmDoAMjneFmawvfeQnwdMhSKK8PjKSuzGU5uUmxj3GBfRqvTM0qpmhMPF OmDhJSmH55HLAky2MlmqJYXJPt/9EfSEhFiua1M6gLiuNEuPkp+8jcnHQqKr0IeHt8UqcwLt 2mGfIyl0FVdF9hvWPjNRzGbgqoT1Di03RQ==
Message-ID: <0f857a7e-d080-bc1b-05a1-bf3056a1c819@cisco.com>
Date: Mon, 01 Oct 2018 09:40:41 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.9.1
MIME-Version: 1.0
In-Reply-To: <153836174465.13418.13652697245235348230@ietfa.amsl.com>
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="9OshP1u5mOGpM1X9eaQa35jG97VeGOtXO"
X-Outbound-SMTP-Client: 10.61.230.157, [10.61.230.157]
X-Outbound-Node: aer-core-3.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/gen-art/awFKbTfdm8T91ViHY-Rizu-ufsc>
Subject: Re: [Gen-art] [Tzdist-bis] Genart last call review of draft-murchison-tzdist-tzif-14
X-BeenThere: gen-art@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "GEN-ART: General Area Review Team" <gen-art.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/gen-art>, <mailto:gen-art-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/gen-art/>
List-Post: <mailto:gen-art@ietf.org>
List-Help: <mailto:gen-art-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/gen-art>, <mailto:gen-art-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 01 Oct 2018 07:40:51 -0000

Hi Dale,

Thanks for the review.  I know Paul has some comments, but here are mine.


On 01.10.18 04:42, Dale Worley wrote:
> Reviewer: Dale Worley
> Review result: Ready with Issues
>
> I am the assigned Gen-ART reviewer for this draft. The General Area
> Review Team (Gen-ART) reviews all IETF documents being processed
> by the IESG for the IETF Chair.  Please treat these comments just
> like any other last call comments.
>
> For more information, please see the FAQ at
>
> <https://trac.ietf.org/trac/gen/wiki/GenArtfaq>.
>
> Document:  draft-murchison-tzdist-tzif-14
> Reviewer:  Dale R. Worley
> Review Date:  2018-09-30
> IETF LC End Date:  2018-10-09
> IESG Telechat date:  unknown
>
> Summary:
>        This draft is on the right track but has open issues, described
>        in the review.
>
> Major issues:
>
> 1. The draft does not specify the versioning and compatibility
> principles governing TZif files and their processors.  Certain
> passages suggest that processors are expected to *not* examine the
> version number in a file, but instead, extensions to the file format
> are made by adding further data blocks to the end of the file, and
> later-version processors handle earlier-version files by noticing that
> latter data blocks are missing.  This approach implies that processors
> based on earlier versions to not notice that there appears to be
> trailing garbage in the file.  But silent acceptance of trailing
> garbage is not specified, and this strategy is different from most
> IETF standards.

These files are self-contained, and may contain multiple versions of the
same information for compatibility purposes.  This is discussed in
Section 4 of the document.  I think it would be good to address your
last sentence by adding a new second bullet point to that section, as
follows:

>  o  Implementations that only understand Version 1 MUST ignore any
> data that extends beyond the calculated end of the version 1 data block.

I think it also makes sense to modify the following as well.

OLD:
>    o  Implementations SHOULD calculate the total lengths of the 32- and
>       64-bit headers and data blocks and compare them against the actual
>       file size, as part of a validity check for the file.

> NEW:
>    o  Implementations more recent than version 1 SHOULD calculate the
> total lengths of the 32- and
>                                    ^^^^^^^^^^^^^^^^^^^^^^^     
>       64-bit headers and data blocks and compare them against the actual
>       file size, as part of a validity check for the file.
>

If there is text that suggests that version information not be
considered, could you please call that out?

And it's worth noting that a vast amount of code out there operates in
just this fashion today.


>
> 2. The semantics of the various data items -- what they mean and how
> they are to be used in processing -- is only hinted at.  I suspect
> that the draft is targeted at members of the community who already
> thoroughly understand the semantics of the data items (based on their
> names), but this is not stated, nor is any reference given to where
> one might learn this information.  OTOH, the glossary (in section 2)
> gives definitions of several terms that suggest the document is
> attempting to define the semantics, but the definitions given are
> nowhere near sufficient to specify those semantics.

This isn't really actionable.  Also, Section 2 is not in itself meant to
provide comprehensive definition of all elements.  Much of that is done
in Section 3 for each data element.  Thus I propose no change here.

>
> 3. Apparently (see comments on section 4), characters outside the
> ASCII set are allowed in time zone designations.  If so, their
> encoding needs to be specified.

This element is a reference to a POSIX string and must be handled in
accordance with POSIX rules.  This is already referenced.

I'll leave it to Ken and Paul to address nits.

Eliot
>
> Minor issues:
>
> Nits/editorial comments: 
>
>
> 1.  Introduction
>
>    This specification does not define the source of leap second
>    information, nor does it define the source the time zone data,
>    metadata, identifiers, aliases, localized names, or versions as
>    defined in Section 3 of [RFC7808].  One such source is the IANA-
>    hosted time zone database [RFC6557].
>
> The sequence "nor does it define the source the time zone data" is
> gramatically incorrect.  I would suggest it should be "... the source
> of ...", but making that change leaves the semantically heterogenous
> list "the time zone data, metadata, identifiers, aliases, localized
> names, or versions".  Also, it's not clear how "as defined in Section
> 3 of [RFC7808]" attaches to the sentence, since the closest item in
> the list, "versions", is defined in section 3 and not RFC 7808.  I
> suspect that some part of the wording was accidentally deleted.
>
> 2.  Conventions Used in This Document
>
>    Daylight Saving Time (DST):  The time according to a location's law
>       or practice, adjusted as necessary from standard time.  The
>       adjustment may be positive, negative, or zero.
>
> This seems to read that "Daylight Saving Time" is not "standard time"
> plus the summer time offset, but standard time, adjusted by whatever
> summer time offset might be in effect at the moment.  But that is not
> not the definition of DST, at least, not as commonly used in the US.
> What exactly is meant here?  I would prefer a much more careful
> explanation of how the various terms are used.
>
>       2.  a change in whether standard or daylight saving time is in use
>
> Is this intended to include the regular transition between summer time
> and winter time, or only when a locality starts or stops the practice
> of using summer time each year or the schedule of transitions?
>
>    UNIX Leap Time:  [...]
>       Similarly, if
>       the second leap second record occurs at 1972-12-31 23:59:60 UTC,
>       its UNIX leap time would be 94694401; the second occurrence
>       accounts for the first leap second.
>
> I think this would be clearer as:
>
>       Similarly, if the second leap second record occurs at 1972-12-31
>       23:59:60 UTC, the UNIX leap time of 1972-12-31 23:59:60 UTC
>       would be 94694401 and the UNIX leap time of 1973-01-01 00:00:00
>       UTC would be 94694402.
>
> --
>
>       If a TZif file specifies no
>       leap second records, UNIX leap time is equivalent to UNIX time.
>
> I think s/equivalent to/equal to/ reads better here.
>
>    Wall Time:  The time as shown on a clock set according to a
>       location's law or practice.
>
> In what way does this differ from "Local Time"?
>
> After reading further in the document, I suspect that the structure
> you are intending is:  There is a "standard time" which is derived
> from UTC, and a "daylight savings time" which is derived from UTC,
> *both of which run all the time*.  From those two, a "wall time" is
> derived by specifying points where "wall time" switches between
> "standard time" and "daylight savings time".
>
> 3.  The Time Zone Information Format (TZif)
>
> The description here seems to be out of order.  Also, the description
> of the data blocks could be clearer; it seems to me that "containing"
> makes more sense in this context than "using".  A better ordering is:
>
>    The time zone information format begins with a fixed 44-octet
>    header (Section 3.1).  The TZif header contains a field which
>    specifies the version of the file's format.
> 		 
>    The header is followed by a variable-length data block (Section 3.2)
>    containing four-octet (32-bit) transition times and leap second
>    occurrences.  These 32-bit values are limited to representing times
>    from 1901-12-13 20:45:52 through 2038-01-19 03:14:07 UT.
>
>    Version 1 files terminate after the 32-bit data block.
>    Version 2 and 3 files extend the format by appending a second
>    44-octet header, another variable-length data block containing eight-octet
>    (64-bit) transition times and leap second occurrences, and a variable
>    length footer (Section 3.3).  These 64-bit values can represent times
>    approximately 292 billion years into the past or future.
>
>    [Move "NOTE" to here.]
>
> Figure "General Format of TZif Files"
>
> I think the figure should use s/Transitions/Values/, since not all
> of the values are transition times.
>
> 3.1.  TZif Header
>
>        +---------------+---+
>        |  magic    (4) |ver|
>        +---------------+---+
>
> s/ver/ver(1)/
>
>       '2' (0x32)  Version 2 - The file MUST contain the 32-bit header
>          and data block, a 64-bit header and data block, and a footer.
>
> The phrases "32-bit header" and "64-bit header" don't work, as the
> headers have the same format.  They could be called "header for 32-bit
> data", etc., but that's a bit awkward.  Alternatively, names for all
> of the data sections could be defined in section 2.
>
>    typecnt:  A four-octet unsigned integer specifying the number of
>       local time type records contained in the data block - MUST NOT be
>       zero.  (Although time type 0 is not used in files that have
>       nonempty TZ strings but no transitions, it is nevertheless
>       required because many TZif readers reject files that lack time
>       types.)
>
> This is hard to understand.  I *think* "time type 0" means "time type
> record 0", or "the time type defined by by time type record 0", and
> the parenthesized sentence means "In files that have nonempty TZ
> strings but no transitions, the time type records are not used;
> nonetheless, in this case there must be one record, time type 0 (which
> will be ignored) because many TZif readers reject files that lack time
> type records."  Here, you are fighting against the very common usage
> where a "record" of some sort has a "type" field which contains a
> small integer, so you have to be very clear that the "0" *indexes* the
> time type record, rather than being the value of a "type" field value
> in the time type record.
>
> 3.2.  TZif Data Block
>
>    The TZif data block consists of seven variable-length elements,
>    [...]
>
> I think you want to say "A TZif data block", since there can be two of
> them in a TZif file.
>
>    In the initial data block, time values are 32-bit (TIME_SIZE = 4
>    octets).
>
> I think it would read better to say "first data block", to parallel
> "second data block" and also to clarify you are not referring to the
> header.
>
>       +---------------+-+-+---+
>       |  utoff (4)    |dst|idx|
>       +---------------+---+---+
>
> There is an extra "+" in the first line, and the field lengths should
> be specified:
>
>       +---------------+------+------+
>       |  utoff (4)    |dst(1)|idx(1)|
>       +---------------+------+------+
>
> --
>
>       (is)dst:  A one-octet value indicating whether local time should
>          be considered Daylight Savings Time (DST).  The value MUST be 0
>          or 1.  A value of one (1) indicates that DST is in effect.  A
>          value of zero (0) indicates that standard time in effect.
>
> It seems to me to be better to phrase the last two sentences as "A
> value of one (1) indicates that this time type is DST.  A value of
> zero (0) indicates that this time type is standard time."  But that is
> assuming that "time type" is not just describing a specific interval
> of time, but rather a *type* of intervals of time.
>
>       (desig)idx:  A one-octet unsigned integer specifying an index into
>          the series of time zone designation octets, thereby selecting a
>          particular designation string.  Each index MUST be in the range
>          [0, 'charcnt'), and MUST index a NUL-terminated (0x00) sequence
>          of octets.
>
> The last clause isn't very useful, as it is equivalent to "there must
> be a NUL at or after the idx position in time zone designations".  I
> suspect the real meaning is "Each index MUST be in the range [0,
> 'charcnt'), and is interpreted as designating the NUL-terminated
> ASCII-encoded string of characters starting at position idx in the
> time zone designations.  (This string MAY be empty.)  A NUL octet MUST
> exist in the time zone designations at or after position idx."
>
> However, Appendix A interoperability item 9 implies that characters
> outside the ASCII set are allowed.  If so, their encoding needs to be
> specified.
>
> 3.3.  TZif Footer
>
> The footer diagram should be:
>
>                       +-------+--------------------+-------+
>                       | NL(1) |  TZ string (0...)  | NL(1) |
>                       +-------+--------------------+-------+
>
> 4.  Interoperability Considerations
>
>    o  The sequence of time changes defined by the 32-bit header and data
>       block SHOULD be a contiguous subsequence of the time changes
>       defined by the 64-bit header and data block, and by the footer.
>       This guideline helps obsolescent version 1 readers agree with
>       current readers about timestamps within the contiguous
>       subsequence.  It also lets writers not catering to obsolescent
>       readers use a 'timecnt' of zero in the 32-bit data to save space.
>
> I think s/not catering to/not supporting/, and s/32-bit data/32-bit
> data block/.
>
>       *  "application/tzif-leap" (Section 8.2) to indicate that leap
>          second records are included in the TZif data.
>
> You probably need to spell out:  "For version 1 files, leap second
> records must be present in the 32-bit data block; for version 2 and 3
> files, leap second records must be present in the 64-bit data block."
>
> 10.3.  URIs
>
> This section is odd.  Item [1] is just the URL for BCP 14, but BCP 14
> is also listed in the references section.  Items [6] and [7] duplicate
> [8] and [9], but they're references and should be treated as such.
> Items [3], [4], and [5] are more interesting -- they're locations
> inside reference [POSIX].  The Editor should be able to suggest a
> better way of presenting these references.
>
> Appendix A.  Common Interoperability Issues
>
>    Most of these are problems in generating TZif files
>    for use by readers conforming to predecessors of this specification.
>
> It would be helpful to those dealing with compatibility issues to have
> references to the predecessors of this specification.
>
>
> _______________________________________________
> Tzdist-bis mailing list
> Tzdist-bis@ietf.org
> https://www.ietf.org/mailman/listinfo/tzdist-bis
>