Re: Call for Consensus: Moving HTTP/3, QPACK and Recovery to the Late-Stage Process

"Roy T. Fielding" <> Wed, 06 November 2019 18:39 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id CCC6112011C for <>; Wed, 6 Nov 2019 10:39:44 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=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 slgBwedTzFwv for <>; Wed, 6 Nov 2019 10:39:42 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 933491200F1 for <>; Wed, 6 Nov 2019 10:39:42 -0800 (PST)
X-Sender-Id: dreamhost|x-authsender|
Received: from (localhost []) by (Postfix) with ESMTP id ADD465E0EF2; Wed, 6 Nov 2019 18:39:41 +0000 (UTC)
Received: from (100-96-18-10.trex.outbound.svc.cluster.local []) (Authenticated sender: dreamhost) by (Postfix) with ESMTPA id 062E75E2349; Wed, 6 Nov 2019 18:39:41 +0000 (UTC)
X-Sender-Id: dreamhost|x-authsender|
Received: from ([TEMPUNAVAIL]. []) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384) by (trex/5.18.5); Wed, 06 Nov 2019 18:39:41 +0000
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|
X-MailChannels-Auth-Id: dreamhost
X-Reaction-Trail: 304e5e8b5da404ba_1573065581480_463340236
X-MC-Loop-Signature: 1573065581479:3720797441
X-MC-Ingress-Time: 1573065581479
Received: from (localhost []) by (Postfix) with ESMTP id A466FA1C3E; Wed, 6 Nov 2019 10:39:37 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed;; h=content-type :mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to;; bh=cXyL2vzb4EWKTcofSDzOmk55dJg=; b=kK2kpCVxKXDtflmu6IWCSNWHdeeg 9EDOrWSFD50z9kBhbWTXy/jhqfOQhmWP+ysKvhHOCh6JAG+jltm+boem1cX1Of1V 5LA9VCfRkMmlMr8VH2HoCCx4IotZVsQg/tT1lGtyrXfReudDNogz8vrbcsRPlbtx UgXhoLH/cpxbHAs=
Received: from [] ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: by (Postfix) with ESMTPSA id 3AA4EA1C61; Wed, 6 Nov 2019 10:39:35 -0800 (PST)
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
Subject: Re: Call for Consensus: Moving HTTP/3, QPACK and Recovery to the Late-Stage Process
X-DH-BACKEND: pdx1-sub0-mail-a34
From: "Roy T. Fielding" <>
In-Reply-To: <>
Date: Wed, 6 Nov 2019 10:39:35 -0800
Cc: IETF QUIC WG <>, Lars Eggert <>
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <>
To: Mark Nottingham <>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <>
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 06 Nov 2019 18:39:45 -0000

> On Nov 5, 2019, at 5:01 PM, Mark Nottingham <> wrote:
> Previously, we've moved to the 'late-stage process' documented at [1] for the Transport and TLS drafts. The chairs and editors now feel that it's time to move the Recovery, HTTP/3, and QPACK drafts to that process as well.
> As before, this is because we're getting to a stage we feel the documents would benefit from slower and slightly more formal process, so that the rate of change is not so high, changes that do occur are well-vetted, and the documents get closer to reflecting consensus in the working group.

I don't think that process has worked well for QUIC.

There are specific issues that are contentious enough to timebox
and conclude, in a formal (and faster) fashion than was done before.
That makes sense when needed for a specific issue. I don't know
of any such issues for those three drafts. IOW, I don't know of any
issues for which it makes sense for the Chairs to pre-empt the
specification authors in deciding what can or cannot result in
changes to the drafts just because of the timing of when the
issue was raised.

The late-stage process seems to focus all of our energy into
in/out-of-scope arguments rather than actual text in the specifications.
The last interim spent easily twice as much time discussing process
and process planning than it did HTTP/3. Prior interims were worse.
I don't even recall the last time contents of the HTTP/3 spec being
discussed on list, outside of very specific issues related to transport.

I would like to see HTTP/3 written with HTTP in mind, not as a set
of diffs against h2. I would like this working group to shift its focus
away from transport issues (now that they are largely resolved and
awaiting final edits) and into active discussion of HTTP/3. The only
example we have of that is the https discussion, which revealed a
necessary issue for http-core to resolve and is expected to iterate
back onto HTTP/3.

This is not a small undertaking, but it isn't a massive one either.
Basically, import the bits of h2 that are necessary to explain HTTP/3's
operation and intent, and then start referencing the http-core drafts
instead of 723x. Yes, I know that is risky, but it is the right thing to do.
And it needs to be done before http-core is finished, since that effort
exists largely to place the right content (in the right places) for
HTTP/3 to reference.

That's a far better use of our time than arguing about what stage
the HTTP/3 documents are in.

I would also like to see the details of interop testing reported on list,
to the extent that people are willing/able to report them in public
(i.e., nothing specific to vendors or products). In particular,
I'd like to know how much of HTTP practice has actually been
exercised by those tests. Is it still limited to HTTP/0.9 interop?
Have we looked at long sessions interleaved with short spatter?
What about API-driven, non-browser traffic?

I have no idea what the status is with QPACK, but we should
learn a lesson from the last time and make sure the fixed
compression dictionary (if any) is based on traffic at more than
one proxy or origin server. Or at least have each of the major
deployments generate their local "best" encoding and do some
cross-testing of the N choices (plus one or two based on a
hand-crafted expert merge).

I would like for HTTP/3 to have a mechanism for communicating
metadata (like trailers) in mid-stream, both for requests (e.g., priority)
and responses (e.g., chained sigs). That has been a design goal for HTTP
since 1995 or so. HTTP/1.1 had it, albeit limited to chunked extensions.
It has been proposed multiple times and keeps getting postponed
because of "concern about scope". This is not a semantics issue
(they are just optional trailers that arrive early) -- it is a multiplex
framing issue (a new frame type and expectation to process).

> If we do this, we're saying that we have gained consensus on what remains in these documents, excepting their outstanding issues. As per our charter:
> """
> Note that consensus is required both for changes to the current protocol mechanisms and retention of current mechanisms. In particular, because something is in the initial document set does not imply that there is consensus around the feature or around how it is specified.
> """

-1  I don't think the non-transport issues have been discussed to the
     point where most issues could be reasonably opened, so saying
     we have consensus on the initial document is premature.
     We have been waiting for a transport consensus.
     Let's get that consensus and spend more energy on HTTP/3.