[ogpx] issue : naming of capabilities in OGP

Infinity Linden <infinity@lindenlab.com> Fri, 29 May 2009 20:57 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 8F3533A6FDB for <ogpx@core3.amsl.com>; Fri, 29 May 2009 13:57:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.544
X-Spam-Level:
X-Spam-Status: No, score=-1.544 tagged_above=-999 required=5 tests=[AWL=0.433, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
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 XnhfMSg8uKoB for <ogpx@core3.amsl.com>; Fri, 29 May 2009 13:57:38 -0700 (PDT)
Received: from yx-out-2324.google.com (yx-out-2324.google.com [74.125.44.28]) by core3.amsl.com (Postfix) with ESMTP id 856E53A6F46 for <ogpx@ietf.org>; Fri, 29 May 2009 13:57:38 -0700 (PDT)
Received: by yx-out-2324.google.com with SMTP id 8so6148951yxb.49 for <ogpx@ietf.org>; Fri, 29 May 2009 13:59:20 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.100.120.10 with SMTP id s10mr4368456anc.86.1243630760555; Fri, 29 May 2009 13:59:20 -0700 (PDT)
In-Reply-To: <3a880e2c0905291356w64a89d1an640ed68196225911@mail.gmail.com>
References: <3a880e2c0905291356w64a89d1an640ed68196225911@mail.gmail.com>
Date: Fri, 29 May 2009 13:59:20 -0700
Message-ID: <3a880e2c0905291359r6383f485u12ba2235a963b46d@mail.gmail.com>
From: Infinity Linden <infinity@lindenlab.com>
To: ogpx@ietf.org
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Subject: [ogpx] issue : naming of capabilities in OGP
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: Fri, 29 May 2009 20:57:39 -0000

hey peeps... just thought i would try to kick off a couple technical
discussions...

so... if you look at the auth spec (
http://tools.ietf.org/html/draft-hamrick-ogp-auth-00 ), you'll note
that the client application is supposed to tell the agent domain what
capabilities (caps) it wants. this assumes the client application
knows the cap names and how to interact with the system hosting the
cap. (we _could_ get into a discussion about service discovery here,
but i'm hoping to limit the discussion on this thread to just the
naming issue.)

currently, capability names are descriptive strings (like
"place/avatar" and so forth.) There is a recommendation that we use
URIs of the following format as cap names:

"standard" capabilities defined by OGP should be identified as a URN
in the format:
  URN:OGP:<capability name> ("urn:ogp:/avatar/place" or
"urn:ogp:/eventqueue/get")

private extensions might be identified by URNs like:
 URN:OGP:<authority>/<capability name>
("urn:ogp:org.opensimulator/chatsession/create" or even
"urn:ogp:org.example/avatar/place")

so... to define it a little more formally with EBNF, you could say
that the OGP URN looks like:

ogpurn = 'URN:OGP:' , [ authority ]  , capname ;
capname = { fragment } ;
fragment = '/'  , { alphanumeric } ;
alphanumeric = alpha | digit ;
alphabetic character = "A" | "B" | "C" | "D" | "E" | "F" | "G"
                    | "H" | "I" | "J" | "K" | "L" | "M" | "N"
                    | "O" | "P" | "Q" | "R" | "S" | "T" | "U"
                    | "V" | "W" | "X" | "Y" | "Z" |
                      "a" | "b" | "c" | "d" | "e" | "f" | "g"
                    | "h" | "i" | "j" | "k" | "l" | "m" | "n"
                    | "o" | "p" | "q" | "r" | "s" | "t" | "u"
                    | "v" | "w" | "x" | "y" | "z" ;
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;

(also... insert the appropriate EBNF description of a fqdn for
authority (i'm too lazy to copy it.)

and if you wanted to get wild and conflate the name of the cap with
the location of a resource about the cap, you would use a traditonal
RFC2616 / 2817 http / https url like
("http://example.org/capabilities/avatar/place")

the development for this recommendation is...

* i made the recommendation that since peeps might want to create
extensions to OGP (in fact, OGP is expected to have extensions if for
no other reason than we can test capabilities before they're codified
in an rfc.) i was exposed to the java way of naming classes which is
to start the name of your class as the reverse of each element in your
organization's FQDN. So.. I recommended something like
"com.lindenlab.extension.foo" for linden-specific extensions
"com.ibm.extension.bar" for IBM specific extensions, etc.

* this left open the question of how do we denote standard cap names
that are defined in the spec. putting them under "com.lindenlab" is
inappropriate because OGP is a community effort. and doing the java
thing of putting standard caps under "ogp." is probably bad 'cause
ICANN is going to start allowing peeps to register arbitrary TLDs any
day now; creating a spec that requires SOMEONE to partner with a
registry so we can control the ogp.* namespace to prevent name
collisions is a plan fraught with peril.

* plus... John has an interest in using URLs as opaque cap identifiers.

and the solution that came out of it was using a URN.

this would require us to approach IANA and get a URN NID for OGP which
is a non-zero amount of work.

also... the way i've defined it, we're limiting cap names to ASCII
characters which may be inappropriate in an international world.

-comments?
-questions?

-cheers!
-meadhbh