Re: [ogpx] The Urgent Need For Protocol Negotiation (Was: Beyond the monolithic client protocol endpoint)

Carlo Wood <carlo@alinoe.com> Tue, 08 December 2009 14:01 UTC

Return-Path: <carlo@alinoe.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 D66053A63D3 for <ogpx@core3.amsl.com>; Tue, 8 Dec 2009 06:01:13 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.824
X-Spam-Level:
X-Spam-Status: No, score=-0.824 tagged_above=-999 required=5 tests=[AWL=0.606, BAYES_00=-2.599, HELO_EQ_AT=0.424, HOST_EQ_AT=0.745]
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 c77EuGyJ7wCV for <ogpx@core3.amsl.com>; Tue, 8 Dec 2009 06:01:12 -0800 (PST)
Received: from viefep19-int.chello.at (viefep19-int.chello.at [62.179.121.39]) by core3.amsl.com (Postfix) with ESMTP id 5DB003A67A7 for <ogpx@ietf.org>; Tue, 8 Dec 2009 06:01:11 -0800 (PST)
Received: from edge04.upc.biz ([192.168.13.239]) by viefep19-int.chello.at (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20091208140059.MVRG5725.viefep19-int.chello.at@edge04.upc.biz>; Tue, 8 Dec 2009 15:00:59 +0100
Received: from mail9.alinoe.com ([77.250.43.12]) by edge04.upc.biz with edge id Ee0w1d0Cu0FlQed04e0xMz; Tue, 08 Dec 2009 15:00:59 +0100
X-SourceIP: 77.250.43.12
Received: from carlo by mail9.alinoe.com with local (Exim 4.69) (envelope-from <carlo@alinoe.com>) id 1NI0ZG-0001dB-IB; Tue, 08 Dec 2009 14:57:30 +0100
Date: Tue, 8 Dec 2009 14:57:30 +0100
From: Carlo Wood <carlo@alinoe.com>
To: Suzy Deffeyes <suzyq@pobox.com>
Message-ID: <20091208135730.GA4384@alinoe.com>
References: <e0b04bba0912051014y1aeea211i2ce3267179c70f1e@mail.gmail.com> <4B1B785A.9000602@cox.net> <e0b04bba0912060911i122d62e9o37a7229a2d742ac@mail.gmail.com> <20091207001703.GA26539@alinoe.com> <f72742de0912071030k22cae4d1xd4100ecd823373af@mail.gmail.com> <20091207195825.GA23549@alinoe.com> <2bd5b7f10912071540x6f1d797dw9941ace39dcb4b5a@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <2bd5b7f10912071540x6f1d797dw9941ace39dcb4b5a@mail.gmail.com>
User-Agent: Mutt/1.5.20 (2009-06-14)
Cc: ogpx@ietf.org
Subject: Re: [ogpx] The Urgent Need For Protocol Negotiation (Was: Beyond the monolithic client protocol endpoint)
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, 08 Dec 2009 14:01:14 -0000

On Mon, Dec 07, 2009 at 05:40:30PM -0600, Suzy Deffeyes wrote:
> 
>     * In the latter case (the service not knowning about it) the viewer
>      needs to fall back to the old style map on opensim and to a hardcoded
>      S3 url on Second Life (which DOES support this capability, but just
>      doesn't know about the "capability" url itself).
> 
>     * Once Linden Lab (or any other grid that will implement the same
>      way that map works) stops supporting the "old style map", there
>      is no way to tell the client explicit that THIS "feature" (the
>      new way of how map works) is now mandatory, other than the
>      existing method of requiring a minimal *viewer* version... which
>      of course only works for the few viewers that are supported this
>      way and which is a very crude way to state that one feature is
>      now mandatory (bound to fail once there are lots of features
>      like this to be negotiated).
> 
> 
> So in the map tile case you mention, if the viewer gets a cap to the new way of
> fetching tiles, it wouldn't try to do the old way.

Well, if it DOES get a cap, then clearly the service DOES know about the
feature, so there is little need for the old style map.

> In this particular case,
> it seems like getting a cap for http fetch of map tiles deprecates client use
> of the old mechanism.

Yup. The problem that I tried to demonstrate that needs protocol/feature
negotiation is for the case that the server does NOT return a cap.


Wouldn't it an ideal world if in the end we'll have One Big Virual World ;)
(rethorical question). But, one world or not (and certainly in the case
where we have many different worlds) in the end we will have many different
branches of servers. Server implementations written by different people,
with different goals and ideas.

At the client side the same thing will happen. Right now we ONLY have six
or so separately maintained viewers; that number will grow a lot in the
future up till the point where it is unpractical to maintain communication
between client and server coders.

If we all can convince ourselves that the standard that we will produce
here is THE BEST-- and does not need ANY extensions or extra features,
then surely we will decide that what we make here is the Best For Everyone,
and Nobody Needs More. However, we are not the (only) server developers
of the future, and I predict that there will be a growing number of
server developers in the future that WILL feel the need for some new,
till then unsupported feature.

What is going to happen is that there WILL be a growing set of "features"
on top of the VWRAP standard, and no controlled way to communicate all
those features to the viewer developers... To make a long story short,
it will become a mess. Soon you will only really be able to connect to
server type "opensim" if you use their viewer; and only connect to
Second Life if you use Linden Lab's viewer.

The viewer coders will get frustrated about that, because they want
to allow their users to connect whereever. So, they need to make their
viewer adjust to the protocol as function of the server type that they
connect to.

At first, it would be sufficient to add some kludge to detect the major
grids (as it works for "their own" viewer), but the growing number of
servers and features will make a nightmare of this. Server version
detection will be needed, and then the viewer coders will need to start
to keep track of which versions of each server-type support what
features. The methods used to determine if some feature is optional
and whether or not a viewer can or want to use it will also be
random (everyone implementing their own way). Some server developers
will only support a few viewers and keep a list of versions of those
viewers and then "negotiate" the features silently by assuming that
viewer MyOwnViewer version 4.35 is compatible and has features
A,E,J,M,N,X and Z, while FurryViewer version 1.11 is not compatible
but 1.12 is but only supports features A,E,X and Z. Now LittleViewer
can't connect at all (except for using the base VWRAP protocol)
except by spoofing it's version and saying it is really FurryViewer,
however LittleViewer's coder didn't really want to add feature X,
rather wanted just to support feature F...

Buttom line, this isn't about ONE application (a server) with a
compatible viewer (client) that is controlled and maintained by
the same people as the server. This is about a large network of
servers and clients maintained and developed dynamically by many
different groups and we DO NEED TO SUPPORT protocol evolution
in order to avoid a complete future mess.

If anyone doesn't believe that (or thinks that we can do this
with just caps and the other methods already proposed in OGP)
then I beg you to add this anyway: if no features are added
then we're talking about three or four small, standard messages
(two each direction) for each client-server connection, and
no harm done.

If anyone doesn't WANT this, because they don't want to see the
protocol evolve, because a *standard* means that everyone uses
the same, and therefore building in ways to add random features
would only invite people to make viewers incompatible; then please
reconsider. I strongly believe that not adding support will
not stop people. Besides, it isn't bad if the protocol changes
over time at all imho; look at it as evolution: support for the
best features will be added to all viewers and servers, other
features won't make it and die again. As long as it is crystal
clear who supports what, and the documentation of each and every
feature can easily be found back on the web, then I think we
only gained.

-- 
Carlo Wood <carlo@alinoe.com>