Re: [hybi] Versioning is a anti-pattern

Willy Tarreau <w@1wt.eu> Mon, 06 September 2010 05:59 UTC

Return-Path: <w@1wt.eu>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E149D3A685C for <hybi@core3.amsl.com>; Sun, 5 Sep 2010 22:59:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.793
X-Spam-Level:
X-Spam-Status: No, score=-1.793 tagged_above=-999 required=5 tests=[AWL=-1.539, BAYES_05=-1.11, HELO_IS_SMALL6=0.556, MIME_8BIT_HEADER=0.3]
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 hLviSpYbsBOR for <hybi@core3.amsl.com>; Sun, 5 Sep 2010 22:59:01 -0700 (PDT)
Received: from 1wt.eu (1wt.eu [62.212.114.60]) by core3.amsl.com (Postfix) with ESMTP id 908353A67B5 for <hybi@ietf.org>; Sun, 5 Sep 2010 22:59:00 -0700 (PDT)
Received: (from willy@localhost) by mail.home.local (8.14.4/8.14.4/Submit) id o865xO54032427; Mon, 6 Sep 2010 07:59:24 +0200
Date: Mon, 06 Sep 2010 07:59:24 +0200
From: Willy Tarreau <w@1wt.eu>
To: "Martin J. Dürst" <duerst@it.aoyama.ac.jp>
Message-ID: <20100906055924.GD31208@1wt.eu>
References: <20100901224502.0519B3A687C@core3.amsl.com> <AANLkTikP1CF22fL0rBniXmrxEoBAbTNfzP9kyiNA4nbb@mail.gmail.com> <AANLkTi=_1m36ThFZTH_aGE_Unz0KTeexJq_74UGr2j+u@mail.gmail.com> <alpine.DEB.2.00.1009022022090.7470@tvnag.unkk.fr> <AANLkTi=yQyvX_z3NhvNc4dFjfHwTH2edhYM2LukZDfsm@mail.gmail.com> <4C847F06.70903@it.aoyama.ac.jp>
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <4C847F06.70903@it.aoyama.ac.jp>
User-Agent: Mutt/1.4.2.3i
Cc: hybi <hybi@ietf.org>
Subject: Re: [hybi] Versioning is a anti-pattern
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/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: Mon, 06 Sep 2010 05:59:04 -0000

On Mon, Sep 06, 2010 at 02:41:26PM +0900, "Martin J. Dürst" wrote:
> Hello Adam,
> 
> On 2010/09/04 11:06, Adam Barth wrote:
> >On Thu, Sep 2, 2010 at 11:25 AM, Daniel Stenberg<daniel@haxx.se>  wrote:
> >>On Wed, 1 Sep 2010, Adam Barth wrote:
> >>>Please don't add versioning to the protocol.  Versioning is a 
> >>>anti-pattern
> >>>for the web.
> >>
> >>We've seen this mentioned before on this list but without a lot of
> >>clarifications and I'm curious:
> >>
> >>What are the other transfer protocols for which versioning have failed so
> >>significantly that versioning in protocols can be called an anti-pattern?
> >
> >Versioning has been a big pain point for TLS.  Here's a presentation
> >that outlines some recent implementation experience:
> >
> >http://www.ietf.org/proceedings/65/slides/tls-6.pdf
> >
> >I encourage you to read through the presentation (it's pretty short).
> 
> This is indeed discouraging. TLS server side implementers seem to be 
> rather challenged. For a security-related protocol, that's rather bad 
> indeed. I very much hope WS implementers can do a better job.

This presentation exactly outlines what is wrong when versions are used :
to make it mandatory to support a certain feature set without full
upgradability from the previous protocol. Early adopters do not completely
implement the spec and cause the trouble. In my opinion, a version should
be used *in conjunction* with a negociation, in order to announce :
  - a behaviour on the wire (could have been useful for WS with the new
    framing)
  - the highest, fully supported standard set of feature, in order not
    to have to announce them all.

There should be no problem always announcing v1.0 with a set of 20
extensions or announcing v1.1 with a set of 2 extensions. And in turn,
the spec should not make complex extensions mandatory, or it risks
having some users not support them once a protocol upgrade requires a
version bump.

Willy