Re: [ogpx] content negotiation for LLSD over HTTP connections
Carlo Wood <carlo@alinoe.com> Sun, 19 July 2009 10:13 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 98AC93A6BD4 for <ogpx@core3.amsl.com>;
Sun, 19 Jul 2009 03:13:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.83
X-Spam-Level:
X-Spam-Status: No,
score=-0.83 tagged_above=-999 required=5 tests=[BAYES_00=-2.599,
HELO_EQ_AT=0.424, HOST_EQ_AT=0.745, J_CHICKENPOX_46=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 ysxgUtDX6LcL for
<ogpx@core3.amsl.com>; Sun, 19 Jul 2009 03:13:06 -0700 (PDT)
Received: from viefep28-int.chello.at (viefep28-int.chello.at [62.179.121.48])
by core3.amsl.com (Postfix) with ESMTP id 13F563A69D8 for <ogpx@ietf.org>;
Sun, 19 Jul 2009 03:13:05 -0700 (PDT)
Received: from edge05.upc.biz ([192.168.13.212]) by viefep17-int.chello.at
(InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id
<20090719101225.PEYF14607.viefep17-int.chello.at@edge05.upc.biz>;
Sun, 19 Jul 2009 12:12:25 +0200
Received: from mail9.alinoe.com ([77.250.43.12]) by edge05.upc.biz with edge
id HmCN1c03G0FlQed05mCPLa; Sun, 19 Jul 2009 12:12:25 +0200
X-SourceIP: 77.250.43.12
Received: from carlo by mail9.alinoe.com with local (Exim 4.69) (envelope-from
<carlo@alinoe.com>) id 1MSTOJ-0004oN-Om; Sun, 19 Jul 2009 12:13:11 +0200
Date: Sun, 19 Jul 2009 12:13:11 +0200
From: Carlo Wood <carlo@alinoe.com>
To: Infinity Linden <infinity@lindenlab.com>
Message-ID: <20090719101311.GA18120@alinoe.com>
References: <3a880e2c0906261648k1a14024cudd4cbccb57d8753f@mail.gmail.com>
<20090627104731.GB28675@alinoe.com> <20090627110112.GC28675@alinoe.com>
<20090627115111.GA30752@alinoe.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20090627115111.GA30752@alinoe.com>
User-Agent: Mutt/1.5.18 (2008-05-17)
Cc: ogpx@ietf.org
Subject: Re: [ogpx] content negotiation for LLSD over HTTP connections
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: Sun, 19 Jul 2009 10:13:08 -0000
Ping. On Sat, Jun 27, 2009 at 01:51:11PM +0200, Carlo Wood wrote: > Ok, I made a 'translation' of that IRC page for the purpose of ogpx: > > For documentation purposes there would exist a (central) webpage, > for example http://protocols.ogpx.net, that lists all (accepted) > ogpx server implementations (basically meaning more or less > independent groups working on their own ogpx server versions). > > For example, this page could list the labels: > SecondLife, OpenSim, BlueMoon, which link to websites > controlled by the aforementioned group. Lets call these > "implementation labels" for now. > > Upon connection to a server, the server should send a message > to the client as early as possible (even before authentication, > or order to allow also the authentication method to be altered > in the future) indicating which protocol base it is using. > This would exist of a (list) of triplets exists of a label (string) > a version (integer) and a 'compatibility version' (integer). > > For human readable and documentation reasons, the label should > always start with an "implementation label". It's highly suggested > to just add an integer behind that to complete the label and > make it unique. Lets call these labels "version labels". > For example, the version labels could read "SecondLife23", > "OpenSim1", etc. > > For documentation purposes, each of the aforementioned websites > owned by the different implementer groups should list each of > these version labels with a link to more information about them. > > The version string together with the version defines the (supported) > protocol of the server: every feature, mandatory of optional. > > Neither side has to worry about the mandatory parts, since the > versions will take care of that: a 'compatibility version' is > oldest version that supports all mandatory stuff. > > The client then reacts with the version label and protocol version > it 'requests', as well as all the optional features it wants. > The server confirms which optional features will be used, after > which the protocol is switched to the negotiated protocol. > The client acknowledges this and also switches to the final > protocol. > > As an example, lets assume that one implementation (opensim) > adds a feature that allows clients to better synchronize animations > with sound. They assign the label "anisndsync" to it, which only > really has to be unique within the namespace of OpenSim. > It is made a negotiable feature of 'OpenSim1 version 30'. > > A viewer that has no notion of this feature will logically not > request it, and therefore it will not be used. > > If some grid makes the feature mandatory, the negotation fails > with such a client and the user is told to upgrade to a viewer > that supports 'anisndsync'. I do not consider it very likely > that anyone would make it mandatory however, until -say- 90% > of all viewers already support it, and the 4 year-old viewers > that still don't become really annoying. > > If the client supports it, it will request it (if it's an optional > feature, still) and the server will grant it. Obviously the > server will know about it (it sent 'OpenSim1 30'), or else > the viewer would not have requested it. > > However, then this feauture turns out to not to work - and > the opensim developers decide to remove it again from version > 31. Removing a negotiable feature doesn't break compatiblity, > so there is nothing to indicate to a viewer (that was written > during version 30) that version 31 doesn't support it anymore. > What would happen is this: The server says: Opensim1 31 10. > (where 10 is the compatibility version in this example). > The viewer, only knowing about version 30 and before (that is, > version 10 to 30) doesn't have a clue what changed in > version 31, but it knows that 10 < 30, the version it does > support - and hence it is allowed to react as if the server > is version 30. So, it requests "anisndsync" as before. > This time however, the server doesn't acknowledge it, and > the feature is not used. > > What worried people in the past with this sheme is: > How do the clients keep track of all the features that are > mandatory and/or negotiable for every version? > > Well, this is really very very simple. For each implementated > feature the coder had to sit down and read the documenation. > Along with that documentation come the label and version > number. So, all that is needed is a map from "label + version" > to which *implemented* features are mandatory or negotiable. > The maintenance load of that is neglectable. It will be like > adding two lines of code extra per feature: > > protocol.register("OpenSim1", 30, "anisndsync", &handle_anisndsync); > > and common code that takes care of the whole negotiation > will do the rest. > > Mapping "OpenSim1" to the mandatory and optional features > might involve more code lines, but this code can simply be > copy&pasted from the documentation website of "OpenSim1". > Also this will be something that is easy to maintain (adding > and removing lines per added/delete feature). > > -- > Carlo Wood <carlo@alinoe.com> > _______________________________________________ > ogpx mailing list > ogpx@ietf.org > https://www.ietf.org/mailman/listinfo/ogpx -- Carlo Wood <carlo@alinoe.com>
- [ogpx] content negotiation for LLSD over HTTP con… Infinity Linden
- Re: [ogpx] content negotiation for LLSD over HTTP… Hurliman, John
- Re: [ogpx] content negotiation for LLSD over HTTP… Infinity Linden
- Re: [ogpx] content negotiation for LLSD over HTTP… Carlo Wood
- Re: [ogpx] content negotiation for LLSD over HTTP… Carlo Wood
- Re: [ogpx] content negotiation for LLSD over HTTP… Carlo Wood
- Re: [ogpx] content negotiation for LLSD over HTTP… Joshua Bell
- Re: [ogpx] content negotiation for LLSD over HTTP… Carlo Wood