Re: [hybi] Protocol simplicity and the "amateur programmer" standard

James Graham <jgraham@opera.com> Mon, 26 July 2010 11:48 UTC

Return-Path: <jgraham@opera.com>
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 C89563A699E for <hybi@core3.amsl.com>; Mon, 26 Jul 2010 04:48:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.484
X-Spam-Level:
X-Spam-Status: No, score=-5.484 tagged_above=-999 required=5 tests=[AWL=1.115, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
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 w2R-AB5TV9Ms for <hybi@core3.amsl.com>; Mon, 26 Jul 2010 04:48:12 -0700 (PDT)
Received: from smtp.opera.com (smtp.opera.com [213.236.208.81]) by core3.amsl.com (Postfix) with ESMTP id 2BD033A680A for <hybi@ietf.org>; Mon, 26 Jul 2010 04:48:11 -0700 (PDT)
Received: from [10.30.0.35] (046-tdc.opera.com [213.236.208.46] (may be forged)) (authenticated bits=0) by smtp.opera.com (8.14.3/8.14.3/Debian-5+lenny1) with ESMTP id o6QBmRRe020522 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 26 Jul 2010 11:48:28 GMT
Message-ID: <4C4D760A.9060906@opera.com>
Date: Mon, 26 Jul 2010 13:48:26 +0200
From: James Graham <jgraham@opera.com>
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9pre) Gecko/20100217 Shredder/3.0.3pre
MIME-Version: 1.0
To: Maciej Stachowiak <mjs@apple.com>
References: <ECF0E97F-1DA2-4662-BA48-F68B65AA8179@apple.com> <4C4D66AF.9030905@opera.com> <DAA95AEE-300E-4C2D-BBCA-02D0385EE482@apple.com>
In-Reply-To: <DAA95AEE-300E-4C2D-BBCA-02D0385EE482@apple.com>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 7bit
Cc: hybi@ietf.org
Subject: Re: [hybi] Protocol simplicity and the "amateur programmer" standard
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, 26 Jul 2010 11:48:13 -0000

On 07/26/2010 01:07 PM, Maciej Stachowiak wrote:
>
> On Jul 26, 2010, at 3:42 AM, James Graham wrote:

>> "it must be possible to efficiently implement WebSockets using only
>> the stdlib of today's popular scripting languages without dropping
>> down to lower level (C, Java, whatever) code"
>
> Out of the existing requirements, the one that this statement is most
> likely to conflict with is security, since many proposals for making
> the handshake secure against cross-protocol attacks involve crypto. I
> would not consider efficient implementability in scripting languages
> to be a higher priority than security. I think other proposed
> features that conflict with the simplicity argument are not
> especially inefficient to implement.

To be clear here, I mean "efficient in terms of programmer time". That 
is, I don't think it is acceptable to make would-be implementers write 
substantial amounts of code that are not directly related to websockets 
just to write a simple websockets server.

> Others may hold different requirements as important, and I don't
> think appealing to some standard of simplicity will make anyone
> conclude that their particular requirement is less important.

That could be true, but it is sad if so; I would hope people are capable 
of assessing the relative importance, and relative complexity, of 
features that they would like in the protocol.

>> Having said all of that, I think the current discussion on this
>> list belies a false belief that we are still at a stage where the
>> protocol can be trivially changed. Instead we are in a situation
>> where there are three known implementations in major browser
>> engines (presto, gecko, webkit) and some of those are close to
>> shipping. There are also numerous server implementation. At this
>> stage, the cost of substantial changes is already looking
>> prohibitive and if Opera/Firefox/Chrome/Safari all ship with
>> interoperable support, we can assume that substantial changes to
>> the design will become all but impossible since browsers rarely
>> rescind functionality that is needed to keep sites working.
>>
>> Given the current implementation status, I suggest people adopt the
>> attitude that changes are difficult and expensive and only the most
>> necessary changes should be advocated. If there are people who
>> believe that WebSockets has the wrong requirements, or occupies the
>> wrong part of design space, it seems more prudent to work on a
>> seperate, parallel, proposal.
>
> The last version of Safari shipped with a version of WebSocket that
> is incompatible with the current protocol.

I think one browser shipping doesn't create an ecosystem that depends on 
WebSockets not undergoing incompatible changes (although I note that I 
have seen multiple people ask how to make their servers compatible with 
both -75 and -76 handshakes in order to work with both Safari 5 and 
Chrome). I think that many browsers shipping compatible implementations 
is highly likely to create such an ecosystem. Therefore I would say that 
the timescale for substantial changes to websockets is soemthing like 
the release timescale of the next generation of browsers minus the 
stabilization time and the time needed to implement changes. It seems to 
me that that timescale could be rather short.