Re: draft-kamp-httpbis-structure-00 comments

"Poul-Henning Kamp" <> Tue, 11 October 2016 06:56 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id DA769129489 for <>; Mon, 10 Oct 2016 23:56:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -9.917
X-Spam-Status: No, score=-9.917 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-2.996, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 8rjxvGq26_Vj for <>; Mon, 10 Oct 2016 23:56:28 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id C74621293F2 for <>; Mon, 10 Oct 2016 23:56:28 -0700 (PDT)
Received: from lists by with local (Exim 4.80) (envelope-from <>) id 1btqvG-0007ih-Dz for; Tue, 11 Oct 2016 06:52:22 +0000
Resent-Date: Tue, 11 Oct 2016 06:52:22 +0000
Resent-Message-Id: <>
Received: from ([]) by with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <>) id 1btqvC-0007h8-KH for; Tue, 11 Oct 2016 06:52:18 +0000
Received: from ([]) by with esmtp (Exim 4.80) (envelope-from <>) id 1btqvA-0001K8-5q for; Tue, 11 Oct 2016 06:52:17 +0000
Received: from (unknown []) by (Postfix) with ESMTP id 9E5E4273DE; Tue, 11 Oct 2016 06:51:53 +0000 (UTC)
Received: from (localhost []) by (8.15.2/8.15.2) with ESMTP id u9B6ppmH077601; Tue, 11 Oct 2016 06:51:51 GMT (envelope-from
To: Martin Thomson <>
cc: HTTP Working Group <>
In-reply-to: <>
From: Poul-Henning Kamp <>
References: <>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-ID: <>
Content-Transfer-Encoding: quoted-printable
Date: Tue, 11 Oct 2016 06:51:51 +0000
Message-ID: <>
Received-SPF: none client-ip=;;
X-W3C-Hub-Spam-Status: No, score=-5.5
X-W3C-Hub-Spam-Report: AWL=-1.280, BAYES_00=-1.9, RP_MATCHES_RCVD=-0.336, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: 1btqvA-0001K8-5q 280887a61232313173c2154361a83f56
Subject: Re: draft-kamp-httpbis-structure-00 comments
Archived-At: <>
X-Mailing-List: <> archive/latest/32552
Precedence: list
List-Id: <>
List-Help: <>
List-Post: <>
List-Unsubscribe: <>

In message <>
, Martin Thomson writes:

>I've spent a bit of time thinking about this, and that there is
>probably something here, but I'm not sure what it is.

Reading through your comments, it is obvious that I have not been
able to articulate what I want this draft to do.

>1. Desired end-state
>Though it is not stated, there are many potential properties we might
>want to obtain by making this sort of change:
> - more consistent representation of header fields
> - easier to specify new, compatible header fields
> - more capable header fields (more resolution on dates, for instance)
> - more efficient parsing and processing code
> - smaller header field representations
> - (there are probably some other goals too)

Yes, that's a pretty good list.

But those are the "stretch goals", things which this draft tries to enable.

>Any draft also needs to describe when an implementation might use
>whatever tools the draft describes. 

My draft is not aimed at implementations but at RFC writers, such
as yourself, so that for instance your encryption draft does not
take us further away from the stretch goals.

>The draft should at least acknowledge incentive to deploy.  In order
>for it to be attractive to both clients and servers to support this,
>they need to see some tangible benefits.

With or without this draft, you can write a serializer and parser
for common structure, put it in your code, use it for 19 headers,
and nobody but you would know, because it is 100% compatible.

That's probably not worth it for anybody.

But if this draft goes forward, the WG essentially promises "This
is the last header field parser/serializer we ever ask you to write,
and you can already use it for these 19 headers".

That might be a good incentive.

>2. Getting from here to there
>Presumably the plan is to find some place that a new encoding can be
>used and use the encoding there.

No, the plan is for all future RFC's from this WG to stay inside
the lines drawn up by this draft (except of course when 'bis-ing
existing headers).

That gives us a limited universe of header syntax from which to
pursue the stretch goals.

>But the draft describes how to encode header fields in a new syntax
>that is distinctly different to existing header fields, and therefore
>definitively incompatible.

No, it describes how to define *new* header fields, so that they
will not be incompatible with the structure of existing header fields.

>That probably means you will need a way to learn on a
>per-header-field basis whether the common form is supported.
>[...] but NeckoFace:>n< probably isn't going to
>be something you can use from the outset.

Why not ?

To any code which hasn't heard about my draft and common structure 
">n<" is just a string to parse, just like any other string containing
a http header.

Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.