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 <pkyzi...@alum.mit.edu
<mailto:pkyzi...@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.)



_______________________________________________
Gen-art mailing list
Gen-art@ietf.org
https://www.ietf.org/mailman/listinfo/gen-art

Reply via email to