[sldev] [ogpx] Snowglobe on OpenSim grids

Carlo Wood carlo at alinoe.com
Thu Dec 10 05:33:19 PST 2009


> On Wed, Dec 9, 2009 at 11:17 AM, Joshua Bell <josh at lindenlab.com> wrote:
>     And replace it with:
> 
>         if (has_cap_for_foo)
>             use_cap_for_foo();
>         else
>             use_hardcoded_endpoint_for_foo();

This would still fail on opensim, since it would do the same
as it is doing now-- which doesn't work.

[...]
>     If we determine that the cap needs to change - perhaps the prototyped
>     design can't be adopted as-is by Linden for some reason, or the cap is
>     rev'd in some incompatible way (even given the version skew-combating
>     super-powers of LLSD), then the client code would be updated to be:
> 
>         if (has_cap_for_foo2)
>             use_cap_for_foo2();
>         else if (has_cap_for_foo)
>             use_cap_for_foo();
>         else
>             use_hardcoded_endpoint_for_foo();

What about using feature negotiation?
We only have to agree on it, implement it once, and we'll have forever
a powerful way to negotiate ANYTHING we might need in the future
where the client-server protocol is a function of -basically- version
numbers of each.

Instead of

         if (has_cap_for_foo6)
             use_cap_for_foo6();
         else if (has_cap_for_foo5)
             use_cap_for_foo5();
         else if (has_cap_for_foo4)
             use_cap_for_foo4();
         else if (has_cap_for_foo3)
             use_cap_for_foor3();
         else if (has_cap_for_foo2)
             use_cap_for_foo2();
         else if (has_cap_for_foo)
             use_cap_for_foo();
         else
             use_hardcoded_endpoint_for_foo();

where each "has_cap_*" needs to be probed separately,
you could just directly negotiate whatever is needed (which is
so powerful, you can change the protocol to ANYthing, so
there isn't really a need for examples).

>     (And ideally the client code that embodies this logic is nicely
>     encapsulated so that these tests aren't repeated. Regardless, this is an
>     extremely common pattern for exactly this capability-probing situation.)
> 
>     Suzy asks: "Can we make a simple fix for OpenSim now that will still work
>     with the existing Linden grid, irrespective of vwrap?"
> 
>     I would suggest: yes!

She asked 'now'... which means with the current opensim version.

>     (1) Implement the cap on the server side
>     (2) Implement the client side code to use it
>     (3) Share the design here/JIRA for community review
>     (4) Push the patch to Snowglobe via JIRA
>     (5) If the client needs to support a different cap in the future e.g. for
>     Linden, the model above would be followed.

How would that cause map the work on opensim?
The only way to make it work now on opensim is, in pseudo code:

        if (has_cap_for_foo)
            use_cap_for_foo();
        else if (second_life_grid)
            use_hardcoded_endpoint_for_foo();
        else
	    use_old_map_style();

-- 
Carlo Wood <carlo at alinoe.com>


More information about the SLDev mailing list