Re: [hybi] Fwd: publication request: draft-ietf-hybi-permessage-compression-05

Takeshi Yoshino <tyoshino@google.com> Tue, 12 March 2013 12:26 UTC

Return-Path: <tyoshino@google.com>
X-Original-To: hybi@ietfa.amsl.com
Delivered-To: hybi@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CC59321F88F7 for <hybi@ietfa.amsl.com>; Tue, 12 Mar 2013 05:26:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.677
X-Spam-Level:
X-Spam-Status: No, score=-101.677 tagged_above=-999 required=5 tests=[AWL=0.300, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6cLeVZcCF5dD for <hybi@ietfa.amsl.com>; Tue, 12 Mar 2013 05:26:20 -0700 (PDT)
Received: from mail-we0-x234.google.com (mail-we0-x234.google.com [IPv6:2a00:1450:400c:c03::234]) by ietfa.amsl.com (Postfix) with ESMTP id 19BC121F889C for <hybi@ietf.org>; Tue, 12 Mar 2013 05:26:19 -0700 (PDT)
Received: by mail-we0-f180.google.com with SMTP id k14so4543524wer.39 for <hybi@ietf.org>; Tue, 12 Mar 2013 05:26:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:mime-version:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=hu+lkmCd01F+sTQjlav93oGYYSwljH0frLHlzP+Ld+g=; b=H24RyIiecbMVbgJCY00mm1BYd+pZJxXDCSPUFkMVlB7DxXITAdrA9UeHz+snzwr7A6 uoOCzvIuzQ5Ql6uxVx8HOsHjhShFf+VJMu1fiotJiN1BOeZmryhXIDna3Nu/32to9vbJ /DSKKba/DoED6Z/ED7pl0FxxKos2rhzd9LSbzZcRbG6PhtotHQ2RB4YRkGVnbBHNoe45 PgL4m7vXD8H5K8/cjtsXxJnaJJ2kEW+lFGVFsALt8BgERh/TbD6OzHLNA5HhAfuZSWgZ fjeG+JBjtndvCNYNMFmUH7T50MFYwFmvmzY2lRz9VoCg4/vrJmb+BHe/dLPxMQwUf5Us oJww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:mime-version:in-reply-to:references:from:date:message-id :subject:to:cc:content-type:x-gm-message-state; bh=hu+lkmCd01F+sTQjlav93oGYYSwljH0frLHlzP+Ld+g=; b=If1Zr149FEhclXDZbShmx6Ah041qNylJcAR5QNUPuRuPf8l484UD28LRM52V2lwava c8MMdIumHTAsolnQFPuVk+IC7OXTlwEI2CbmueMGv/J0B7pqtUkxPNSNCd5TiccvUDrB AjBAVVNbPtpCBXAKSuQVj2XISBUjTQKcUf7MSc2AcqXsaMwPWVxZUBUbZxuzTddb8+sW Y+PsVCet661ZC0XX5LCbM+wg7Hp9LQpDOnwxqQ8yYMeDEeZVvhTfjdXUkgywHoveCU4t hsoS+TFGngApT1lV2BvExk18D096p2DnCa8q16DPaqU6L3LLKdu5E6oYaW2Tpd6G5mO5 M2yg==
X-Received: by 10.180.90.2 with SMTP id bs2mr24686158wib.0.1363091177985; Tue, 12 Mar 2013 05:26:17 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.194.234.198 with HTTP; Tue, 12 Mar 2013 05:25:57 -0700 (PDT)
In-Reply-To: <CAC4RtVB33Fm9KpC6QPB_=LRvMRx_fR7vMNp5nFP3HqPTbfouqA@mail.gmail.com>
References: <5124943C.4080503@ericsson.com> <5124CF8E.2000406@ericsson.com> <CAC4RtVB33Fm9KpC6QPB_=LRvMRx_fR7vMNp5nFP3HqPTbfouqA@mail.gmail.com>
From: Takeshi Yoshino <tyoshino@google.com>
Date: Tue, 12 Mar 2013 21:25:57 +0900
Message-ID: <CAH9hSJYrms4NjATbBrqhkb48o5n1xtau0=kU90hR1Wmy28nA-Q@mail.gmail.com>
To: Barry Leiba <barryleiba@computer.org>
Content-Type: multipart/alternative; boundary="f46d043be19c75f1de04d7b96504"
X-Gm-Message-State: ALoCoQkk45vpSiA3OZegDUb7hXNJ6wJQqr/3ClE+r8aZ7Dah8oM7lZMOumxrH/SaRgdNoVgv7jS5WgbwMZ6MGVDz/V/qEoLBnQnDohdL8FmoQ4uvBGVCnoagu4MPgE+AW954bD7gproSx3hRWM1TrUTBxgkX+xHBpYR6eTharpTLr4THTLIl3R+iY6Gn841Jb3fBniWP+f9K
Cc: "hybi@ietf.org" <hybi@ietf.org>
Subject: Re: [hybi] Fwd: publication request: draft-ietf-hybi-permessage-compression-05
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 12 Mar 2013 12:26:21 -0000

Thanks for review.

On Fri, Feb 22, 2013 at 7:42 AM, Barry Leiba <barryleiba@computer.org>wrote:

>
>    [in various places...}
>    _This section is non-normative._
>
>    2. Conformance Requirements
>    Everything in this specification except for sections explicitly
>    marked non-normative is normative.
>
> I understand that all of this corresponds to the same text in the
> WebSockets document.  I can't tell you how much I dislike this style,
> and I ask (but not demand) that you please consider removing it.  I'm
> happy to discuss this.
>
>
Yes. Removed.


> I believe you need to be clear from the language you use (and I don't
> just mean MUST and SHOULD) when something is not normative.  Calling
> things "examples" already conveys this.  Section titles such as
> "Introduction" conveys this.  Most documents manage without this sort
> of thing.  Why does WebSockets (and its successor documents, such as
> this one) need it?
>
> -- Introduction --
>
>    The simplest "Sec-WebSocket-Extensions" header in the client's
>    opening handshake to request permessage-deflate is the following:
>
>        Sec-WebSocket-Extensions: permessage-deflate
>
>    The simplest header from the server to accept this extension is the
>    same.
>
> Why is this in the Introduction?  It seems seriously out of place there.
>
>
Moved it out.


> -- Section 3 --
>
> I find the organization of this to be awkward.  The first paragraph
> doesn't make much sense to me, for one thing.  I suggest two things to
> start with:
>
> 1. Change the overall document title:
>
> OLD
> WebSocket Per-message Compression
>
> NEW
> WebSocket Per-message Compression Extension Framework
>
> That better explains what the document is specifying (the abbreviated
> title can remain "WebSocket Per-message Compression"), and means that
> the last sentence of the first paragraph of Section 3 can be removed.
> For the rest of the paragraph, how about this (I'm also pulling up
> something from the paragraphs below)?:
>
> NEW
>    Per-Message Compression Extensions (PMCEs) are individually
>    defined, and are registered in the WebSocket Extension Name
>    Registry.  One such extension is defined in Section 5 of this
>    document and is registered in Section 7.1.  Other PMCEs may
>    be defined in other documents.  Each PMCE defines the content
>    of its extension token, including any applicable extension
>    parameters.
> END
>
> Note that you now have an abbreviation (PMCE) that you can use freely.
>
>
Thanks. Took the idea.


> Second paragraph:
>
>    To request use of a Per-message Compression Extension, a client MUST
>    include an element with its extension token in the
>    "Sec-WebSocket-Extensions" header in its opening handshake.
>
> You should avoid a lot of "it"s, unless the antecedent is quite clear.
>  Here, the antecedents are not clear.  It looks like "its extension
> token" means "the client's extension token," and it looks like "its
> opening handshake" means "the S-WS-E header's opening handshake," or
> perhaps "the token's opening handshake."
>

OK. I'll fix them.


>
> Also, is the client "requesting" use of one particular PMCE, or
> "offering" a list of PMCEs?  It seems to me that it's the latter:


The language in RFC 6455 was "request/accept" (
http://tools.ietf.org/html/rfc6455#section-9), so, I used it.


> the
> client offers a list, and the server selects zero or one from the list
> and sends it in the response.  Yes?
>

Yes. The server can decline the offer.

I don't stick to "request", but am not so sure how odd and why "request"
sounds so.


>
>    The
>    element contains extension parameters as specified by the
>    specification of the extension.
>
> This loops around in a circle, and is hard to make sense of.
>
>
Removed


>    A client MAY list multiple Per-
>    message Compression Extensions with the same name to offer use of the
>    same algorithm with different configurations.
>
> May a client also list multiple extensions with *different* names?
>

Yes. It may.


>
> How about this for the whole paragraph?:
>
> NEW
>    To offer use of a PMCE, a client MUST include an element with the
>    offered extension's token in the "Sec-WebSocket-Extensions" header
>    in the opening handshake of the WebSocket connection.  A client
>    offers multiple PMCE choices to the server by including multiple
>    tokens, one for each PMCE offered.  The set of tokens MAY include
>    multiple PMCEs with the same name to offer use of the same
>    algorithm with different configurations.
> END
>
>
Thanks. I took it with some modification.


> Please look for other "it" occurrences, and make sure they're similarly
> clear.
>
>
OK


> Similarly, for the third paragraph, maybe this?:
>
> NEW
>    To accept use of a PMCE, a server MUST include an element with the
>    accepted extension token in the "Sec-WebSocket-Extensions" header in
>    the opening handshake of the WebSocket connection.  The accepted
>    token MUST be one of those offered by the client during the opening
>    handshake, and MUST represent a PMCE that is fully supported by the
>    server.  The server rejects all offered PMCEs by not including any
>    PMCE tokens, in which case the connection proceeds without
>    per-message compression.
> END
>
>
Thanks. Made some rewrite and replaced.


> Fourth paragraph:
>
>    If a client doesn't support the extension and its parameters replied
>    from the server, the client MUST _Fail the WebSocket Connection_.
>    Otherwise, once _the WebSocket Connection is established_, both
>    endpoints MUST use the algorithm described in Section 4 to exchange
>    messages.
>
> Why would a server respond with an extension/parameters that the
> client doesn't support?  The client already sent a list of what it's
> willing to use.  In the re-writes I've done above, that's made clear,
>

Yes, great.


> and this paragraph is, if anything, just specifying how to handle a
> server response that's in violation of the protocol.  You also refer
> to the Section 4 algorithm, but say nothing about what compression
> mechanism will be used.  So maybe this?:
>
> NEW
>    * If the server responds with no PMCE tokens, once _the WebSocket
>    Connection is established_ it proceeds without per-message
>    compression.
>
>    * If the server gives an invalid response, such as accepting a
>    PMCE that the client did not offer, the client MUST _Fail the
>    WebSocket Connection_.
>
>    * Otherwise, once _the WebSocket Connection is established_, both
>    endpoints MUST use the algorithm described in Section 4 to exchange
>    messages, using the PMCE returned by the server.
> OLD
>
> By my reckoning, this has just re-written the entire Section 3.  This
> bothers me, because it makes me question the level of review and
> editing that the document has gone through.  As I look at Section 3.1,
> I see that it appears to be inadequate: it is *not* a "negotiation
> example"; it is a series of out-of-context examples of isolated header
> field values.  This actually *would* benefit from a full example of an
> opening handshake that uses this, where a client offers a few PMCEs
> (perhaps two with the same name and a third with another name), and
> showing how the server responds.
> ========================================
>

Sorry about the prematureness. I'm revising organization of the document
now.


> _______________________________________________
> hybi mailing list
> hybi@ietf.org
> https://www.ietf.org/mailman/listinfo/hybi
>