OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

xri message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [xri] Clarity around Ref processing behavior.



Wil, 

It would be a shame to see the original semantics get morphed into the those
you describe below. 

1) These original semantics are currently presented in the spec. It is
difficult to imagine that one could interpret the flowcharts in 8.1.2 and
11.1 to express the semantics you describe. In any case, if you and I can
disagree so much on this, then this points to a flaw in the spec from an
interoperability standpoint--the spec needs to be clear either way.

2) The semantics that you describe were invented after the fact--arising
from implementation considerations--they have nothing to do with the
original use case that motivated Refs. Allow me to explain how Refs were
originally intended to work. 

I will do so by example. 

Consider the XRI authority for @ootao*steven.
http://beta.xri.net/@ootao*steven?_xrd_r=application/xrd%2Bxml;sep=false

As you can see by the XRD, this authority defines no OpenID SEP but contains
a Ref to =steven.churchill in the form of =!C5FB.53B6.6E94.824. 

Therefore, if I resolve the identifier @ootao*steven for it's OpenID
service, I get back the authority for =steven.churchill.

http://beta.xri.net/@ootao*steven?_xrd_t=http://openid.net/signon/1.0&&_xrd_
r=application/xrd+xml;sep=true;

Why does a Ref behave this way? Because that was the original use case: it
allows @ootao*steven to use a service from another authority. In this
example @ootao*steven is using the OpenID service for =steven.churchill.

Now let's say that I decide that I want @ootao*steven to use the XDI service
from a different authority, say @xdi*steven. I should be able to simply
place a Ref to @xdi*steven (and, of course, not define the XDI service for
@ootao*steven.)

Your semantics do not allow this basic use case. Again: your semantics are
about implementation considerations: speed, debugging, etc--not about
satisfying the requirements.

~ Steve

PS: The term "backtracking" is a red herring. All recursion backtracks,
because all recursion uses a stack. What you are trying to say is that you
don't want to traverse a second child.

-----Original Message-----
From: Tan, William 
Sent: Thursday, September 20, 2007 2:35 PM
To: Steven Churchill
Cc: xri@lists.oasis-open.org
Subject: Re: [xri] Clarity around Ref processing behavior.

We have discussed this before -- whether multiple Ref's have round-robin 
semantics or aggregation semantics.

While I agree that aggregation semantics is cool and is in fact more 
intuitive, I have always felt uncomfortable with it from the standpoint 
of predictability.

After discussing this at the TC call today, we led ourselves back to the 
"no back-tracking rule" which has the following advantages:
1. It exposes any error that it encounters early. If we found an error 
but ignored it moving on to the next Ref, the error could stay 
undiscovered for a long time while causing strange resolution behaviors.
2. It enforces a more predictable Ref usage pattern that follows down a 
single Ref chain instead of a Ref tree. This is often easy to understand 
and troubleshoot.
3. Having the constraint above, resolution will probably be faster 
because the resolver wouldn't have to try other Refs.

Drummond also brought up an interesting point that XRD/Ref has a focused 
but limited role in allowing one to aggregate services. Rather, the new 
Service/Ref provides more fine-grained control.

Look for Drummond's minutes for the call and let us know what you think.

=wil

Steven Churchill wrote:
>
> The "processing" flowcharts in sections 8.1.2 and 11.1 both contain a 
> box saying "Resolve Authority Ref to new XRDS document or error". If 
> "Error" is true, then there is a branch to obtain the next Ref.
>
> The original use case for Ref processing held that the "error" 
> occurred either if a Ref could not be followed due to network error or 
> if following the Ref came up empty for the requested service type. 
> That is, in both cases, the code should try following the next Ref. [I 
> will omit for now the explanation as to why this use case is 
> important, but will gladly explain if asked.]
>
> I've heard Wil say at some point that the current OpenXRI 
> implementation only tries the next Ref due to network failure-but 
> doesn't try the next Ref if the "Resolve Authority Ref to new XRDS 
> document or error" comes up empty for the given service type.
>
> Wil, is my statement accurate? If so, I propose that the OpenXRI 
> behavior be changed to (what I consider) match the flowcharts.
>
> ~ Steve
>
> PS: the "note" in the both flowchart refers to section 10. This is 
> incorrect.
>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]