Re: [Gen-art] Gen-ART Last Call review of draft-alakuijala-brotli-08

Paul Kyzivat <pkyzivat@alum.mit.edu> Wed, 13 April 2016 20:17 UTC

Return-Path: <pkyzivat@alum.mit.edu>
X-Original-To: gen-art@ietfa.amsl.com
Delivered-To: gen-art@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 073DA12E3E5 for <gen-art@ietfa.amsl.com>; Wed, 13 Apr 2016 13:17:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.935
X-Spam-Level:
X-Spam-Status: No, score=-1.935 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_SOFTFAIL=0.665] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=comcast.net
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0QWC8dNQbTBL for <gen-art@ietfa.amsl.com>; Wed, 13 Apr 2016 13:17:17 -0700 (PDT)
Received: from resqmta-ch2-09v.sys.comcast.net (resqmta-ch2-09v.sys.comcast.net [IPv6:2001:558:fe21:29:69:252:207:41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 52F5012E222 for <gen-art@ietf.org>; Wed, 13 Apr 2016 13:17:17 -0700 (PDT)
Received: from resomta-ch2-04v.sys.comcast.net ([69.252.207.100]) by comcast with SMTP id qRDtagQrxO4QFqRDwaFve8; Wed, 13 Apr 2016 20:17:16 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcast.net; s=q20140121; t=1460578636; bh=TZxBJx14oMG4DgcwMGLmkGpeEBouqpVduN0MrGqBMnQ=; h=Received:Received:Subject:To:From:Message-ID:Date:MIME-Version: Content-Type; b=d0/kWDolCvX5vOhWlfiDF5ifytALs2/r2VuWkzjME3SGSMWCfHBzsb93sPjQEXU88 qn1ORfORXO67OIaYqy3e6rSyOuFLQ2C+kx/XAIEpbqa8j9hs6yMp1uRteBGfSFDOWQ CPzkXF0IZmVap6bATreedx7wNJbQNzgTNxtf2b0edNruEUytt6YDXwG2V99ScPRN8y B+6sqkv/EfbEmXZLSOZ0FB4vWjSLv9F72ZEHCIJWI/FZpt0pRQbIKjJa0pOR1YbXEx PJ3wbu9BMoWIOvCR0QuSs2X709a9YGQd8QG/jVnl+hf3GcO8DxzaijDznV4U0k52uP iAhDOez5pG8ng==
Received: from Paul-Kyzivats-MacBook-Pro.local ([73.218.51.154]) by resomta-ch2-04v.sys.comcast.net with comcast id hwHF1s0013KdFy101wHFG4; Wed, 13 Apr 2016 20:17:16 +0000
To: Zoltan Szabadka <szabadka@google.com>
References: <56818AED.8090909@alum.mit.edu> <56FEC5D3.5080504@alum.mit.edu> <CAErD28_LcK0gVtwWqB-pw+fHbA6abKs-qkiwxhfHzinAk0PUPw@mail.gmail.com>
From: Paul Kyzivat <pkyzivat@alum.mit.edu>
Message-ID: <570EA94A.6030704@alum.mit.edu>
Date: Wed, 13 Apr 2016 16:17:14 -0400
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.7.1
MIME-Version: 1.0
In-Reply-To: <CAErD28_LcK0gVtwWqB-pw+fHbA6abKs-qkiwxhfHzinAk0PUPw@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/gen-art/yBCSRYw4Y9S3k5uD6Y8R0ayjOu4>
Cc: aamelnikov@fastmail.fm, General Area Review Team <gen-art@ietf.org>, n.brownlee@auckland.ac.nz, Nevil Brownlee <rfc-ise@rfc-editor.org>, barryleiba@computer.org, draft-alakuijala-brotli.all@ietf.org
Subject: Re: [Gen-art] Gen-ART Last Call review of draft-alakuijala-brotli-08
X-BeenThere: gen-art@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "GEN-ART: General Area Review Team" <gen-art.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/gen-art>, <mailto:gen-art-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/gen-art/>
List-Post: <mailto:gen-art@ietf.org>
List-Help: <mailto:gen-art-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/gen-art>, <mailto:gen-art-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 13 Apr 2016 20:17:19 -0000

Zoltan,

On 4/12/16 9:17 AM, Zoltan Szabadka wrote:
> Thank you for reviewing this internet draft.
>
> We do share your concern that it is very difficult to fully specify a
> compressed data format of this complexity using natural language text alone.
>
> To address this concern, the language and style of this internet draft
> follows that of RFC 1951, which specifies a compression format closely
> related to this one, to the extent that some common parts were taken
> over verbatim. Moreover, we worked with three independent software
> implementers, who agreed to use only the text of this draft to implement
> a brotli decoder and provide feedback on where the text was ambiguous or
> unclear.
>
> These independent implementations are the following:
>
>      1) C language implementation of Mark Adler:
> https://github.com/madler/brotli
>      2) Rust language implementation of Thomas Pickert:
> https://github.com/ende76/brotli-rs
>      3) Go language implementation of Joe Tsai:
> https://github.com/dsnet/compress/tree/brotli

I will grant that these serve as existence proofs that the spec "works", 
given sufficient effort.

I'm still concerned, but you can just consider me to be one data point 
out of four.

> The current -08 version of this internet draft addresses the findings of
> these reviews, and we believe that it is possible to decide based on
> this draft whether or not an arbitrary sequence of bytes is a valid
> brotli stream; and what is the uncompressed sequence of bytes that a
> valid brotli stream represents.
>
> As the next step, we plan to update the draft with a section about
> considerations for compressor implementations. In this, we will address:
>      1) Jean-Loup Gailly’s review comment about how it is possible, if
> desired, to make a sequence of blocks self-contained in a way that they
> can be decompressed independently of previous blocks.
>      2) The secdir review comments about CRIME and DoS attacks.
>
> We expect to be ready with the next version of the draft in one week.

One thing I realized later is that your draft is *informative*, not 
normative. Is that the intent? If so, what *is* normative?

If the *code* is normative, then there is no need to make the text 
unambiguous without the code. It might be better to simply rewrite the 
text as an explanation of the code.

OTOH, if this is intended to be normative, then it needs to be written 
with that in mind, using RFC2119 language, and with "Intended Status: 
Standards Track".

	Thanks,
	Paul

> Kind Regards,
> Zoltan
>
> On Fri, Apr 1, 2016 at 9:02 PM, Paul Kyzivat <pkyzivat@alum.mit.edu
> <mailto:pkyzivat@alum.mit.edu>> wrote:
>
>     I am the assigned Gen-ART reviewer for this draft. The General Area
>     Review Team (Gen-ART) reviews all IETF documents being processed by
>     the IESG for the IETF Chair. Please treat these comments just like
>     any other last call comments. For more information, please see the
>     FAQ at <http://wiki.tools.ietf.org/area/gen/trac/wiki/GenArtfaq>.
>
>     Document: draft-alakuijala-brotli-08
>     Reviewer: Paul Kyzivat
>     Review Date: 2016-02-23
>     IETF LC End Date: 2016-04-08
>     IESG Telechat date: 2016-04-21
>
>     Summary:
>
>     This draft has serious issues, described in the review, and needs to
>     be rethought.
>
>     Major: 1
>     Minor: 0
>     Nits:  0
>
>     ==========
>
>     (1) Major:
>
>     In my opinion this document does not satisfy the purpose given in
>     section 1.1 for the type of reader identified in section 1.2.
>
>     I spent many hours trying to decipher the document, but ultimately
>     failed. (I have no experience in implementing
>     compression/decompression algorithms, but I have many decades of
>     programming experience including that involving detailed bit
>     manipulation and data representation.)
>
>     If two expert programmers were asked to independently build
>     encoder/decoders in accord with this document, IMO it would be
>     incredibly unlikely (impossible) that the resulting programs would
>     be interoperable. And given the complexity of the encoding it would
>     also be extremely difficult to figure out *why* they didn't
>     interoperate.
>
>     My sense from reading this document is that the format is
>     operationally defined by an existing program
>     (https://github.com/google/brotli) and that this document is an
>     attempt to re-render the source code in English. However the
>     algorithms being described are so complex that English (at least
>     *this* English) is inadequate for the job.
>
>     I started out making notes about particular places where I found the
>     language confusing or ambiguous. But there were so many that I
>     ultimately gave up.
>
>     I have serious doubts that the goal of this document achievable
>     using natural language text. I don't have much of an idea of what to
>     try to achieve this. It will take much more than just patching the
>     current document. If possible at all it will require a vastly
>     different approach.
>
>     To achieve the goal of having a specification independent of a
>     particular implementation it may be necessary to abandon backward
>     compatibility with *this* implementation. (I recognize that doing so
>     may be unacceptable.)
>
>