- From: Greg Wilkins <gregw@intalio.com>
- Date: Sat, 30 Aug 2014 15:56:54 +1000
- To: HTTP Working Group <ietf-http-wg@w3.org>
- Cc: "Roy T. Fielding" <fielding@gbiv.com>
- Message-ID: <CAH_y2NGZFjznzWuHjEYAc=ftXQs9fD-5LCBtwo1DT7r6z5bFSw@mail.gmail.com>
Roy, there have been several contributors (including myself) who have come into the process late and looked at the framing layer and had a similar reaction to what you have expressed. For my own part, I strongly argued against the framing flags being a function of frame type and I expressed my belief that it is a mistake to conflate the semantics of HTTP with the framing layer. As each of these new views has come in, it has woken up some other voices with lingering levels of discontent towards the design and a new round of debating some design decisions results. Unfortunately none of the iterations of this pattern have been able to convince enough of the voices here to achieve consensus to change some fundamental design decisions that drive what has been described as the "uglyness" of the framing layer. I think the problem is that none of the new voices have been able to inspire an appetite for wholesale change and have instead resorted to try to "fix" the protocol by arguing for change bit by bit or byte by byte. So while there have been many minor improvements in the last few iterations of the draft, I do not think that some of the fundamental problems with the framing layer have been fixed and when new eyes look at tit they still have a WTF moment with some elements of it. Your own proposals represent both ends of the spectrum: Your proposal A is just a trim of the current framing layer to send the same semantics over 64 bytes rather than 72. I've got no objections to that, but note that making it look data aligned will not actually make it data aligned unless padding is not a function of frame type and we require all payloads to be padded to a word boundary, so I think more substantial change is necessary to achieve any more substantial than a saving of 1 byte per frame. So it is a bit by bit improvement, but doesn't "fix" the framing. Your proposal B is a significant change of semantic. I totally agree that defining concepts like END_STREAM independently to frame type is a really good idea, as this would facilitate carrying alternate semantics like websocket and maybe even waka? However, all previous attempts to achieve consensus that this is something that should be fixed has failed, I think mostly because the WG was wrongly chartered to primarily consider HTTP semantics. If it had been chartered to support multiple web semantics: HTTP, Websocket and potential future web semantics, then we might have ended up with a better framing layer that is not dependent on frame type or HTTP semantics. As much as I would like to see significant changes to the framing layer, I don't think it is worthwhile reopening that can of worms unless we firstly revisit the charter. If essentially all we have to transport is HTTP in it's current usage patterns, then the argument always devolves to that it doesn't matter if the framing layer is ugly, fragile, inextensible, special purpose etc. We have made the mistake of trying to generalise from a single example, so the non-HTTP parts of the protocol such as unused flags and frame types are highly unlikely to be usable for anything that does not pretend to be HTTP. cheers -- Greg Wilkins <gregw@intalio.com> http://eclipse.org/jetty HTTP, SPDY, Websocket server and client that scales http://www.webtide.com advice and support for jetty and cometd.
Received on Saturday, 30 August 2014 05:57:23 UTC