Re: [hybi] Extensibility mechanisms?

Ian Hickson <ian@hixie.ch> Fri, 16 April 2010 07:16 UTC

Return-Path: <ian@hixie.ch>
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 DF61B3A6AD5 for <hybi@core3.amsl.com>; Fri, 16 Apr 2010 00:16:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.72
X-Spam-Level:
X-Spam-Status: No, score=-0.72 tagged_above=-999 required=5 tests=[AWL=0.021, BAYES_20=-0.74]
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 fZdsUiEDWGtu for <hybi@core3.amsl.com>; Fri, 16 Apr 2010 00:16:29 -0700 (PDT)
Received: from looneymail-a4.g.dreamhost.com (caibbdcaaaaf.dreamhost.com [208.113.200.5]) by core3.amsl.com (Postfix) with ESMTP id ADFC23A685E for <hybi@ietf.org>; Fri, 16 Apr 2010 00:16:29 -0700 (PDT)
Received: from ps20323.dreamhostps.com (ps20323.dreamhost.com [69.163.222.251]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by looneymail-a4.g.dreamhost.com (Postfix) with ESMTP id DCD418540; Fri, 16 Apr 2010 00:16:22 -0700 (PDT)
Date: Fri, 16 Apr 2010 07:16:22 +0000
From: Ian Hickson <ian@hixie.ch>
To: Justin Erenkrantz <justin@erenkrantz.com>
In-Reply-To: <h2w5c902b9e1004152345j992b815bz5f8d38f06a19181a@mail.gmail.com>
Message-ID: <Pine.LNX.4.64.1004160701250.751@ps20323.dreamhostps.com>
References: <h2w5c902b9e1004152345j992b815bz5f8d38f06a19181a@mail.gmail.com>
Content-Language: en-GB-hixie
Content-Style-Type: text/css
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset="US-ASCII"
Cc: Hybi <hybi@ietf.org>
Subject: Re: [hybi] Extensibility mechanisms?
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: Fri, 16 Apr 2010 07:16:31 -0000

On Thu, 15 Apr 2010, Justin Erenkrantz wrote:
> 
> I think we're starting to come to a consensus that there is some type of 
> "base" protocol with some type of "sub-protocol" or "extensibility" 
> mechanisms for Web Sockets.  (Please correct me if I'm wrong, but 
> Hixie's latest post seems to indicate a shift towards accepting that 
> type of model.)

As far as I'm aware, this is the same model I've been proposing since 
TCPConnection in 2007, before Michael even proposed the Upgrade approach 
and before we renamed this work to Web Sockets. But if we have come to 
consensus on that then great! :-)


> During the IETF-77 session, I pointed out that we really haven't started 
> any discussions around what those mechanisms would look like in 
> practice.  Given how much we're apparently placing into "sub-protocols", 
> I'd like to kick-off that discussion.

There are two "extension" points of importance, as far as I can tell, 
covering three kinds of "extensions" (I use scare quotes here because 
I'm not sure I would call them all extensions):

1. Subprotocols that run over Web Sockets as implemented by authors.
   These would be protocols based on Web Sockets in the same way that, for 
   example, HTTP, XMPP, IMAP, or SSH are based on TCP; currently based 
   just on strings of text sent in both directions, the format of which is 
   the subprotocol.

2. Opt-in features from future version of the protocol.
   For example, a future version might introduce compression. For 
   compression to be used on a connection, both client and server would 
   have to include some defined field in their handshake; the peers would 
   then use different mechanisms to send text than the current mechanism 
   (e.g. using frmae 0x80 with gzipped data).

3. Opt-in experimental non-standard features implemented by Web browsers 
   and servers involved with the experiment.
   This would use the same mechanism as #2, but would be limited to 
   experimental work, not widely deployed. For example, Firefox could 
   define a field that, when used by both client and server, switches the 
   connection from using the Web Socket framing to using an entirely 
   different framing based on HTTP chunking or BWTP or BEEP or something.

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'