Re: [tap] Rethinking the TAP version

Michael G Schwern <schwern@pobox.com> Fri, 20 February 2009 23:24 UTC

Return-Path: <schwern@pobox.com>
X-Original-To: tap@core3.amsl.com
Delivered-To: tap@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 1C1DD3A6B38 for <tap@core3.amsl.com>; Fri, 20 Feb 2009 15:24:10 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ke4iDdxOVX3z for <tap@core3.amsl.com>; Fri, 20 Feb 2009 15:24:09 -0800 (PST)
Received: from sasl.smtp.pobox.com (a-sasl-quonix.sasl.smtp.pobox.com [208.72.237.25]) by core3.amsl.com (Postfix) with ESMTP id 3A98A3A6AE9 for <tap@ietf.org>; Fri, 20 Feb 2009 15:24:07 -0800 (PST)
Received: from localhost.localdomain (unknown [127.0.0.1]) by b-sasl-quonix.sasl.smtp.pobox.com (Postfix) with ESMTP id 269402B936 for <tap@ietf.org>; Fri, 20 Feb 2009 18:24:22 -0500 (EST)
Received: from windhund.local (unknown [97.115.125.54]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by b-sasl-quonix.sasl.smtp.pobox.com (Postfix) with ESMTPSA id 6E8C82B935 for <tap@ietf.org>; Fri, 20 Feb 2009 18:24:21 -0500 (EST)
Message-ID: <499F3BA3.5010604@pobox.com>
Date: Fri, 20 Feb 2009 15:24:19 -0800
From: Michael G Schwern <schwern@pobox.com>
User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209)
MIME-Version: 1.0
To: tap@ietf.org
References: <499DF1D6.9020009@pobox.com> <20090220114947.GB16059@klangraum.plasmasturm.org>
In-Reply-To: <20090220114947.GB16059@klangraum.plasmasturm.org>
X-Enigmail-Version: 0.95.7
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-Pobox-Relay-ID: 9AB8047E-FFA5-11DD-A957-6F7C8D1D4FD0-02258300!a-sasl-quonix.pobox.com
Subject: Re: [tap] Rethinking the TAP version
X-BeenThere: tap@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Test Anything Protocol WG discussions <tap.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/tap>, <mailto:tap-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tap>
List-Post: <mailto:tap@ietf.org>
List-Help: <mailto:tap-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tap>, <mailto:tap-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 20 Feb 2009 23:24:10 -0000

Aristotle Pagaltzis wrote:
> * Michael G Schwern <schwern@pobox.com> [2009-02-20 01:00]:
>> I propose that the version number change to X.Y where X
>> indicates the compatibility series and Y indicates an
>> incremental, but still compatible, revision. Everything that
>> can read protocol 2.0 can read 2.1 and 2.13 and 2.99 but if a
>> 2.x parser sees 3.1 it knows it can't handle it and can act
>> appropriately. Similarly, a 2.x parser is not guaranteed to be
>> able to read 1.x.
> 
> It sounds good in theory, but doesn’t work out very well in
> practice. It’s only a win if you want to break backcompat often,
> which is not a smart idea. But if you revv that major version
> only once in every decade, you effectively create a new protocol
> each time, not a revision to the old one. Going from `TAP version
> 1.13` to `TAP version 2.0` is effectively indistinguishable from
> going to `TAP2 version 1`, and you don’t need any version check
> code to make consumers fail to parse future TAP versions.
>
> (That’s how we handled it in the Atom WG too. There’s no format
> version in Atom; if backwards-incompatible changes are ever
> necessary, the XML namespace will change, so old consumers will
> fail to process the document at all.)

I get what you're saying.  The problem is we have no namespace.  Technically,
because we ignore anything we can't parse, everything is a TAP document.
There's currently no way for a TAP parser to say "I can not parse this".

TAP parsers will ignore any line they don't recognize.  Upon failing to see a
TAP version they will assume it's TAP version 12.  At best, they'll see a
suite with no tests and fail.  At worst they'll only see the passing tests,
miss new-style failures, and pass what should have failed.

So we need some way to indicate a backwards incompatible change.


-- 
<Schwern> What we learned was if you get confused, grab someone and swing
          them around a few times
        -- Life's lessons from square dancing