Re: A structured format for dates?

David Benjamin <davidben@chromium.org> Fri, 26 August 2022 17:23 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5B7C7C1522AE for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 26 Aug 2022 10:23:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.629
X-Spam-Level:
X-Spam-Status: No, score=-5.629 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.571, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=chromium.org
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FmpQnfAmeLuG for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Fri, 26 Aug 2022 10:23:22 -0700 (PDT)
Received: from lyra.w3.org (lyra.w3.org [128.30.52.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A4E0BC1524A2 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Fri, 26 Aug 2022 10:23:21 -0700 (PDT)
Received: from lists by lyra.w3.org with local (Exim 4.94.2) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1oRd0g-00177L-MW for ietf-http-wg-dist@listhub.w3.org; Fri, 26 Aug 2022 17:20:46 +0000
Resent-Date: Fri, 26 Aug 2022 17:20:46 +0000
Resent-Message-Id: <E1oRd0g-00177L-MW@lyra.w3.org>
Received: from titan.w3.org ([128.30.52.76]) by lyra.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <davidben@google.com>) id 1oRd0f-00176O-7O for ietf-http-wg@listhub.w3.org; Fri, 26 Aug 2022 17:20:45 +0000
Received: from mail-qk1-x732.google.com ([2607:f8b0:4864:20::732]) by titan.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from <davidben@google.com>) id 1oRd0d-005MLt-J4 for ietf-http-wg@w3.org; Fri, 26 Aug 2022 17:20:44 +0000
Received: by mail-qk1-x732.google.com with SMTP id i7so1600032qka.13 for <ietf-http-wg@w3.org>; Fri, 26 Aug 2022 10:20:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc; bh=QWugroradviGsQwQQdHVlnnk60aTPindmbAWO14yGZI=; b=WIinKc+WmoEloEOEoX7iJzlR7ziqjEtVO2iqa/XV61aub867uafT37d+WNU/uN+5sB an2onOOYzdGeZALTthSgsodA07JlR+e/ncdWtpfFalRmYypkZvFPy1BDZNcYlmoz/hzh rkQKfJhviJlQ8x+xjErkou28yS4pzt2rsZDho=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc; bh=QWugroradviGsQwQQdHVlnnk60aTPindmbAWO14yGZI=; b=yPd5qgG762iajsErYdYDqCtNRISv+sCj3CLYcHXWwURohBqy2A1esIYnnXWHISwuqC EZAXb+spBUPT29NsYdFGdX8C4EO5QKGc5MF3zCYP91ptvrGh3EWVlpRooqhZisADxYmr k4QE4uyIniACgzm9SKZJn8CEnfSDoX7/qrsma4AkgmKlBhPC0cnlP/DDW73TL95mDVkH v+cu65UambaHeiOU2odRxVJrJYP4jIVjYzn486Zuj1m5oivYOyJV7QR/dzs9RkM10Zs/ uK9UYdJHoLsml2gugDSltu1UejtfTt1rq5rX4CAqEw3VxLzSy1ozQnQtz5PFZGHlYyfH NqaA==
X-Gm-Message-State: ACgBeo3tsfl92bH5gviquEyctSl19DFMkvZ6yxVg32igzZMwV3quOlhq MNQdRwxO8cZ1i4s/xC/gDktMZH38nma4S/whiQPx
X-Google-Smtp-Source: AA6agR6FQ3iGi3DtN8Fiks7o8OChFfC3POaJ1ErGjnpLsTdIC56MIHiIxATWax37RWz+IyNNKvC18+xpwL/zKpdtbEc=
X-Received: by 2002:a05:620a:15a2:b0:6bb:2861:51b with SMTP id f2-20020a05620a15a200b006bb2861051bmr563077qkk.478.1661534432644; Fri, 26 Aug 2022 10:20:32 -0700 (PDT)
MIME-Version: 1.0
References: <685890F9-9F68-41EF-AC8C-86ACAD074A38@mnot.net> <A6AA39E9-1E28-419E-8FB3-40824DEEE1B3@apple.com> <414E0BC3-64DF-45B2-AED8-F54B7BF438BF@mnot.net>
In-Reply-To: <414E0BC3-64DF-45B2-AED8-F54B7BF438BF@mnot.net>
From: David Benjamin <davidben@chromium.org>
Date: Fri, 26 Aug 2022 13:20:16 -0400
Message-ID: <CAF8qwaATQ8qU6inykGPMaGMgheVY8sO=1--TFVQxsrnw5QJ6ow@mail.gmail.com>
To: Mark Nottingham <mnot@mnot.net>
Cc: Tommy Pauly <tpauly@apple.com>, Poul-Henning Kamp <phk@phk.freebsd.dk>, Roberto Polli <robipolli@gmail.com>, HTTP Working Group <ietf-http-wg@w3.org>
Content-Type: multipart/alternative; boundary="000000000000a45e3705e72821b4"
Received-SPF: pass client-ip=2607:f8b0:4864:20::732; envelope-from=davidben@google.com; helo=mail-qk1-x732.google.com
X-W3C-Hub-DKIM-Status: validation passed: (address=davidben@google.com domain=chromium.org), signature is good
X-W3C-Hub-Spam-Status: No, score=-11.3
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, USER_IN_DEF_SPF_WL=-7.5, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: titan.w3.org 1oRd0d-005MLt-J4 3ff687e8c34a6f5dfeebf2373321294b
X-Original-To: ietf-http-wg@w3.org
Subject: Re: A structured format for dates?
Archived-At: <https://www.w3.org/mid/CAF8qwaATQ8qU6inykGPMaGMgheVY8sO=1--TFVQxsrnw5QJ6ow@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/40358
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

On Thu, Aug 25, 2022 at 11:21 PM Mark Nottingham <mnot@mnot.net> wrote:

>
> > On 24 Aug 2022, at 1:32 pm, Tommy Pauly <tpauly@apple.com> wrote:
> >
> > - If we expect to have binary header values in a future version (HTTP/4,
> say),
>
> Aside - I think this can be negotiated as an extension, rather than
> requiring a full new version.
>
> > we’ll have the same intermediary scenarios we have today with converting
> between versions.
>
> Correct.
>
> > Certainly we could use the rules to correctly convert between the
> date-text version and the numeric version, but it would be more complexity
> than just moving an integer value over (and handling an @ or marking a
> flag), and buggy implementations may lead to values being closely
> translated but not perfectly translated.
>
> Absolutely -- and that's true for parsing existing dates and translating
> them into an integer as well.
>

Parsing existing dates isn't really a function of our format. Whatever
format we pick, the system will need to extract and store dates with its
existing format, be it something expanded or a simple integer
representation. That cost will be paid no matter what format we pick.

The question is what *additional* cost do we impose by our choices, to
convert from the in-memory representation to/from HTTP structured headers.
Converting to/from a date-text representation has a long history of
complexity and problems. (Just recently I had to review a whole new
implementation of calendar conversions because it turns out libc
implementations of timegm have patchy availability and poor performance.
And if you've never seen how browsers parse the HTTP Date header, you
should take a look sometime. It's truly spectacular.)

Converting a textual integer representation is much simpler by comparison.


> > - If the benefit we’re providing by using the date-text format is to
> make things more easily human readable, I’ll likely want to have the choice
> to view the date while debugging in whatever timezone I prefer and using
> whatever date presentation format I prefer. So, the tools will ideally be
> translating the value anyway.
>
> Possibly, although as Julian says, many will be looking at the 'raw' or
> 'default' text.
>
> Another factor that I've been keeping very much in mind is adoption --
> whether the format's readability in HTTP/1.1 will affect decisions as to
> whether to adopt the type (e.g., HTTPAPI). That's hard to predict in the
> long run, unfortunately.
>

That applies to all the arguments here. As you say, we have to pay for the
HTTP/1.1 format even if binary structured headers happen. Readability
affects decisions, but so does interoperability, size, and complexity. I
certainly will be disinclined to use this format in HTTP systems I help
design, if the format is likely to lead to interop mess, or needlessly
waste cycles.

David