Re: [hybi] Proposed way forward for WebSockets

Willy Tarreau <w@1wt.eu> Tue, 27 July 2010 09:01 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 279893A6AAA for <hybi@core3.amsl.com>; Tue, 27 Jul 2010 02:01:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.881
X-Spam-Level:
X-Spam-Status: No, score=-2.881 tagged_above=-999 required=5 tests=[AWL=-0.838, BAYES_00=-2.599, HELO_IS_SMALL6=0.556]
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 qJzhJ2kFDqGO for <hybi@core3.amsl.com>; Tue, 27 Jul 2010 02:01:21 -0700 (PDT)
Received: from 1wt.eu (1wt.eu [62.212.114.60]) by core3.amsl.com (Postfix) with ESMTP id F1EF33A686B for <hybi@ietf.org>; Tue, 27 Jul 2010 02:01:20 -0700 (PDT)
Received: (from willy@localhost) by mail.home.local (8.14.4/8.14.4/Submit) id o6R91atN017615; Tue, 27 Jul 2010 11:01:36 +0200
Date: Tue, 27 Jul 2010 11:01:36 +0200
From: Willy Tarreau <w@1wt.eu>
To: Ian Hickson <ian@hixie.ch>
Message-ID: <20100727090136.GD16965@1wt.eu>
References: <ECF0E97F-1DA2-4662-BA48-F68B65AA8179@apple.com> <4C4D66AF.9030905@opera.com> <Pine.LNX.4.64.1007270030120.24444@ps20323.dreamhostps.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <Pine.LNX.4.64.1007270030120.24444@ps20323.dreamhostps.com>
User-Agent: Mutt/1.4.2.3i
Cc: hybi@ietf.org
Subject: Re: [hybi] Proposed way forward for WebSockets
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: Tue, 27 Jul 2010 09:01:22 -0000

Hi Ian,

On Tue, Jul 27, 2010 at 12:56:07AM +0000, Ian Hickson wrote:
> Here's a proposed timeline for adding these features:
> 
>  - We fix any critical bugs (not feature additions) in the protocol as it 
>    stands today (next 4 weeks).
> 
>  - We deploy the protocol in four or more major browser vendors (next 4
>    months).
> 
>  - When binary support in WebGL is stable, we add binary support to XHR, 
>    WebSocket, etc (a matter of months?).
> 
>  - We look at how the protocol is used (another couple of months).
> 
>  - During this time, we build client and server test suites for the 
>    protocol.
> 
>  - We add built-in support for the features that are needed based on 
>    implementation experience (about 6 months from now), including 
>    compression, multiplexing, per-frame metadata annotation, etc, as 
>    needed.
> 
>  - We update the test suites.

I globally agree with this plan, but everything depends on what we
consider a critical bug and if a missing feature can be seen as a
bug (eg: keep-alives or pings), since these *will* cause random
hangs on long-lived connections. The protocol should really define
at least a NOP message that must be ignored by either end.

> I think it would be a mistake to add every feature we can think of right 
> away, because doing so would mean that we added features before their need 
> was proven, and it would lead to much less conforming client 
> implementations. This dynamic has been proven time and time again with Web 
> technologies; we should not repeat that mistake.

I would see it differently : when the spec makes it impossible to add
new features, there is no way we'll see richer implementations demonstrating
the need for those features. Look at HTTP for instance : it is very
extensible and keep-alive would never have existed if it had not been
permitted by the protocol spec.

Last, there is something I find complicated when reading the spec : it is
defined exactly as code. When you read it, you read code written in english.
It is very hard to implement something correct based on this because you
don't easily know what relates to *your* implementation, nor how your
implementation specific issues should be handled.

Having an additional section which defines the protocol instead of how to
process it would tremendously help.

Regards,
Willy