Re: [ogpx] event queues for fun and profit

Infinity Linden <infinity@lindenlab.com> Tue, 02 June 2009 23:09 UTC

Return-Path: <infinity@lindenlab.com>
X-Original-To: ogpx@core3.amsl.com
Delivered-To: ogpx@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C5F1D3A68D3 for <ogpx@core3.amsl.com>; Tue, 2 Jun 2009 16:09:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.286
X-Spam-Level:
X-Spam-Status: No, score=-1.286 tagged_above=-999 required=5 tests=[AWL=0.091, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, J_CHICKENPOX_36=0.6]
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 Kgl5Fp9unQu8 for <ogpx@core3.amsl.com>; Tue, 2 Jun 2009 16:09:48 -0700 (PDT)
Received: from an-out-0708.google.com (an-out-0708.google.com [209.85.132.245]) by core3.amsl.com (Postfix) with ESMTP id 62DCE3A6B92 for <ogpx@ietf.org>; Tue, 2 Jun 2009 16:09:48 -0700 (PDT)
Received: by an-out-0708.google.com with SMTP id c3so6305955ana.4 for <ogpx@ietf.org>; Tue, 02 Jun 2009 16:09:46 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.100.107.8 with SMTP id f8mr369540anc.149.1243984186514; Tue, 02 Jun 2009 16:09:46 -0700 (PDT)
In-Reply-To: <4A25AC76.3070700@comlounge.net>
References: <3a880e2c0906021522g1883adh326fa837d6189130@mail.gmail.com> <4A25AC76.3070700@comlounge.net>
Date: Tue, 02 Jun 2009 16:09:46 -0700
Message-ID: <3a880e2c0906021609r1d751f5fn507a519395f9245b@mail.gmail.com>
From: Infinity Linden <infinity@lindenlab.com>
To: Christian Scholz <cs@comlounge.net>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
Cc: "ogpx@ietf.org" <ogpx@ietf.org>
Subject: Re: [ogpx] event queues for fun and profit
X-BeenThere: ogpx@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Virtual Worlds and the Open Grid Protocol <ogpx.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/ogpx>, <mailto:ogpx-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ogpx>
List-Post: <mailto:ogpx@ietf.org>
List-Help: <mailto:ogpx-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ogpx>, <mailto:ogpx-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 02 Jun 2009 23:09:49 -0000

cool. learning more about wave has been on my todo list for at least a
few days. using XMPP to carry OGP application PDUs may be a topic for
the future, it's totally in scope for MMOX. the use case is in scope
here.

it might be worth it to make a few comments about OGP, HTTP and XMPP.
OGP was originally envisioned as an application layer protocol. That
is... the transport that carries application to application messages
is not as important as the application messages themselves. Though OGP
is currently only defined with HTTP as a transport, we wanted to make
it generic enough so that in the future if it made sense to carry OGP
application layer messages over XMPP, SIP, SMTP or even carrier
pigeon, it would not be terribly hard to modify the existing
specifications.

that being said... we're currently focused on OGP over HTTP
exclusively. we (linden) did that 'cause a) we have limited resources
and b) at the current time the tool chain for HTTP seems more mature
than the tool chain for XMPP. that will eventually change, i'm sure.
but for right now, we're pretty focused on OGP/{R}HTTP(S).

but there are very clearly some use cases (like the event queue) that
XMPP (or an XMPP like solution) would be more appropriate. it just
seems that at the current time, it's easier to implement an event
queue on HTTP than it is to build a robust XMPP tool chain.

this will change, and i look forward to the day that i'm forced to eat
those words cause it will mean it's at least as easy to deliver a
compelling service over XMPP as it is to deliver it over HTTP. but
right now... while we're waiting for the world to change, we're moving
forward with OGP/HTTP. but it's good to see wave getting deployed
'cause it means we're closer to the future.

-cheers
-meadhbh

On Tue, Jun 2, 2009 at 3:49 PM, Christian Scholz <cs@comlounge.net> wrote:
> Hi!
>
> Just a short thing: Did you look at http://waveprotocol.org?
> It's XMPP based and somehow a very much related use case. I haven't looked
> that close into it myself but it at least looks very promising. Moreover
> it's coming from Google and thus might get some traction and community
> around it.
>
> (but maybe this is more something for discussion on MMOX)
>
> -- Christian
>
> Infinity Linden schrieb:
>>
>> so... event queues...
>>
>> to recap.. you can find info re: event queues in the OGP : Base
>> document at http://tools.ietf.org/html/draft-lentczner-ogp-base-00 .
>> an event queue is a service used by an HTTP client to get unsolicited
>> event notifications from a server. After logging into the agent
>> domain, one of the caps you should request is the event queue. You
>> then listen on the event queue for messages, process the server to
>> client messages and send the response back to the server via the event
>> queue cap.
>>
>> and here are some issues open for discussion...
>>
>> * how many event queues do we need? are we only going to have one
>> event queue from the client to the agent domain, and then have all
>> other services forward messages they want to send to the client to the
>> AD? or do we say... "one event queue per client : host pair"? or do we
>> further define the concept of a "service" as a collection of related
>> caps, including an event queue?
>>
>> * asynchronicity - the event queue as it is defined currently defines
>> synchronous messages. the benefit here is that synchronicity is
>> "simple" in terms of state. the drawback is that the client
>> application MUST respond to the current message BEFORE it can request
>> the next one in the queue. an asynchronous message queue may require
>> application layer protocol equivalents of re-transmitting, windowing
>> and message time outs that would complicate the server -> client
>> interaction. if we're worried that one synchronous message that took a
>> long time to process could hold up the entire queue, we might want to
>> make the implementation of that message have the pattern of... "create
>> a capability on the client representing the client's response to a
>> message. i (the server) will poll it and see if it's done."
>> honestly... all the solutions to this problem have warts.
>>
>> * message count - should we let multiple server -> client messages
>> flow in a single request to the event queue cap?
>>
>> * RHTTP - right now we're looking at the event queue being implemented
>> as a long poll over HTTP. ultimately, a technology like RHTTP would
>> reduce server overhead. (
>> http://tools.ietf.org/html/draft-lentczner-rhttp-00 ) i think the
>> discussion around this point is... let's not do anything with the
>> event queue that makes it harder to implement RHTTP later. Or
>> websockets or bosch or beyaux for that matter.
>>
>> * capabilities on the client - readers familiar with COMET or AJAX
>> will remember that simply defining an event queue is just half the
>> battle; rich clients are likely to have multiple objects that will
>> receive messages along the queue, so you have to have some way to
>> demultiplex messages. one way to do this is to model capabilities on
>> the client as endpoints for messages flowing across the event queue.
>> an advantage of this approach might be the ability for the server to
>> pass off a client capability to another server that will complete a
>> service request. hmm... more on this later... this probably warrants
>> it's own conversation thread and involves the concept of RHTTP URLs
>>
>> * externally identifying event queues - so imagine you're a client.
>> you authenticate yourself to the agent domain and ask for caps for a
>> couple services. we'll call them "search:group",
>> "search:group:event_queue", "group:im" and "group:im:event_queue". the
>> protocol makes no assumptions as to whether the protocol endpoint that
>> implements the "search:group:event_queue" and "group:im:event_queue"
>> caps are the same URL or if they're different URLs. it would be
>> advantageous for the client to be able to, upon seeing that both caps
>> are implemented on the same URL NOT open a second connection to the
>> url. so the question is.. representing event_queues as URLs is not a
>> problem, right?
>>
>> i'm sure there's more we could add to this, but this is just a bit to
>> get the conversation started.
>>
>> -sincerely
>> -meadhbh / infinity
>> _______________________________________________
>> ogpx mailing list
>> ogpx@ietf.org
>> https://www.ietf.org/mailman/listinfo/ogpx
>
>
> --
> COM.lounge GmbH
> http://comlounge.net
> Hanbrucher Strasse 33, 52064 Aachen
> Amtsgericht Aachen HRB 15170
> Geschäftsführer: Dr. Ben Scheffler, Christian Scholz
>
> email: info@comlounge.net
> fon: +49-241-4007300
> fax: +49-241-97900850
>
> personal email: cs@comlounge.net
> personal blog: http://mrtopf.de/blog
> personal podcasts: http://openweb-podcast.de, http://datawithoutborders.net
>
>