Re: [hybi] Versioning is a anti-pattern

Dave Cridland <dave@cridland.net> Thu, 02 September 2010 18:52 UTC

Return-Path: <dave@cridland.net>
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 DCC7A3A65A5 for <hybi@core3.amsl.com>; Thu, 2 Sep 2010 11:52:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.466
X-Spam-Level:
X-Spam-Status: No, score=-2.466 tagged_above=-999 required=5 tests=[AWL=0.133, 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 epqefLaIsc7e for <hybi@core3.amsl.com>; Thu, 2 Sep 2010 11:52:05 -0700 (PDT)
Received: from peirce.dave.cridland.net (peirce.dave.cridland.net [217.155.137.61]) by core3.amsl.com (Postfix) with ESMTP id 34BC13A681B for <hybi@ietf.org>; Thu, 2 Sep 2010 11:52:05 -0700 (PDT)
Received: from localhost (localhost.localdomain [127.0.0.1]) by peirce.dave.cridland.net (Postfix) with ESMTP id DAAC011680B8; Thu, 2 Sep 2010 19:52:33 +0100 (BST)
X-Virus-Scanned: Debian amavisd-new at peirce.dave.cridland.net
Received: from peirce.dave.cridland.net ([127.0.0.1]) by localhost (peirce.dave.cridland.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yH77DqXkj2BF; Thu, 2 Sep 2010 19:52:30 +0100 (BST)
Received: from puncture (unknown [217.155.137.60]) by peirce.dave.cridland.net (Postfix) with ESMTPA id DA2C411680AF; Thu, 2 Sep 2010 19:52:30 +0100 (BST)
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> <AANLkTikDXaAM+JFieicNcOvsZtahtX-rb9iXVv1+dC36@mail.gmail.com>
In-Reply-To: <AANLkTikDXaAM+JFieicNcOvsZtahtX-rb9iXVv1+dC36@mail.gmail.com>
MIME-Version: 1.0
Message-Id: <2348.1283453550.892590@puncture>
Date: Thu, 02 Sep 2010 19:52:30 +0100
From: Dave Cridland <dave@cridland.net>
To: Tim Bray <tbray@textuality.com>, Server-Initiated HTTP <hybi@ietf.org>, Daniel Stenberg <daniel@haxx.se>
Content-Type: text/plain; delsp="yes"; charset="us-ascii"; format="flowed"
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: Thu, 02 Sep 2010 18:52:07 -0000

On Thu Sep  2 19:42:16 2010, Tim Bray wrote:
> Versioning requres you to make all sorts of REALLY HARD choices,  
> and runs
> the risk of imposing really onerous costs on implementors.  Thus,  
> you need
> to be really convinced that there are really significant benefits  
> before you
> embark on this difficult and risky course of action.  -Tim
> 
> 
To put it another way, versioning is for flag days, whereas feature  
negotiation is for, well, negotiating features.

An example of a protocol with both is XMPP. It has a version, which  
is always 1.0. It also has stream features for peer-to-peer feature  
negotiation.

Jabber, its predecessor, had no version - but it also lacked the  
feature negotiation. Essentially, XMPP's version indicates to the  
receiver that it's okay to announce what features you offer.

So in our release protocol, I'd say we SHOULD NOT have a version, but  
we MAY have a static, never to be changed, version.

For now, though, when we're quite likely to want to change our  
feature negotiation mechanisms, we probably MUST have a version.

The key item is not that versions are bad, but that *changing* them  
is.

Dave.
-- 
Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net
  - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
  - http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade