[Gen-art] Gen-ART Telechat review of draft-alakuijala-brotli-09

Paul Kyzivat <pkyzivat@alum.mit.edu> Thu, 28 April 2016 15:37 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 E6C2B12D93F for <gen-art@ietfa.amsl.com>; Thu, 28 Apr 2016 08:37:26 -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 rsp10QHvlBHM for <gen-art@ietfa.amsl.com>; Thu, 28 Apr 2016 08:37:24 -0700 (PDT)
Received: from resqmta-ch2-08v.sys.comcast.net (resqmta-ch2-08v.sys.comcast.net [IPv6:2001:558:fe21:29:69:252:207:40]) (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 6FB7412D929 for <gen-art@ietf.org>; Thu, 28 Apr 2016 08:35:07 -0700 (PDT)
Received: from resomta-ch2-05v.sys.comcast.net ([69.252.207.101]) by comcast with SMTP id vny2aGPBwbFYYvny6a7iyZ; Thu, 28 Apr 2016 15:35:06 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcast.net; s=q20140121; t=1461857706; bh=bNDBcJQIZy9k1LIZyghojtEaNn+EA2EsG/6jOvdQx6w=; h=Received:Received:From:Subject:To:Message-ID:Date:MIME-Version: Content-Type; b=lrJeTvktmoGdlJdgxT1o2uF9lpGOYdJRMoJdQgOgimhC7DEqsHrocECWO6NGVJjOM KE9//07NZG6+y/RCc2VPkJdQXj0zQtU12PVldLJrKxy4N6PB83ic7/tP2aE8SIm/W7 /KIGavM1T9ZS44LJLjbR6zVlm2s6eQmrmalV4DllAVE0TtIwsHLN3FXjw613O0O4Vl PKjI2Ljfj3txkB5zvP8sgdj22PNLhCoRf4W81620PrgKgkMNI2z6PAYAeE7cO+jEue gYWmSrKMUBr+0FI3VPOxtWDB2SNgnRKK7AhqNiwcLL/i+FOBW9Ga5aJFK6A3Q7VIKy QhTNlaCL/Vb/w==
Received: from Paul-Kyzivats-MacBook-Pro.local ([73.218.51.154]) by resomta-ch2-05v.sys.comcast.net with comcast id nrb61s0023KdFy101rb67D; Thu, 28 Apr 2016 15:35:06 +0000
From: Paul Kyzivat <pkyzivat@alum.mit.edu>
To: draft-alakuijala-brotli.all@ietf.org
References: <56818AED.8090909@alum.mit.edu>
Message-ID: <e736bb6e-508a-979d-a8a2-87919a557610@alum.mit.edu>
Date: Thu, 28 Apr 2016 11:35:05 -0400
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Thunderbird/45.0
MIME-Version: 1.0
In-Reply-To: <56818AED.8090909@alum.mit.edu>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/gen-art/NOJYRFuOvtf5OikVaYYC3UPisT4>
Cc: General Area Review Team <gen-art@ietf.org>
Subject: [Gen-art] Gen-ART Telechat review of draft-alakuijala-brotli-09
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: Thu, 28 Apr 2016 15:37:27 -0000

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 wait for direction from your document
shepherd or AD before posting a new version of the draft. For more
information, please see the FAQ at <​ 
http://wiki.tools.ietf.org/area/gen/trac/wiki/GenArtfaq>.

Document: draft-alakuijala-brotli-09
Reviewer: Paul Kyzivat
Review Date: 2016-04-28
IETF LC End Date: 2016-04-08
IESG Telechat date: 2016-05-05

Summary:

This draft has serious issues, described in the review, and needs to be 
rethought.

(Note: I first wrote this against -08 for an earlier telechat date. But 
it was rescheduled and -09 was released, so I'm resending it. I reviewed 
the changes between -08 and -09, and they don't affect my review.)

Major: 2
Minor: 0
Nits:  0

==========

(1) Major:

It is unclear to me whether this document seeks to be an authoritative 
specification of the Brotli format, or simply an explanation of the 
format the supplements another specification.

Evidence that it intends to be normative:

- The introduction states: "The purpose of this specification is to 
define a lossless compressed data format..." and "This specification is 
intended for use by software implementers to compress data into and/or 
decompress data from the brotli format."

- I had some discussion with the author after my Last Call review. In 
that discussion I learned of three successful attempts to create new 
implementations of Brotli using earlier versions of this document, 
without reference to another implementation.

Evidence that it doesn't intend to be normative:

- The intended status is Informational.

- There is no 2119 or similar language in the document

- The document provides a URL on github for an open source 
implementation. (However this is not a normative reference. There is no 
Reference section in the document.)

If this document is intended to be normative, then it should be 
restructured as such, using 2119 language, with actual references to 
stable documents, and with more clarity.

If this document is intended to be informative, then it should be 
restructured to formally identify the normative specification of the 
format, and then concentrate on supplementing that document with further 
explanation.

(2) Major:

If this document intends to be normative, *I* don't think it is 
sufficient for the task. I said the same in my Last Call review. I 
subsequently learned from the author that others have successfully used 
to create implementations, so perhaps my judgement is too harsh, but I 
remain concerned. I was told that an implementer spent 20-40 hours 
understanding this document sufficiently to create a decoder. (Distinct 
from the time required to do the implementation.) Perhaps the format is 
inherently difficult and such level of effort to understand it is 
expected. That is more effort than I was prepared to exert for a Gen-ART 
review. But without doing that I can't suggest how to improve the 
description.

The following is from my Last Call review:

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.)