Slurl Documentation

This is work in progress, please contribute information, structure, layout, links. Thanks !

Who should read or contribute to this article

 * developers working on viewers
 * developers working on simulators
 * grid maintainers
 * technically interested users of any above

What should be contributed to this article

 * Please *do not add code examples here*, for that you can use the issue tracker.
 * Instead add specifications here which help developers of any favored language, or code base, or license with their implementation without getting confused by examples of a different language, or code base, or license.

About and Compatibility
The following documents what LL viewer 2.x would do if it did what the comments in the source code suppose it does. Possible all the following works within SL grids (update if you tried and found a feature not/working there), in OpenSim grids SL viewer 2.4 and 2.5 are tested and not supporting any grid with a loginuri containing characters that are (after converting to lowercase) not within the range of the characters: "abcdefghijklmnopqrstuvwxyz1234567890-_. " (last is a space). That excludes a large variety of grids, e.g. "localhost:9000" or "my.wonderful.grid/login". Also a slurl of the type "secondlife://my.wonderful.opensim.grid/region/my%20wonderful%20sim" is tested not to work.

For Kokua the plan is to support all as good as possible for OpenSimulators. However if a more interoperabilty oriented framework can be established probably effort rather is invested in that.

Getting debug messages

 * In Kokua tagged debug messages can be activated in app_settings/logcontrol.xml, the tag for slurls is "SLURL" (case sensitive).
 * (add your item)

Types

 * INVALID The slurl was invalid.
 * LOCATION The slurl points to a location.
 * HOME_LOCATION The slurl points to the users home location.
 * LAST_LOCATION The slurl points to the users last location.
 * APP The slurl points to an application.
 * HELP Not used. Maybe did or will point to a help page.

secondlife://
as commented in the source secondlife:// slurls are only supposed to work on secondlife maingrid, however contradicting that the code also tries to access the currently chosen grid, which, how it is done, only can be a secondlife simulator. Since LL states the source was the documentation extending this to be usable on opensimulators would conflict with the protocol definition (as given by the source).

x-grid-location-info://

 * x-grid-location-info://my.wonderful.grid.org/my%cool%simulator/1/2/3
 * x-grid-location-info://my.wonderful.grid.org/region/my%cool%simulator/1/2/3
 * x-grid-location-info://my.wonderful.grid.org/app/app_command/app_path1/app_path2?query

http:// and https://
same as x-grid-location-info:// but: this triggers only under certain circumstances as slurl (one of the following):
 * the server part (my.wonderful.grid.org) must be the current grid or
 * the server part must be maps.secondlife.com or
 * the server part must be slurl.com

hop://

 * hop://my.wonderful.grid.org/my%cool%simulator/1/2/3

more general the best idea so far is to have it as flexible as hop://[username[:pass]@]/ [/parameters] so that you also could hop://localhost/wordprocessor.exe/random.txt/line:42/row:23 if you only wanted to.

slurl paths

 * "secondlife" : location or app in secondlife main grid, e.g. "http://secondlife/region/some%20simulator/1/2/3
 * "slurl.com" : location in secondlife main grid
 * "maps.secondlife.com" :location in secondlife main grid
 * "app" : specifies the slurl as APP type like in secondlife://app/app_commmand/app_path/app_path2?appquery
 * "region" :specifies the slurl as LOCATION with region and optional coordinates like in http://my.wonderful.grid.org/region/my%20cool%20simulator/1/2/3
 * "home":specifies the slurl as LOCATION_HOME ... home coordinates are filled in
 * "last":specifies the slurl as LOCATION with last teleport coordinates filled in

additional interop friendly hop:// paths
This is to be done :)