Re: [hybi] Extensibility mechanisms?

Ian Hickson <ian@hixie.ch> Wed, 21 July 2010 22: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 4F5933A6944 for <hybi@core3.amsl.com>; Wed, 21 Jul 2010 15:16:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.408
X-Spam-Level:
X-Spam-Status: No, score=-2.408 tagged_above=-999 required=5 tests=[AWL=0.191, 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 SH4wxf-ZTDWT for <hybi@core3.amsl.com>; Wed, 21 Jul 2010 15:16:48 -0700 (PDT)
Received: from looneymail-a4.g.dreamhost.com (caibbdcaaaaf.dreamhost.com [208.113.200.5]) by core3.amsl.com (Postfix) with ESMTP id 634E03A6899 for <hybi@ietf.org>; Wed, 21 Jul 2010 15:16:46 -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 E793B85AD for <hybi@ietf.org>; Wed, 21 Jul 2010 15:17:02 -0700 (PDT)
Date: Wed, 21 Jul 2010 22:17:02 +0000
From: Ian Hickson <ian@hixie.ch>
To: Hybi <hybi@ietf.org>
In-Reply-To: <4C462F9E.9030207@caucho.com>
Message-ID: <Pine.LNX.4.64.1007212153110.7242@ps20323.dreamhostps.com>
References: <h2w5c902b9e1004152345j992b815bz5f8d38f06a19181a@mail.gmail.com> <4BCAB2C1.2000404@webtide.com> <B9DC25B0-CD21-44E7-BD9B-06D0C9440933@apple.com> <4BCB7829.9010204@caucho.com> <Pine.LNX.4.64.1004182349240.751@ps20323.dreamhostps.com> <4BCC0A07.9030003@gmx.de> <Pine.LNX.4.64.1004190753510.23507@ps20323.dreamhostps.com> <4BCC111C.90707@gmx.de> <Pine.LNX.4.64.1004190837570.23507@ps20323.dreamhostps.com> <4BCC204D.30004@gmx.de> <z2gad99d8ce1004190822ne4dd36b6v54d63efcc448e840@mail.gmail.com> <Pine.LNX.4.64.1007202204270.7242@ps20323.dreamhostps.com> <AANLkTikkfdlUxQ0MGNvVQKa5gfovkGHWdCgyN9juKSQJ@mail.gmail.com> <4C462F9E.9030207@caucho.com>
Content-Language: en-GB-hixie
Content-Style-Type: text/css
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset="US-ASCII"
Content-ID: <Pine.LNX.4.64.1007212209271.7242@ps20323.dreamhostps.com>
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: Wed, 21 Jul 2010 22:16:50 -0000

On Tue, 20 Jul 2010, John Tamplin wrote:
> On Tue, Jul 20, 2010 at 6:14 PM, Ian Hickson <ian@hixie.ch> wrote:
> > 
> > What I'm interested in personally is writing a protocol that amateur 
> > programmers can implement easily. If we say they have to use someone 
> > else's code to do this, then that's a failure, IMHO. (Though as I've 
> > mentioned before, if people have different goals or priorities, I have 
> > no problem with separate protocols also being designed to address 
> > those -- Web Sockets doesn't have to be everything for everybody.)
> 
> I still don't see the argument for servers written by amateurs.  I have 
> used far more quick-and-dirty web clients (telnet, socket/connect/write 
> in C, wget/curl, etc) than I have quick-and-dirty servers.

That's largely because most protocols are such that you can't make a 
compliant server quickly. The one exception (which isn't a network 
protocol but is relatively similar for the purposes of this discussion) is 
CGI. That's a simple protocol, and there are many implementations of the 
server side of the protocol (that is, CGI scripts; the HTTP server is the 
client of the CGI protocol). Now, most people use libraries, of course, 
and that's fine. But the protocol is simple enough that you don't _have_ 
to use a library, and some people don't.


> If some amateur needs to write a server anyway, they aren't going to 
> write it from scratch even if it were possible for them to do so -- they 
> will find some library.

Yes, for most existing protocols that is the sad reality. I think that's a 
failure on our part (the part of protocol designers). We can enable much 
greater experimentation, innovation, learning, and so forth, if we make 
lower the bar to the level of CGI scripts rather than keeping it at the 
level of HTTP servers.


> Contrast this with embedded clients, which might well have tighter 
> constraints than most clients, and could benefit from having optional 
> features they could leave out that would be useful for more powerful 
> clients.  Meanwhile, the servers are going to almost certainly be on 
> more powerful machines, though granted they have more connections to 
> support.

In the case of Web Sockets, most clients (by usage) are going to be Web 
browsers, so if we are forced to put complexity into the protocol, we 
should move it to the browser side. But in general we should keep that 
side simple too, so that custom clients can also be written.


On Wed, 21 Jul 2010, Jamie Lokier wrote:
> 
> All that's needed, for amateur programmer compatibility, is for the 
> "complex" performance-enhancing features to be optional negotiated 
> features on top of an extremely simple base protocol.  And for the 
> negotiation to be really simple too.

Once the protocol is proven, I think it would make sense to add optional 
features. The protocol is designed to make that easy for us.


On Tue, 20 Jul 2010, Roberto Peon wrote:
> 
> We need browser-owned connections with a security model that allows multiple
> tabs to share the connection safely.
> This is probably the most important requirement for scalability as far as
> I'm concerned. This requires fewer keep-alives (both because of fewer TCP
> connections and because the TCP connection is more likely to have real
> content sent on it instead of near-zero value'd keep-alives), it requires
> fewer file descriptors, it requires fewer handshakes.

This is pretty easily implemented at the application layer using shared 
workers.


On Tue, 20 Jul 2010, Mike Belshe wrote:
> 
> For as adamantly as Ian states that it should be a requirement, I am 
> just as adamant that it should not.

It's quite possible that this working group should be working on two (or 
more) protocols, rather than trying to solve all our problems with Web 
Sockets. Or it could be that Web Sockets isn't the right solution for the 
problems that most people in this working group are trying to solve.

Web Sockets is a trivially-implementable TCP-for-browsers protocol for 
long-lived connections. If that doesn't sound like the protocol you need, 
then you need a different protocol. If that isn't the protocol this 
working group wants, then this working group wants another protocol. I 
don't think there's anything wrong with that, but then we should work on 
that protocol, not Web Sockets.


> But more importantly, this single issue has been holding protocol 
> progress hostage.  Naturally, any feature has some amount of complexity.  
> But this requirement creates an invisible, and subjective barrier to 
> each feature. Is the feature too complex for an amateur programmer?  
> Nobody knows, and everyone disagrees, because it is a subjective 
> criteria.  So we spin and can't agree.

I disagree that the protocol's development has been in any way held up by 
this. I agree that we've talked about it a lot in the working group, but 
the spec itself hasn't been affected by this as far as I can tell.


> Every protocol expert I've spoken with agrees that amateur protocol 
> implementors should not be a requirement.

And what did the protocol amateurs you spoke to say? It seems unsurprising 
that people whose careers are based on being able to solve complicated 
protocol problems should want protocols to be complicated.

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