RE: New Version Notification for draft-kazuho-early-hints-status-code-00.txt

Mike Bishop <> Wed, 02 November 2016 18:21 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 1E3F9129B18 for <>; Wed, 2 Nov 2016 11:21:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -8.497
X-Spam-Status: No, score=-8.497 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-1.497, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id lnO0Rex117sr for <>; Wed, 2 Nov 2016 11:21:10 -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 5D9EA129B17 for <>; Wed, 2 Nov 2016 11:21:10 -0700 (PDT)
Received: from lists by with local (Exim 4.80) (envelope-from <>) id 1c206B-0005Mu-Hp for; Wed, 02 Nov 2016 18:17:19 +0000
Resent-Date: Wed, 02 Nov 2016 18:17:19 +0000
Resent-Message-Id: <>
Received: from ([]) by with esmtps (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <>) id 1c2063-0005JB-PB for; Wed, 02 Nov 2016 18:17:11 +0000
Received: from ([] by with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from <>) id 1c205w-0001Q6-Vd for; Wed, 02 Nov 2016 18:17:06 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=XyNqopxrMp+WFhWVFh2LY9oT+rUfsgwvFcqCFu+yiW8=; b=OEMS+3SAgjP0FuAFxKsEsH6928kzGoICmAQRdDpDlFfc1fyortmjddg9/79RS0UxQQK8Z2bLP5aX+TUASoNY3agEVrF2y9jNs/1wwTRLUhuitnRKG8KkL0yIzUSv0y454MtHYBVooIC+DjNUHIJV97nRrNcMUhdiyGpAIOK/MEE=
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.693.12; Wed, 2 Nov 2016 18:16:34 +0000
Received: from ([]) by ([]) with mapi id 15.01.0693.009; Wed, 2 Nov 2016 18:16:34 +0000
From: Mike Bishop <>
To: Patrick McManus <>, Cory Benfield <>
CC: "Roy T. Fielding" <>, Julian Reschke <>, Kazuho Oku <>, HTTP Working Group <>
Thread-Topic: New Version Notification for draft-kazuho-early-hints-status-code-00.txt
Thread-Index: AQHSNRznd3IOEamjg0SNvxx1e+NGBqDF/i+g
Date: Wed, 2 Nov 2016 18:16:34 +0000
Message-ID: <>
References: <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
authentication-results: spf=none (sender IP is );
x-originating-ip: [2001:4898:80e8:8::390]
x-ms-office365-filtering-correlation-id: fad4f413-c56e-491a-10b8-08d4034c6134
x-microsoft-exchange-diagnostics: 1; BN6PR03MB2708; 7:8xEw+PzTJsmu34Ud3xtSThp5yfVyBZQ3LSLrKpNhIIzARyI14aYZW7Tp9rir/0tq6C78dTCfIwjOHcKaHF+6jrRwAPcFgwUIKuTjgEYQ+VXN2ikMmYmlx7MhVeJ7YcU/kRXPibzmOqxNP0gr8zOEIllKlgBP/x5siG+M0eCj75Vf4bUynv6L/lJpCJSWSaLGBavELGto9eFHwqJg1ak8hzs4KQrc2ywAlj2JYExb4ZHqdTnkW6QVUohPMj/Iv5PG2JiM6GK70Vq0sd6NkLOOQc6VMXMb7d6ddEeqYH3Lh1QYiE3hQPQ2gbcUE4IcU8yH+2keS0g+NsusC/BxgJJwmyGha+LZPy4M6qYxRfWq5+KC/gcybyseIjrboTkuxPmD
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN6PR03MB2708;
x-microsoft-antispam-prvs: <>
x-exchange-antispam-report-test: UriScan:(158342451672863)(26323138287068)(100405760836317)(21748063052155);
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(61425038)(6040176)(6045074)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(61426038)(61427038)(6046074)(6072074); SRVR:BN6PR03MB2708; BCL:0; PCL:0; RULEID:; SRVR:BN6PR03MB2708;
x-forefront-prvs: 0114FF88F6
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(7916002)(51914003)(189002)(377454003)(199003)(24454002)(7110500001)(81156014)(9686002)(76176999)(50986999)(54356999)(68736007)(19580405001)(101416001)(2950100002)(19609705001)(7696004)(19580395003)(2420400007)(2906002)(122556002)(93886004)(87936001)(4326007)(8666005)(7846002)(76576001)(5660300001)(74316002)(8676002)(81166006)(345774005)(10710500007)(15650500001)(7736002)(19625215002)(586003)(86612001)(10290500002)(8990500004)(11100500001)(3280700002)(8936002)(33656002)(2900100001)(99286002)(105586002)(106356001)(92566002)(3660700001)(230783001)(189998001)(5001770100001)(97736004)(5002640100001)(19300405004)(790700001)(6116002)(106116001)(5005710100001)(10400500002)(102836003)(15975445007)(10090500001)(86362001)(77096005)(16236675004)(7059030); DIR:OUT; SFP:1102; SCL:1; SRVR:BN6PR03MB2708;; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en;
received-spf: None ( does not designate permitted sender hosts)
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_BN6PR03MB2708F3F550D3E40958D9B55B87A00BN6PR03MB2708namp_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2016 18:16:34.7120 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR03MB2708
Received-SPF: pass client-ip=;;
X-W3C-Hub-Spam-Status: No, score=-4.0
X-W3C-Hub-Spam-Report: AWL=-2.451, BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, W3C_NW=0.5
X-W3C-Scan-Sig: 1c205w-0001Q6-Vd df0c18661b62f6827200dede97b6f112
Subject: RE: New Version Notification for draft-kazuho-early-hints-status-code-00.txt
Archived-At: <>
X-Mailing-List: <> archive/latest/32814
Precedence: list
List-Id: <>
List-Help: <>
List-Post: <>
List-Unsubscribe: <>

Patrick, thank you for helping to maintain balance here.  An aside:  My favorite anti-ossification UA-sniffing encounter is this one:  “Edge, could you please stop claiming to be that particular version of Chrome?  That version of Chrome had a bug and we sent different HTML to work around it, but you don’t have that bug and can handle the normal content.  So now I have to special-case your lie out of the special-case for Chrome.”

I’m personally a fan of “follow the spec and let broken code fall where it may.”  And professionally, I spend a lot of my day discussing how not to make the broken code freak out when we fix a bug.  So I understand the tension very well.  While I agree with Roy that probably the first thing that should have been implemented in any given library is “unknown NXX is treated as N00, make sure I have a processing path for N00,” N=1 is a rare case that could easily have been skipped in a pragmatic implementation.

I’m in favor of the same flow that currently happens for 100 – clients can indicate when they think it would be useful, servers MAY send unsolicited, but with a compat warning that likely will keep them from actually doing so without the hint.  And maybe we should note for a future HTTP/1.1 update that this should be made an explicit pattern for 1XX codes, since it’s become the de facto norm.

From: Patrick McManus []
Sent: Wednesday, November 2, 2016 8:17 AM
To: Cory Benfield <>
Cc: Roy T. Fielding <>om>; Julian Reschke <>de>; Kazuho Oku <>om>; HTTP Working Group <>
Subject: Re: New Version Notification for draft-kazuho-early-hints-status-code-00.txt

[co-chair hat on]

On Wed, Nov 2, 2016 at 5:59 AM, Cory Benfield <<>> wrote:

> On 1 Nov 2016, at 22:50, Roy T. Fielding <<>> wrote:

> No.  What I've learned is that every feature in every protocol is poorly
> implemented by some poor soul who thinks they deserve special consideration
> for their inability to interoperate with the future.  I have, in the past,
> consistently refused such considerations.

I don’t understand where you think anyone who wrote a broken implementation is asking for special consideration. The only HTTP implementation I fully wrote is a HTTP/2 implementation that can handle 1XX codes per the specification. I certainly don’t need the special consideration for libraries I maintain, because I’ll be shipping patches for them.

I am simply informing the IETF that the vast majority of widely deployed HTTP client libraries today will fail in the face of the 103 status code. Since I looked at Python I have gone back and looked at Ruby, Javascript, and Go, and the same remains true there.

This is a normal and potentially helpful tension. Cory has done some research involving running code that helps influence this discussion. The IETF values running code - thanks for the data and your implementations. Certainly interop is a valid consideration.
Roy is pushing back more or less with an ossification argument - we can't be afraid to use features that are well defined. That's also a valid consideration - thanks for the point Roy.
Balancing this is the soup of early draft rough consensus, right? (Please note that this isn't currently a WG draft - but its certainly on topic to discuss as long as it doesn't drown out our adopted work.)
I'm sure we can all keep it within the bounds of the normal professionalism this list typically exhibits.

What that means is that the user-agent field will not be used to flag non-compliant implementations, it will be used to flag *compliant* ones, as there are vastly more of the former than the latter. That means that Chrome, Safari, Firefox, Opera (maybe), curl, and wget will all get a pass, and everyone else will be “guilty until proven innocent”. That means that we are rolling out a feature that is expressly a "browsers-only” feature if we deploy it in this way.

I'd like to hear more opinions on this general topic - abstracted away from 103 if we can. UA and Server of course were aimed at the whitelist/blacklist idea but in reality, at least from my pov, lead to a pretty terribly ossified world - full of sniffing and masquerading and out of date lists. Explicit negotiations have, at least recently, developed a better track record.. and with h2's more efficient heading encoding seem to be a better practice (again from my pov).