Re: [hybi] Random Responses

rektide <rektide@voodoowarez.com> Sat, 11 April 2009 17:19 UTC

Return-Path: <rektide@voodoowarez.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 D9BF23A6B20 for <hybi@core3.amsl.com>; Sat, 11 Apr 2009 10:19:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.484
X-Spam-Level:
X-Spam-Status: No, score=-2.484 tagged_above=-999 required=5 tests=[AWL=0.115, 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 peyKgjK+wX3r for <hybi@core3.amsl.com>; Sat, 11 Apr 2009 10:19:51 -0700 (PDT)
Received: from voodoowarez.com (eldergods.com [72.9.228.236]) by core3.amsl.com (Postfix) with ESMTP id E16BE3A6B0C for <hybi@ietf.org>; Sat, 11 Apr 2009 10:19:50 -0700 (PDT)
Received: by voodoowarez.com (Postfix, from userid 1000) id 154ECB21A6; Sat, 11 Apr 2009 13:21:00 -0400 (EDT)
Date: Sat, 11 Apr 2009 13:20:59 -0400
From: rektide <rektide@voodoowarez.com>
To: Mark Lentczner <markl@lindenlab.com>
Message-ID: <20090411172059.GE9817@voodoowarez.com>
References: <8A829FEA-0EF2-46D6-974D-0EB237FF2728@lindenlab.com> <Pine.LNX.4.62.0904090030580.19453@hixie.dreamhostps.com> <A66ED417-B7AB-4138-B8DE-31323A4DC0C1@lindenlab.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <A66ED417-B7AB-4138-B8DE-31323A4DC0C1@lindenlab.com>
User-Agent: Mutt/1.5.17+20080114 (2008-01-14)
Cc: hybi@ietf.org
Subject: Re: [hybi] Random Responses
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: Sat, 11 Apr 2009 17:19:51 -0000

On Thu, Apr 09, 2009 at 09:06:23AM -0700, Mark Lentczner wrote:
>
> On Apr 8, 2009, at 5:34 PM, Ian Hickson wrote:
>> I misspoke, I should have said that the point of full-duplex  
>> communication
>> is that it's not request-response -- either side can spontaneously  
>> send a
>> message.
>
> Then I mis-replied. I should have said that we have a need for full- 
> duplex request-response -- either side can spontaneously send a request 
> message, and either side can, when ready, reply to a prior request.

I'd inject that a "worthy" transport also has to be able to permit either side to ad-hoc
initiate communication at any time as well.  I'd also say either end must be able to opt to
never reply without violating the transport spec.

How the reader dices this is anyone's guess: is this is a request-response transport with
optional reply, or is this a event transport with optional request-reply? I dont think it
matters, I think a good transport ought to support both.

>> The socket in WebSocket can be (indeed, must be) addressed via URL.
>
> Only the establishment in WebSocket is addressed via URL.  In rHTTP each 
> request can be addressed by URL.  This is useful as it is a very common 
> piece of meta-data that applications want. For example, using  
> WebSockets, for any complex page, an application is almost certainly  
> going to want a way to address which widget on the page is the intended 
> recipient of the event. Hence, each application is going to have to 
> devise an addressing scheme, and more importantly, a method of encoding 
> that address in the simple string event.

Addressability to the client side is something I had not considered before.  I would be very
interested to hear how this would work in a collaborative environment, how the server would
deal with multiple clients.

When I was heavily investigating Bayeux, I often thought each client should have a service
channel to enable cross system addressability.  I never had a concrete API sketched out for
how the endpoint would function, just the notion that there would be a URL template for
talking to clients.

>> At the message level, why do we need to force those features on all  
>> users?
>> They seem like features we should allow people to have if they want,  
>> but
>> they don't seem like features we should require all clients and  
>> servers to
>> implement just because someone might want them.
>
> Of course, but you must recognize there is a trade-off here that all  
> protocols make. The design needs to choose a feature set wide enough  
> that many different applications can make use of it, but must do so  
> balancing complexity and overhead. For example, WebSockets has chosen to 
> support both binary and UTF-8 payloads. The overhead of the lead-in type 
> byte was seen as worth it, even though there are many applications that 
> will only use the UTF-8 strings. So, I see the choices here as just a 
> matter of degree. I think popularity of HTTP for many kinds of 
> applications has shown that one or more features of HTTP(*) are often 
> applicable to an application's needs, while the overhead of these 
> features is low enough to be worth including them in the protocol for 
> all.(**)

Agreed, I think HTTP's framing is well worth the cost.

-rektide