<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fred+Rookstown</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fred+Rookstown"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Fred_Rookstown"/>
	<updated>2026-06-06T03:22:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:AW_Groupies/Chat_Logs/JoeLindenTPVBrownbag-2010-04-13&amp;diff=860733</id>
		<title>Talk:AW Groupies/Chat Logs/JoeLindenTPVBrownbag-2010-04-13</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:AW_Groupies/Chat_Logs/JoeLindenTPVBrownbag-2010-04-13&amp;diff=860733"/>
		<updated>2010-04-14T17:46:30Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;quot;Cost/Benefit&amp;quot; Debate?! ==&lt;br /&gt;
&lt;br /&gt;
I cannot stress enough how infuriating the following comment by Joe Linden is (quoted from the transcript):&lt;br /&gt;
&lt;br /&gt;
 [12:21] 	[Voice Transcript] Joe Linden: we&#039;ve ha a lot of internal debate around cost/benefit of OS&lt;br /&gt;
&lt;br /&gt;
I&#039;m sorry, but WHAT?  Developers have spent hundreds, if not &#039;&#039;thousands&#039;&#039; of man-hours developing patches for Linden Lab &#039;&#039;&#039;FOR FREE&#039;&#039;&#039;, and they have the gall to question whether it&#039;s cost-effective?  If there is truly such a debate going on, &#039;&#039;&#039;Linden Lab no longer deserves Open-Source community assistance.&#039;&#039;&#039;  They can pay someone $100USD an hour for patches from now on for all I care.  -- [[User:Fred Rookstown|Fred Rookstown]] 17:44, 14 April 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:AW_Groupies/Chat_Logs/JoeLindenTPVBrownbag-2010-04-13&amp;diff=860723</id>
		<title>Talk:AW Groupies/Chat Logs/JoeLindenTPVBrownbag-2010-04-13</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:AW_Groupies/Chat_Logs/JoeLindenTPVBrownbag-2010-04-13&amp;diff=860723"/>
		<updated>2010-04-14T17:44:49Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &amp;quot;Cost/Benefit&amp;quot; Debate?!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;quot;Cost/Benefit&amp;quot; Debate?! ==&lt;br /&gt;
&lt;br /&gt;
I cannot stress enough how infuriating the following comment by Joe Linden is (quoted from the transcript):&lt;br /&gt;
&lt;br /&gt;
 [12:21] 	[Voice Transcript] Joe Linden: we&#039;ve ha a lot of internal debate around cost/benefit of OS&lt;br /&gt;
&lt;br /&gt;
I&#039;m sorry, but WHAT?  Developers have spent hundreds, if not &#039;&#039;thousands&#039;&#039; of man-hours developing patches for Linden Lab &#039;&#039;&#039;FOR FREE&#039;&#039;&#039;, and they have the gall to question whether it&#039;s cost-effective?  If there is truly such a debate going on, &#039;&#039;Linden Lab no longer deserves Open-Source community assistance.&#039;&#039;  They can pay someone $100USD an hour for patches from now on for all I care.  -- [[User:Fred Rookstown|Fred Rookstown]] 17:44, 14 April 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=816782</id>
		<title>User:Fred Rookstown</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=816782"/>
		<updated>2010-03-22T04:11:10Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Blah blah blah, I do coding and stuff.&lt;br /&gt;
&lt;br /&gt;
== Current things I&#039;m working on ==&lt;br /&gt;
&lt;br /&gt;
Due to 3PVP shenanigans, I&#039;ve decided to no longer support the &amp;quot;open source&amp;quot; Linden Lab viewer nor any more of its protocols.  The company has become quite delusional in its expectations of 3rd-party, unpaid, open-source developers.&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=779102</id>
		<title>User:Fred Rookstown</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=779102"/>
		<updated>2010-03-02T23:43:42Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: Naaaah. nvm.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Blah blah blah, I do coding and stuff.&lt;br /&gt;
&lt;br /&gt;
== Current things I&#039;m working on ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Fred_Rookstown/2WayLSLToViewerComms]] - An analysis and (maybe) proposal for 2-way script to viewer communications.&lt;br /&gt;
* [[User:Fred_Rookstown/SilverLining|Cloud and Virtual Weather Improvements]]&lt;br /&gt;
* [http://luna-viewer.googlecode.com/ Luna Viewer] - A viewer that provides an enormous level of extensibility via the Lua scripting language.  May also implement the other stuff mentioned above.&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=779092</id>
		<title>User:Fred Rookstown</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=779092"/>
		<updated>2010-03-02T23:43:12Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Blah blah blah, I do coding and stuff.&lt;br /&gt;
&lt;br /&gt;
== Current things I&#039;m working on ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Fred_Rookstown/2WayLSLToViewerComms]] - An analysis and (maybe) proposal for 2-way script to viewer communications.&lt;br /&gt;
* [[User:Fred_Rookstown/SilverLining|Cloud and Virtual Weather Improvements]]&lt;br /&gt;
* [[User:Fred Rookstown/Plugin Architecture|Plugin Stuff]]&lt;br /&gt;
* [http://luna-viewer.googlecode.com/ Luna Viewer] - A viewer that provides an enormous level of extensibility via the Lua scripting language.  May also implement the other stuff mentioned above.&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=758642</id>
		<title>User:Fred Rookstown</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=758642"/>
		<updated>2010-02-25T02:18:57Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Blah blah blah, I do coding and stuff.&lt;br /&gt;
&lt;br /&gt;
== Current things I&#039;m working on ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Fred_Rookstown/2WayLSLToViewerComms]] - An analysis and (maybe) proposal for 2-way script to viewer communications.&lt;br /&gt;
* [[User:Fred_Rookstown/SilverLining|Cloud and Virtual Weather Improvements]]&lt;br /&gt;
* [http://luna-viewer.googlecode.com/ Luna Viewer] - A viewer that provides an enormous level of extensibility via the Lua scripting language.  May also implement the other stuff mentioned above.&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Linden_Lab_Official:Live_Data_Feeds&amp;diff=715962</id>
		<title>Linden Lab Official:Live Data Feeds</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Linden_Lab_Official:Live_Data_Feeds&amp;diff=715962"/>
		<updated>2010-02-02T07:13:14Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:API Portal/navigation&lt;br /&gt;
|style=style=&amp;quot;float:right;width:15em;padding-bottom:1em;&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
== Homepage stats feed == &lt;br /&gt;
&lt;br /&gt;
; XML feed&lt;br /&gt;
: http://secondlife.com/xmlhttp/secondlife.php&lt;br /&gt;
&lt;br /&gt;
; LLSD feed (With timestamps)&lt;br /&gt;
: http://secondlife.com/xmlhttp/homepage.php&lt;br /&gt;
&lt;br /&gt;
; Newline-seperated key-value pairs, with timestamps (for [[llHttpRequest]]())&lt;br /&gt;
:http://secondlife.com/httprequest/homepage.php&lt;br /&gt;
&lt;br /&gt;
These feeds display:&lt;br /&gt;
&lt;br /&gt;
* status: ONLINE when the grid is online. (What other values are presented?)&lt;br /&gt;
* signups (in # of accounts): number of Resident accounts that are open and in good standing; updated daily&lt;br /&gt;
* logged_in_last_60 (in # of accounts): number of Resident accounts that have logged in in the past 60 days; updated daily&lt;br /&gt;
* transactions (in US$): amount of resident-to-resident L$ transactions for past 24 hours divided by the average LindeX exchange rate for past 24 hours; updated every 30 minutes&lt;br /&gt;
* inworld (in # of accounts): number of Resident accounts currently logged in; updated every 3 minutes&lt;br /&gt;
&lt;br /&gt;
== LindeX data feeds == &lt;br /&gt;
&lt;br /&gt;
; [[LLSD]]-formatted XML&lt;br /&gt;
:http://secondlife.com/xmlhttp/lindex.php&lt;br /&gt;
&lt;br /&gt;
;Newline-separated key-value pairs for [[llHttpRequest]]()&lt;br /&gt;
:http://secondlife.com/httprequest/lindex.php&lt;br /&gt;
&lt;br /&gt;
The LindeX feeds are updated every 15 minutes and include one set of timestamps.&lt;br /&gt;
&lt;br /&gt;
[https://blogs.secondlife.com/community/features/blog/2006/10/03/new-data-feeds-1 Source]&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Bug_triage/2010-01-25&amp;diff=707332</id>
		<title>Bug triage/2010-01-25</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Bug_triage/2010-01-25&amp;diff=707332"/>
		<updated>2010-01-18T04:09:06Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: Yell at me if I&amp;#039;m doing it wrong. :|&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Edit below to add or change issues.  To update the future formatting and text of this page, change [[Template:Triage Template]] instead. --&amp;gt;{{Bug triage}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{{Triage Template/schedule&lt;br /&gt;
|Date=2010-01-18&lt;br /&gt;
|Time=12:00 NOON SLT&lt;br /&gt;
|Place=[http://slurl.com/secondlife/Hippotropolis/241/32/23 Hippotropolis Meeting area].&lt;br /&gt;
|}}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next meeting: {{#var:date}} at {{#var:time}} at {{#var:place}}.  See [[Bug triage]] for details.&lt;br /&gt;
&lt;br /&gt;
== Fast Track Import ==&lt;br /&gt;
(Move bugs here that have solid repros, or valid patches that you have reviewed)&lt;br /&gt;
&lt;br /&gt;
* {{jira|VWR-6484}} - Votes: 19 - Minimap height indicators all show &amp;quot;&amp;quot;lower than me&amp;quot;&amp;quot; if over the old 768 build ceiling - {{User|Buckaroo Mu}}&lt;br /&gt;
** Status?&lt;br /&gt;
* {{jira|VWR-4137}} - Votes: 22 - Date columns in tables are sorted alphabetically - {{User|Celierra Darling}}&lt;br /&gt;
** Only two of the three were fixed.&lt;br /&gt;
* {{jira|SVC-4937}} - Votes: 29 - &amp;quot;The server is experiencing unexpected difficulties&amp;quot; error when saving a notecard inside a prim. - {{User|Bones Outlander}}&lt;br /&gt;
** Requesting status update be posted to pJIRA&lt;br /&gt;
&lt;br /&gt;
== Hot by Vote ==&lt;br /&gt;
[http://jira.secondlife.com/secure/IssueNavigator.jspa?mode=hide&amp;amp;requestId=11885 High Voted Bugs]&lt;br /&gt;
&lt;br /&gt;
* {{jira|SVC-5239}} - Votes: 97 - Details... button on PERMISSION_DEBIT dialog triggers run_time_permissions() with a deny action - {{User|ZenMondo Wormser}}&lt;br /&gt;
&lt;br /&gt;
== Misc Pool ==&lt;br /&gt;
[http://jira.secondlife.com/secure/IssueNavigator.jspa?mode=hide&amp;amp;requestId=11885 Misc Pool]&lt;br /&gt;
&lt;br /&gt;
* {{jira|MISC-3766}} - Votes: 0 - Logged first here in JIRA, referred over to tech support, left unresolved and told to re-enter here as a bug. - {{User|Laneybug Macbain}}&lt;br /&gt;
* {{jira|SVC-5237}} - Votes: 0 - LLGetLocalPos - {{User|Benjamin Bowenford}}&lt;br /&gt;
* {{jira|VWR-16132}} - Votes: 0 - Parts of Avatar become invisable when wearing ALPHA texture cloth(s)ing - {{User|Master Kane}} - Last Triaged: 11/16/2009 9:26 AM&lt;br /&gt;
* {{jira|VWR-9093}} - Votes: 4 - Female shape, torso muscularity slider bug... - {{User|Lanfer Christensen}}&lt;br /&gt;
* {{jira|SVC-4900}} - Votes: 3 - llUnescapeURL does not unescape + character - {{User|Dedric Mauriac}}&lt;br /&gt;
* {{jira|SVC-4860}} - Votes: 2 - when teleport routing is set to blocked people can not enter directly into parcel when i tp them myself - {{User|Alexandrea Fride}}&lt;br /&gt;
* {{jira|VWR-12870}} - Votes: 2 - Loggong out of linux viewr version 1.22.11.113941 hangs computer - {{User|Corin Clary}} - Last Triaged: 1/5/2010 10:08 AM&lt;br /&gt;
* {{jira|VWR-16535}} - Votes: 2 - Unicode displays as question marks in object name/descriptions - {{User|Dedric Mauriac}}&lt;br /&gt;
* {{jira|VWR-16294}} - Votes: 7 - When using llDetachFromAvatar() after teleport the objects still appears attached to the user but not to other residents and becomes almost impossible to detatch. - {{User|Madeline Kaligawa}}&lt;br /&gt;
* {{jira|VWR-5710}} - Votes: 6 - No-transfer or no-modify objects can&#039;t be copied into attachments. - {{User|Argent Stonecutter}} - Last Triaged: 11/6/2008 11:37 AM&lt;br /&gt;
* {{jira|VWR-8468}} - Votes: 6 - HUD group does not change when active group changed - {{User|Annie Obscure}} - Last Triaged: 8/13/2008 9:47 AM&lt;br /&gt;
* {{jira|WEB-673}} - Votes: 6 - http://secondlife.com/support/downloads.php requires javascript - {{User|Kephra Nurmi}}&lt;br /&gt;
* {{jira|VWR-11360}} - Votes: 5 - Linux beta crash on loading for Intel 945 series - {{User|Heather Kincess}}&lt;br /&gt;
* {{jira|VWR-14070}} - Votes: 5 - terrain blending not rendering with new viewer update - {{User|Uri Jefferson}}&lt;br /&gt;
* {{jira|VWR-15844}} - Votes: 5 - &amp;quot;llDetectedTouchPos does not return relative positition from attach poing, but position on screen when attached as a HUD&amp;quot; - {{User|Tron Kaffebaum}}&lt;br /&gt;
* {{jira|VWR-2727}} - Votes: 5 - Primatives sometimes disappear from view. Depends on direction of view. - {{User|Mupsey Greenwood}}&lt;br /&gt;
* {{jira|VWR-3291}} - Votes: 5 - &amp;quot;Arrow Keys Always Move Avatar While Chatting&amp;quot;, when disabled, should allow up arrow to do chat history. - {{User|Gigs Taggart}}&lt;br /&gt;
* {{jira|VWR-6001}} - Votes: 5 - Landing on a slope the avatar turns and flies downhill - {{User|JC Sandial}}&lt;br /&gt;
* {{jira|WEB-645}} - Votes: 5 - Friendslist not any longer sorted by name - {{User|Bibi Book}}&lt;br /&gt;
* {{jira|MISC-1960}} - Votes: 4 - Make PJIRA name capitalization match Second Life capitalization - {{User|Data Linden}}&lt;br /&gt;
* {{jira|MISC-2860}} - Votes: 4 - SLIM incorrectly show friends as offline who are actually logged on to SL - {{User|absolute balderdash}}&lt;br /&gt;
* {{jira|MISC-3256}} - Votes: 4 - Route 9 parcels mislabeled - {{User|Athanasius Skytower}}&lt;br /&gt;
* {{jira|SVC-1003}} - Votes: 4 - llLoadURL does not open secondlife:// slurls - {{User|Emma Nowhere}}&lt;br /&gt;
* {{jira|SVC-1242}} - Votes: 4 - Texture Animation is not copied (llSetTextureAnim) - {{User|Haravikk Mistral}}&lt;br /&gt;
* {{jira|SVC-2066}} - Votes: 4 - Loss of sync in AO walk when going over even tiniest of surface irregualrity - {{User|Ravanne Sullivan}}&lt;br /&gt;
* {{jira|SVC-2310}} - Votes: 4 - Physics Object sinking - {{User|Jay Karlfeldt}}&lt;br /&gt;
* {{jira|SVC-4685}} - Votes: 1 - Not possible to drop inventory into objects which are using an full alpha texture (when highlight transparent is disabled) - {{User|EddyFragment Robonaught}}&lt;br /&gt;
* {{jira|SVC-471}} - Votes: 1 - llGetNextEmail no longer recieves mail from UUID@lsl.secondlife.com - {{User|Kae Fox}}&lt;br /&gt;
* {{jira|SVC-4895}} - Votes: 1 - tools&amp;gt;Recompile Scripts in Selection &amp;amp; Reset Scripts in Selection intermitantly fails to apply to all prims in link set. - {{User|EddyFragment Robonaught}} - Last Triaged: 10/7/2009 7:51 AM&lt;br /&gt;
* {{jira|SVC-4994}} - Votes: 1 - &amp;quot;vehicles won&#039;t start, or run for only a couple seconds&amp;quot; - {{User|Frank Skosh}}&lt;br /&gt;
* {{jira|SVC-5095}} - Votes: 1 - llGetOwnerKey on detaching object is incorrect - {{User|Sierra Janus}}&lt;br /&gt;
* {{jira|SVC-667}} - Votes: 1 - llModifyLand does not work while the scripted object is dragged by an avatar - {{User|Hiro Pendragon}}&lt;br /&gt;
* {{jira|SVC-893}} - Votes: 1 - Right shift operator (&amp;gt;&amp;gt;) fills extra bits with 1 instead of 0 when the most significant bit of the number is set. - {{User|Radian Artaud}}&lt;br /&gt;
* {{jira|VWR-10240}} - Votes: 1 - Viewer crash while taking snapshot (with fanciful proportion) - {{User|Gally Young}}&lt;br /&gt;
* {{jira|VWR-10429}} - Votes: 1 - Snapshot to disk hang on new unibody MacBook Pro with Nvidia 9600M GT - {{User|Rob danton}}&lt;br /&gt;
* {{jira|VWR-10486}} - Votes: 1 - Worn vehicle attachments lose their rotation when viewed approaching from out of visual range or teleporting to vehicle. - {{User|pointside sunbelter}}&lt;br /&gt;
* {{jira|VWR-11025}} - Votes: 1 - Coalesced items lost after refused rezing (similar to VWR-7194) - {{User|Sharon Gardenvale}}&lt;br /&gt;
* {{jira|VWR-11430}} - Votes: 1 - HIgh Res Snapshots saved to hard disk are solid black - {{User|AM Radio}}&lt;br /&gt;
* {{jira|VWR-11808}} - Votes: 1 - &amp;quot;No Notices, No Roles, No Inviting of People in a Group where I am the Owner!&amp;quot; - {{User|Cathrin Larsson}}&lt;br /&gt;
* {{jira|VWR-11968}} - Votes: 1 - Linux viewer locks itermittently when AV&#039;s in FOV - {{User|Pervus Maximus}}&lt;br /&gt;
* {{jira|VWR-12014}} - Votes: 1 - Some Mac keyboard shortcuts are essentially wrong - {{User|Nava Muni}}&lt;br /&gt;
* {{jira|VWR-12092}} - Votes: 1 - Unable to gracefully Undo edits made when Edit Linked Parts is selected and Root Prim is one of the prims moved - {{User|sera lok}}&lt;br /&gt;
* {{jira|VWR-1227}} - Votes: 1 - Saving texture makes you crash - {{User|Aradia Dielli}}&lt;br /&gt;
* {{jira|VWR-12307}} - Votes: 1 - Avatar gets traped in the void space - {{User|shamus carter}}&lt;br /&gt;
* {{jira|VWR-12612}} - Votes: 1 - &amp;quot;Small black spots flickering all over avatar when switching on Atmospheric Shaders in Prefs-&amp;gt;Graphics, also skin texture errors occur&amp;quot; - {{User|Lamat Lisle}}&lt;br /&gt;
* {{jira|VWR-12745}} - Votes: 1 - render-pipeline brach (R 2079) RenderDeferred failing to enable - Patch - {{User|Shyotl Kuhr}}&lt;br /&gt;
* {{jira|VWR-13305}} - Votes: 1 - flickering alpha windows and trees - {{User|blaze nielsen}}&lt;br /&gt;
* {{jira|VWR-13453}} - Votes: 1 - SLim icon difficult to see in Vista - {{User|bobbyb30 swashbuckler}}&lt;br /&gt;
* {{jira|VWR-13963}} - Votes: 1 - Voice incompatible with PulseAudio - {{User|Vasko Hawker}}&lt;br /&gt;
* {{jira|VWR-14112}} - Votes: 1 - Water Disappears / High Packet Loss When Basic Shaders Enabled - {{User|Akamu Lurra}} - Last Triaged: 9/1/2009 1:17 PM&lt;br /&gt;
* {{jira|VWR-14283}} - Votes: 1 - After new update problems with graphics - {{User|Barziban Castaignede}}&lt;br /&gt;
* {{jira|VWR-14317}} - Votes: 1 - &amp;quot;SLVoice process continues to run even when SL is quit, hogs CPU and RAM&amp;quot; - {{User|Ochi Wolfe}}&lt;br /&gt;
* {{jira|VWR-14336}} - Votes: 1 - Textures don&#039;t load correctly in some random cases - {{User|Raul Crimson}}&lt;br /&gt;
* {{jira|VWR-14516}} - Votes: 1 - Private Adult sims showing up in seach places as PG because their group is listed as PG - {{User|Emily Darrow}}&lt;br /&gt;
* {{jira|VWR-14598}} - Votes: 1 - &amp;quot;Active Speakers list, voice &#039;dot&#039; and level indicator failing&amp;quot; - {{User|Charlette Proto}}&lt;br /&gt;
* {{jira|VWR-14800}} - Votes: 1 - Viewer Crash on Mac OS when uploading any images - {{User|Kye Capelo}}&lt;br /&gt;
* {{jira|VWR-15044}} - Votes: 1 - I cannot detach Huds attached at bottom levels - {{User|Ren Javelin}}&lt;br /&gt;
* {{jira|VWR-15311}} - Votes: 1 - Copying a linked set of prims makes the prims location/rotation change in the copy - {{User|Beatrix MacKay}}&lt;br /&gt;
* {{jira|VWR-15813}} - Votes: 1 - Sculpt textures are not loaded. - {{User|AshleyLi Hoobinoo}}&lt;br /&gt;
* {{jira|VWR-15820}} - Votes: 1 - hover text does not fade out soon enough for megaprims - {{User|Doran Zemlja}} - Last Triaged: 11/23/2009 8:38 AM&lt;br /&gt;
* {{jira|VWR-2649}} - Votes: 1 - llTargetOmega does not work properly on attachments - {{User|eren padar}}&lt;br /&gt;
* {{jira|VWR-4089}} - Votes: 1 - Enabling certain beacons causes Windlight viewer to hang - {{User|Davey Callisto}}&lt;br /&gt;
* {{jira|VWR-4423}} - Votes: 1 - win_crash_logger compile error - {{User|yukiko omegamu}}&lt;br /&gt;
* {{jira|VWR-4874}} - Votes: 1 - Script-Changes in attached objects get lost when I re-attach it. - {{User|MartinRJ Fayray}}&lt;br /&gt;
* {{jira|VWR-5863}} - Votes: 1 - Crashed when trying to remove typing animation - {{User|Nikos Carling}}&lt;br /&gt;
* {{jira|VWR-6006}} - Votes: 1 - &amp;quot;Keyboard maping error on MAC with viewer SecondLife_1_19_1_4.dmg: Ctrl-Click (No mose present) no longer provides the same result as Right click when using a mousr with two buttons. No way to &amp;quot;&amp;quot;Touch&amp;quot;&amp;quot; an object unless two button mouse is used.&amp;quot; - {{User|Enysy Mikita}}&lt;br /&gt;
* {{jira|VWR-6068}} - Votes: 1 - In Full Screen (Alt-Ctrl-F1) Whirling Particle Effects Visible Around Scripted Objects (Forcing Turning All Particles Off for Machinema Making) - {{User|sitearm madonna}}&lt;br /&gt;
* {{jira|VWR-6592}} - Votes: 1 - &amp;quot;Joystick - simultaneous walking/flying and turning, turning is unresponsive&amp;quot; - {{User|Jorgen Friis}}&lt;br /&gt;
* {{jira|VWR-7022}} - Votes: 1 - &amp;quot;PARCEL_MEDIA_COMMAND_AGENT, llDetectedKey(0)]); doesn&#039;t work correctly.&amp;quot; - {{User|spider garrigus}}&lt;br /&gt;
* {{jira|VWR-7092}} - Votes: 1 - Dividing land issue with latest viewer version - {{User|Kevin Ludwig}}&lt;br /&gt;
* {{jira|VWR-8478}} - Votes: 1 - &amp;quot;Uploading not working, Vista SP1 (64 and 32 bit)&amp;quot; - {{User|Saiki Spirt}}&lt;br /&gt;
* {{jira|VWR-9037}} - Votes: 1 - Failure to Load Gestures bottlenecking inventory downloading - {{User|Ashlin McMahon}}&lt;br /&gt;
* {{jira|VWR-9271}} - Votes: 1 - SL requiring duplicate build commands and teleports - {{User|wayfinder wishbringer}}&lt;br /&gt;
* {{jira|VWR-9373}} - Votes: 1 - Freezing and Crashing when switching from Antialiasing and/or Anisotropic Filtering. - {{User|Jessicka Graves}}&lt;br /&gt;
* {{jira|SVC-3514}} - Votes: 35 - llLoadUrl (and other LLMessageBox-generating functions) should be per-agent throttled, not delayed - {{User|Darling Brody}}&lt;br /&gt;
&lt;br /&gt;
== Pre-meeting activity ==&lt;br /&gt;
Some issues will be resolved in the course of building this agenda.  Rather than deleting them from the proposed agenda, move the issue and associated discussion into the appropriate section below.&lt;br /&gt;
&lt;br /&gt;
=== Imported ===&lt;br /&gt;
&lt;br /&gt;
=== Resolved ===&lt;br /&gt;
&lt;br /&gt;
== Transcript ==&lt;br /&gt;
Transcript is/will be at [[Bug triage/{{#var:date}}/Transcript]]&lt;br /&gt;
&lt;br /&gt;
== Creating An Agenda ==&lt;br /&gt;
{{Bug List Instructions}}&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=698353</id>
		<title>User:Fred Rookstown</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=698353"/>
		<updated>2010-01-06T05:46:50Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: Adding FlexLife link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Blah blah blah, I do coding and stuff.&lt;br /&gt;
&lt;br /&gt;
== Current things I&#039;m working on ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Fred_Rookstown/2WayLSLToViewerComms]] - An analysis and (maybe) proposal for 2-way script to viewer communications.&lt;br /&gt;
* [[User:Fred_Rookstown/SilverLining|Cloud and Virtual Weather Improvements]]&lt;br /&gt;
* [http://flexlife.nexisonline.net/ FlexLife Viewer] - A viewer that provides an enormous level of extensibility via the Lua scripting language.  May also implement the other stuff mentioned above.&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Linden_Lab_Official_talk:Scripted_Agent_Status&amp;diff=689613</id>
		<title>Linden Lab Official talk:Scripted Agent Status</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Linden_Lab_Official_talk:Scripted_Agent_Status&amp;diff=689613"/>
		<updated>2009-12-17T01:24:59Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: Created page with &amp;#039;== Required ==  Does anyone know whether marking bots as bots is *required*?  I have a bot I&amp;#039;m working on, but it&amp;#039;s on an alt account of mine that I occasionally use for non-bot ...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Required ==&lt;br /&gt;
&lt;br /&gt;
Does anyone know whether marking bots as bots is *required*?  I have a bot I&#039;m working on, but it&#039;s on an alt account of mine that I occasionally use for non-bot stuff;  Do have to set that account as a bot? -- [[User:Fred Rookstown|Fred Rookstown]] 01:24, 17 December 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/SilverLining&amp;diff=643633</id>
		<title>User:Fred Rookstown/SilverLining</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/SilverLining&amp;diff=643633"/>
		<updated>2009-11-03T20:29:08Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SilverLining is a (rather expensive; $1500 USD) weather SDK by [http://sundog-soft.com Sundog Software].  Although its emphasis is in rendering full 3D volumetric clouds in realtime and at high speed, it can also create spectacular weather effects, such as:&lt;br /&gt;
&lt;br /&gt;
* Precipitation - SNow, rain, sleet, thunderstorms&lt;br /&gt;
* Heavenly body simulation (with precession and appropriate cloud highlighting)&lt;br /&gt;
* weather-related timezone management&lt;br /&gt;
* Scene lighting&lt;br /&gt;
&lt;br /&gt;
In relation to the Second Life viewer, I am planning to replace the ugly legacy particle clouds with 3D volumetric ones from SilverLining.  I may also end up replacing the unrealistic WL skydome with the SilverLining one, which appears to be greatly superior.&lt;br /&gt;
&lt;br /&gt;
== Progress ==&lt;br /&gt;
&lt;br /&gt;
(Cancelled for now, working on replacing the rendering engine with OpenScenegraph)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Clouds&#039;&#039;&#039;:  0%&lt;br /&gt;
* &#039;&#039;&#039;Skydome&#039;&#039;&#039;: TBA&lt;br /&gt;
* &#039;&#039;&#039;Scene lighting&#039;&#039;&#039;: 0%&lt;br /&gt;
* &#039;&#039;&#039;Funding:&#039;&#039;&#039;$0/1500 (Using evaluation SDK, 5 minutes max)&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=595643</id>
		<title>User:Fred Rookstown/2WayLSLToViewerComms</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=595643"/>
		<updated>2009-10-14T01:43:10Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall contain analyses and protocol proposals for 2-way script/viewer communications, in an attempt to improve communications between scripts and viewers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feel free to add in your own thoughts and suggestions.&#039;&#039;&#039;  I am also willing to host an &amp;quot;office hour&amp;quot; sort of thing at my lounge in Nolan if you wish to discuss this face-to-face with others in a realtime environment.&lt;br /&gt;
&lt;br /&gt;
== Why? ==&lt;br /&gt;
&lt;br /&gt;
In this age of OpenSource viewers, problems begin to crop up as viewers are modified to support additions to the client code that would not be possible via LSL, such as fast, reliable client-side radars and client-side BDSM restraints.  One of the most major issues encountered by developers is the transmission of data back and fourth between LSL and the client itself. Although several methods exist, they can prove to inadequate. In addition, since no current standard of communication currently exists for reliable client&amp;lt;-&amp;gt; server communications, developers wishing to integrate their products with the client must go through a trial and error process in order to find the best solution, and even then, the solution may not be a reliable communications channel.&lt;br /&gt;
&lt;br /&gt;
In addition, 2-way variable communications between LSL and client-side scripts (like Lua, being developed in the Emerald viewer) would open a gigantic new realm of possibilities in SL content creation that would not be possible with the current methods.&lt;br /&gt;
&lt;br /&gt;
This wiki page aims to propose a reliable, simple-to-use method of sharing data between server-side LSL and the client itself.&lt;br /&gt;
&lt;br /&gt;
== Communications methods ==&lt;br /&gt;
&lt;br /&gt;
Since I am by no means an expert at messing with the SL client, feel free to correct me if you feel I am wrong with any point.&lt;br /&gt;
&lt;br /&gt;
=== LLMessageSystem ===&lt;br /&gt;
&lt;br /&gt;
The method LL uses to share information with their servers is via the LLMessageSystem class, which sends and receives raw TCP or UDP packets from the servers and deciphers them into a manageable format. It also performs automatic bandwidth throttling. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* LLMessageSystem is the most direct way of talking to the sim server, which is where the scripts run.  &lt;br /&gt;
* Relatively easy to use&lt;br /&gt;
* Already in place&lt;br /&gt;
* Automatically (de)serializes data as it&#039;s sent; Little to no typecasting required.&lt;br /&gt;
* Totally transparent to the user&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Would require a message.xml change to implement a new message type, and on both ends (servers and viewer)&lt;br /&gt;
* Would require new LSL communications functions.&lt;br /&gt;
* Not necessarily the most reliable method.&lt;br /&gt;
* WOuld require a new capability to notify the server that the channel sharing code is available.&lt;br /&gt;
&lt;br /&gt;
=== HTTP Client/Server ===&lt;br /&gt;
&lt;br /&gt;
HTTP transmissions to and form the client and servers.  Could be XMLRPC, REST, or just plain HTTP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Somewhat fast, although it depends on application and workload.  &lt;br /&gt;
* More reliable than LLMessageSystem&lt;br /&gt;
* Basic classes in place.&lt;br /&gt;
* Can send many datatypes.&lt;br /&gt;
* Can send a large volume of data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* More overhead than LLMessages.&lt;br /&gt;
* Would require operation of an HTTP server on the client to be able to share data to the client, would be difficult to access behind a NAT/Firewall (polling the server would lag the client and server to death).&lt;br /&gt;
* Would require significant LL-side changes to be able to handle HTTP data faster.&lt;br /&gt;
* Raw HTTP requires significant data processing in order to convert from the request/response to client-accessible data, many typecasting operations to handle, including unicode.&lt;br /&gt;
&lt;br /&gt;
=== Chat ===&lt;br /&gt;
&lt;br /&gt;
Chat communications is currently used by RestrainedLife and PAR/Emerald RadarChat, in order to convey information back and forth between the script and viewer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Always in place.&lt;br /&gt;
* Can both send and receive data through NATs and firewalls.&lt;br /&gt;
* Simple to send data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039; &lt;br /&gt;
* Requires the reservation of a channel for use with the component.&lt;br /&gt;
* Malicious/false data can be sent more easily than other methods.&lt;br /&gt;
* 1024 character limit, restricting size.&lt;br /&gt;
* Not reliable at all; Even minor lag can seriously affect communications.&lt;br /&gt;
* Easy for users to identify an open channel; Just listen on the chat channel.  Bad for vendors and privacy in general.&lt;br /&gt;
&lt;br /&gt;
=== Jabber/XMPP ===&lt;br /&gt;
&lt;br /&gt;
From [http://www.xmpp.org/about/ XMPP.org]:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;The Extensible Messaging and Presence Protocol (XMPP) is an open technology for real-time communication, which powers a wide range of applications including instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data. The technology pages provide more information about the various XMPP &amp;quot;building blocks&amp;quot;. Several books about Jabber/XMPP technologies are available, as well.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Open source&lt;br /&gt;
* Well-known protocol&lt;br /&gt;
* Has [http://xmpp.org/rfcs/ documented standards]&lt;br /&gt;
* Scalable (Decentralized, used in Google Talk)&lt;br /&gt;
* May shoehorn in long-overdue group chat fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Requires implementation on both the servers and client.&lt;br /&gt;
** LL has already deemed XMPP-based messaging services too immature to implement.&lt;br /&gt;
* May require significant code changes to handle XMPP safely and securely.&lt;br /&gt;
* Additional libraries required on both servers and client&lt;br /&gt;
* Licensing may be an issue.&lt;br /&gt;
&lt;br /&gt;
== LSL methods ==&lt;br /&gt;
&lt;br /&gt;
What I am considering, for LSL, is the addition of functions to establish, maintain, and terminate a data sharing channel.  A script would request a channel to a service on a particular agent (normally the owner but may be otherwise in other applications), and, if the server has been notified via CAPS (on login) that the agent has datashare channels, and that the specific service has been registered on that channel, the server will tell the script to go ahead with the operation (via an event or return value).  The script then receives the client&#039;s shared variables, and the script can register its own shared variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer datashare; // Resource pointer to the channel.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
         datashare = llRequestDatashare(llGetOwner(),&amp;quot;Radar&amp;quot;,0); // 3rd option is a service version requirement.  0 means any version, non-zero means that the server will check if the service is at least that version before allowing it.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    datashare(integer datashare_pointer,integer update_type)&lt;br /&gt;
    {&lt;br /&gt;
         if(update_type==DATASHARE_AVAILABLE &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llShareString(datashare,&amp;quot;ScriptRegion&amp;quot;,llGetRegionName()); // 3rd argument can be left blank to receive the contents of the variable.&lt;br /&gt;
         }&lt;br /&gt;
// Sent when the viewer has changed something in the channel.&lt;br /&gt;
         if(update_type==DATASHARE_CHANGED &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llSay(0,&amp;quot;Viewer channel: &amp;quot;+llShareString(datashare,&amp;quot;ViewerChannel&amp;quot;,&amp;quot;&amp;quot;));&lt;br /&gt;
         }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Functions/Keywords to Implement ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning on implementing Datashares on OpenSim during the summer.  The following is an LSL-side roadmap.&lt;br /&gt;
&lt;br /&gt;
* Datashare Management&lt;br /&gt;
** [[User:Fred_Rookstown/llRequestDatashare|llRequestDatashare]]&lt;br /&gt;
** [[User:Fred_Rookstown/llCloseDatashare|llCloseDatashare]]&lt;br /&gt;
* Datashare variables&lt;br /&gt;
** Set&lt;br /&gt;
*** [[User:Fred_Rookstown/llShareString|llShareString]]&lt;br /&gt;
*** [[User:Fred_Rookstown/llShareInteger|llShareInteger]]&lt;br /&gt;
*** [[User:Fred_Rookstown/llShareFloat|llShareFloat]]&lt;br /&gt;
*** [[User:Fred_Rookstown/llShareKey|llShareKey]]&lt;br /&gt;
*** [[User:Fred_Rookstown/llShareList|llShareList]]&lt;br /&gt;
&lt;br /&gt;
=== Implementations ===&lt;br /&gt;
&lt;br /&gt;
The Emerald viewer uses a variant of this (called GreenLife Utility Streams).&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=SLDev_Resident_Names&amp;diff=493123</id>
		<title>SLDev Resident Names</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=SLDev_Resident_Names&amp;diff=493123"/>
		<updated>2009-09-18T19:03:56Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: + Moi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[SLDev]] &amp;gt; &#039;&#039;&#039;SLDev Resident Names&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most things associated with Second Life development (in-world meetings, wiki editing, JIRA) are done using Second Life names, but posting on the mailing list is often done using another name (real name or non-Second Life alias).  This page is intended as a decoder ring for people to figure out who&#039;s who on the [[SLDev]] mailing list.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t reveal any information you don&#039;t want to, but if you post messages to the SLDev mailing list under a different name than your Second Life Resident name, please consider dropping your name in the table. (Tip:  putting three tildes, e.g. &amp;quot;&amp;lt;nowiki&amp;gt;~~~&amp;lt;/nowiki&amp;gt;&amp;quot;, will automatically convert to your name and a link to your username on this wiki) :&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; class=sortable&lt;br /&gt;
|-&lt;br /&gt;
!| SLDev Posting Name &lt;br /&gt;
!| Second Life Resident Name&lt;br /&gt;
|-&lt;br /&gt;
| Andre Roche || [[User:Ryozu Kojima|Ryozu Kojima]]&lt;br /&gt;
|-&lt;br /&gt;
| Andy Estes || [[User:Drewan Keats|Drewan Keats]]&lt;br /&gt;
|-&lt;br /&gt;
| Callum Lerwick || [[User:Seg Baphomet|Seg Baphomet]]&lt;br /&gt;
|-&lt;br /&gt;
| Dirk Moerenhout || [[User:Blakar Ogre|Blakar Ogre]]&lt;br /&gt;
|-&lt;br /&gt;
| Dzonatas || [[User:Dzonatas Sol|Dzonatas Sol]]&lt;br /&gt;
|-&lt;br /&gt;
| Ettore Pasquini || [[User:Abstra Apparatchik|Abstra Apparatchik]]&lt;br /&gt;
|-&lt;br /&gt;
| Harold &amp;quot;LabRat&amp;quot; Brown || [[User:Thraxis Epsilon|Thraxis Epsilon]] &lt;br /&gt;
|-&lt;br /&gt;
| Jason Giglio || [[User:Gigs Taggart|Gigs Taggart]]&lt;br /&gt;
|-&lt;br /&gt;
| John Hurliman || [[User:Eddy Stryker|Eddy Stryker]]&lt;br /&gt;
|-&lt;br /&gt;
| Laurent Laborde || [[User:Kerunix Flan|Kerunix Flan]]&lt;br /&gt;
|-&lt;br /&gt;
| Lawson English || [[User:Saijanai Kuhn|Saijanai Kuhn]]&lt;br /&gt;
|-&lt;br /&gt;
| Matt Kimmel || [[User:Feep Larsson|Feep Larsson]]&lt;br /&gt;
|-&lt;br /&gt;
| Mike Monkowski || [[User:Mm Alder|Mm Alder]]&lt;br /&gt;
|-&lt;br /&gt;
| Nik Radford || [[User:Nik Woodget|Nik Woodget]]&lt;br /&gt;
|-&lt;br /&gt;
| Neovo Geesink || [[User:Neovo Geesink|Neovo Geesink]]&lt;br /&gt;
|-&lt;br /&gt;
| Paul Nolan || [[User:Paul Churchill|Paul Churchill]]&lt;br /&gt;
|-&lt;br /&gt;
| Rob Lanphier || [[User:Rob Linden|Rob Linden]] &lt;br /&gt;
|-&lt;br /&gt;
| Ben B yer || [[User:Bushing Spatula|Bushing Spatula]]&lt;br /&gt;
|-&lt;br /&gt;
| Dana Fagerstrom || [[User:Whoops Babii|Whoops Babii]]&lt;br /&gt;
|-&lt;br /&gt;
| Dirk Husemann || [[User:Dr Scofield|Dr Scofield]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark Burhop|| [[User:Burhop Piccard|Burhop Piccard]]&lt;br /&gt;
|-&lt;br /&gt;
| Stewart Berntson || [[User:Mydnight Miklos|Mydnight Miklos]]&lt;br /&gt;
|-&lt;br /&gt;
| Aimee Walton || [[User:Aimee Trescothick|Aimee Trescothick]]&lt;br /&gt;
|-&lt;br /&gt;
| Robin Cornelius || [[User:Robin Cornelius|Robin Cornelius]] &amp;amp; [[User:Michelle2 Zenovka|Michelle2 Zenovka]]&lt;br /&gt;
|-&lt;br /&gt;
| Henrik Hodne || [[User:Henrik Svendsen|Henrik Svendsen]]&lt;br /&gt;
|-&lt;br /&gt;
| Tigro Spottystripes || [[User:TigroSpottystripes Katsu|TigroSpottystripes Katsu]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;Abhセレチャイベル&amp;quot;|| [[User:Freija Yoshikawa|Freija Yoshikawa]]&lt;br /&gt;
|-&lt;br /&gt;
| zai || [[User:Zai Lynch|Zai Lynch]]&lt;br /&gt;
|-&lt;br /&gt;
| Rob Nelson || [[User:Fred Rookstown|Fred Rookstown]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/SilverLining&amp;diff=491252</id>
		<title>User:Fred Rookstown/SilverLining</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/SilverLining&amp;diff=491252"/>
		<updated>2009-09-16T03:48:59Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: Created page with &amp;#039;SilverLining is a (rather expensive; $1500 USD) weather SDK by [http://sundog-soft.com Sundog Software].  Although its emphasis is in rendering full 3D volumetric clouds in realt...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SilverLining is a (rather expensive; $1500 USD) weather SDK by [http://sundog-soft.com Sundog Software].  Although its emphasis is in rendering full 3D volumetric clouds in realtime and at high speed, it can also create spectacular weather effects, such as:&lt;br /&gt;
&lt;br /&gt;
* Precipitation - SNow, rain, sleet, thunderstorms&lt;br /&gt;
* Heavenly body simulation (with precession and appropriate cloud highlighting)&lt;br /&gt;
* weather-related timezone management&lt;br /&gt;
* Scene lighting&lt;br /&gt;
&lt;br /&gt;
In relation to the Second Life viewer, I am planning to replace the ugly legacy particle clouds with 3D volumetric ones from SilverLining.  I may also end up replacing the unrealistic WL skydome with the SilverLining one, which appears to be greatly superior.&lt;br /&gt;
&lt;br /&gt;
== Progress ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Clouds&#039;&#039;&#039;:  20%&lt;br /&gt;
* &#039;&#039;&#039;Skydome&#039;&#039;&#039;: TBA&lt;br /&gt;
* &#039;&#039;&#039;Scene lighting&#039;&#039;&#039;: 0%&lt;br /&gt;
* &#039;&#039;&#039;Funding:&#039;&#039;&#039;$0/1500 (Using evaluation SDK, 5 minutes max)&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=491242</id>
		<title>User:Fred Rookstown</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=491242"/>
		<updated>2009-09-16T03:41:31Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Blah blah blah, I do coding and stuff.&lt;br /&gt;
&lt;br /&gt;
== Current things I&#039;m working on ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Fred_Rookstown/2WayLSLToViewerComms]] - An analysis and (maybe) proposal for 2-way script to viewer communications.&lt;br /&gt;
* [[User:Fred_Rookstown/SilverLining|Cloud and Virtual Weather Improvements]]&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Nyx_Linden/Office_Hours_Agenda&amp;diff=436682</id>
		<title>User:Nyx Linden/Office Hours Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Nyx_Linden/Office_Hours_Agenda&amp;diff=436682"/>
		<updated>2009-07-22T19:01:41Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Nyx Linden&#039;s Office Hours Agenda==&lt;br /&gt;
&lt;br /&gt;
Office hours are on Wednesdays at Noon in Pacific time (SL standard time) located in Borrowdale at: http://slurl.com/secondlife/Borrowdale/74/217/32&lt;br /&gt;
&lt;br /&gt;
Topics are focused on avatars, content creation efficiency, content creation tools and methods, rendering issues, and many related random topics.&lt;br /&gt;
&lt;br /&gt;
Please post topics for discussion / agenda items here prior to 11:50 AM. Priority will be given to topics that are posted in advance and are relevant to the goals of the office hour. Feel free to include relevant links to JIRA or wiki pages. Contact Nyx Linden if you are unsure if your topic is relevant or appropriate.&lt;br /&gt;
&lt;br /&gt;
Next meeting scheduled for: July 22, 2009.&lt;br /&gt;
&lt;br /&gt;
===Agenda===&lt;br /&gt;
# Feedback on process for managing discussion topics&lt;br /&gt;
# Snapshot issues: http://jira.secondlife.com/browse/VWR-7709 (META entry, collecting most bugs)&lt;br /&gt;
# Hot permission issues: http://jira.secondlife.com/browse/SVC-4444 and http://jira.secondlife.com/browse/VWR-8049&lt;br /&gt;
# Improve avatar skirt mesh http://jira.secondlife.com/browse/VWR-2258&lt;br /&gt;
# Antique jira entries, but worth undusting - user created Linden Plants: http://jira.secondlife.com/browse/MISC-63 and http://jira.secondlife.com/browse/VWR-303&lt;br /&gt;
# Windlight water on a prim (Materials)&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:History/WindLight&amp;diff=399353</id>
		<title>Talk:History/WindLight</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:History/WindLight&amp;diff=399353"/>
		<updated>2009-06-20T15:09:34Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: /* Cli.gs got hacked */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Redirect ==&lt;br /&gt;
I have redirected the page Windlight to this one as if one forgets to capitalize the &amp;quot;L&amp;quot;  in the search it took you to an empty page giving the wrong impression that a page on windlight did not exist.&lt;br /&gt;
&lt;br /&gt;
[[User:ZenMondo Wormser|ZenMondo Wormser]] 19:59, 20 August 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Regarding Hardware and Setting requirements ==&lt;br /&gt;
&lt;br /&gt;
I added these because I think it&#039;s important for people to know off the bat. However I&#039;m not sure if what I have there is 100% accurate, it&#039;s based on what I&#039;ve experienced myself (On an ATI Radeon 9800) and what others in the First Look group have reported.&lt;br /&gt;
&lt;br /&gt;
[[User:Oz Spade|Oz Spade]] 19:35, 29 May 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Open Source? ==&lt;br /&gt;
&lt;br /&gt;
*When and in what form will we see this coming to the open source viewer? Will it be library based or source code? --[[User:Blakar Ogre|Blakar Ogre]] 07:03, 30 May 2007 (PDT)&lt;br /&gt;
** The full source is already available at http://wiki.secondlife.com/wiki/Source_downloads#Betas_and_First_Look --[[User:BigPapi Linden|BigPapi Linden]] 14:15, 29 November 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
&lt;br /&gt;
Regarding &#039;&#039;We emphasize that you have a lot more control over how you look, so if you&#039;re basing your judgment without delving into the Advanced Sky Editor, we recommend you give it a go, and give it time.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is backwards. Windlight doesn&#039;t give you more control over how you look, it gives you more control over how you see. No matter how you tune your Windlight settings, it won&#039;t have any effect on how you look to other people using Windlight. If avatars look significantly different between Windlight and the normal client and if people end up using different fixes to the default settings, the difference between how different people see the same thing (already significant) will become far greater.&lt;br /&gt;
&lt;br /&gt;
The default settings shouldn&#039;t be set for &amp;quot;showing off Windlight&amp;quot;, they should be set for consistency. Dramatic sunlit avatars should be an option, not the default.&lt;br /&gt;
* This part needs more clarification — it&#039;s actually both. I&#039;ll update it. :) --[[User:Torley Linden|Torley Linden]] 14:53, 18 December 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Cli.gs got hacked ==&lt;br /&gt;
&lt;br /&gt;
Cli.gs apparently got hacked, so the link to the presets no longer works.  Could someone please provide a working link? -- [[User:Fred Rookstown|Fred Rookstown]] 15:09, 20 June 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=391882</id>
		<title>User:Fred Rookstown/2WayLSLToViewerComms</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=391882"/>
		<updated>2009-06-12T18:17:37Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: /* Functions/Keywords to Implement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall contain analyses and protocol proposals for 2-way script/viewer communications, in an attempt to improve communications between scripts and viewers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feel free to add in your own thoughts and suggestions.&#039;&#039;&#039;  I am also willing to host an &amp;quot;office hour&amp;quot; sort of thing at my lounge in Nolan if you wish to discuss this face-to-face with others in a realtime environment.&lt;br /&gt;
&lt;br /&gt;
== Why? ==&lt;br /&gt;
&lt;br /&gt;
In this age of OpenSource viewers, problems begin to crop up as viewers are modified to support additions to the client code that would not be possible via LSL, such as fast, reliable client-side radars and client-side BDSM restraints.  One of the most major issues encountered by developers is the transmission of data back and fourth between LSL and the client itself. Although several methods exist, they can prove to inadequate. In addition, since no current standard of communication currently exists for reliable client&amp;lt;-&amp;gt; server communications, developers wishing to integrate their products with the client must go through a trial and error process in order to find the best solution, and even then, the solution may not be a reliable communications channel.&lt;br /&gt;
&lt;br /&gt;
In addition, 2-way variable communications between LSL and client-side scripts (like Lua, being developed in the Emerald viewer) would open a gigantic new realm of possibilities in SL content creation that would not be possible with the current methods.&lt;br /&gt;
&lt;br /&gt;
This wiki page aims to propose a reliable, simple-to-use method of sharing data between server-side LSL and the client itself.&lt;br /&gt;
&lt;br /&gt;
== Communications methods ==&lt;br /&gt;
&lt;br /&gt;
Since I am by no means an expert at messing with the SL client, feel free to correct me if you feel I am wrong with any point.&lt;br /&gt;
&lt;br /&gt;
=== LLMessageSystem ===&lt;br /&gt;
&lt;br /&gt;
The method LL uses to share information with their servers is via the LLMessageSystem class, which sends and receives raw TCP or UDP packets from the servers and deciphers them into a manageable format. It also performs automatic bandwidth throttling. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* LLMessageSystem is the most direct way of talking to the sim server, which is where the scripts run.  &lt;br /&gt;
* Relatively easy to use&lt;br /&gt;
* Already in place&lt;br /&gt;
* Automatically (de)serializes data as it&#039;s sent; Little to no typecasting required.&lt;br /&gt;
* Totally transparent to the user&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Would require a message.xml change to implement a new message type, and on both ends (servers and viewer)&lt;br /&gt;
* Would require new LSL communications functions.&lt;br /&gt;
* Not necessarily the most reliable method.&lt;br /&gt;
* WOuld require a new capability to notify the server that the channel sharing code is available.&lt;br /&gt;
&lt;br /&gt;
=== HTTP Client/Server ===&lt;br /&gt;
&lt;br /&gt;
HTTP transmissions to and form the client and servers.  Could be XMLRPC, REST, or just plain HTTP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Somewhat fast, although it depends on application and workload.  &lt;br /&gt;
* More reliable than LLMessageSystem&lt;br /&gt;
* Basic classes in place.&lt;br /&gt;
* Can send many datatypes.&lt;br /&gt;
* Can send a large volume of data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* More overhead than LLMessages.&lt;br /&gt;
* Would require operation of an HTTP server on the client to be able to share data to the client, would be difficult to access behind a NAT/Firewall (polling the server would lag the client and server to death).&lt;br /&gt;
* Would require significant LL-side changes to be able to handle HTTP data faster.&lt;br /&gt;
* Raw HTTP requires significant data processing in order to convert from the request/response to client-accessible data, many typecasting operations to handle, including unicode.&lt;br /&gt;
&lt;br /&gt;
=== Chat ===&lt;br /&gt;
&lt;br /&gt;
Chat communications is currently used by RestrainedLife and PAR/Emerald RadarChat, in order to convey information back and forth between the script and viewer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Always in place.&lt;br /&gt;
* Can both send and receive data through NATs and firewalls.&lt;br /&gt;
* Simple to send data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039; &lt;br /&gt;
* Requires the reservation of a channel for use with the component.&lt;br /&gt;
* Malicious/false data can be sent more easily than other methods.&lt;br /&gt;
* 1024 character limit, restricting size.&lt;br /&gt;
* Not reliable at all; Even minor lag can seriously affect communications.&lt;br /&gt;
* Easy for users to identify an open channel; Just listen on the chat channel.  Bad for vendors and privacy in general.&lt;br /&gt;
&lt;br /&gt;
=== Jabber/XMPP ===&lt;br /&gt;
&lt;br /&gt;
From [http://www.xmpp.org/about/ XMPP.org]:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;The Extensible Messaging and Presence Protocol (XMPP) is an open technology for real-time communication, which powers a wide range of applications including instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data. The technology pages provide more information about the various XMPP &amp;quot;building blocks&amp;quot;. Several books about Jabber/XMPP technologies are available, as well.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Open source&lt;br /&gt;
* Well-known protocol&lt;br /&gt;
* Has [http://xmpp.org/rfcs/ documented standards]&lt;br /&gt;
* Scalable (Decentralized, used in Google Talk)&lt;br /&gt;
* May shoehorn in long-overdue group chat fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Requires implementation on both the servers and client.&lt;br /&gt;
** LL has already deemed XMPP-based messaging services too immature to implement.&lt;br /&gt;
* May require significant code changes to handle XMPP safely and securely.&lt;br /&gt;
* Additional libraries required on both servers and client&lt;br /&gt;
* Licensing may be an issue.&lt;br /&gt;
&lt;br /&gt;
== LSL methods ==&lt;br /&gt;
&lt;br /&gt;
What I am considering, for LSL, is the addition of functions to establish, maintain, and terminate a data sharing channel.  A script would request a channel to a service on a particular agent (normally the owner but may be otherwise in other applications), and, if the server has been notified via CAPS (on login) that the agent has datashare channels, and that the specific service has been registered on that channel, the server will tell the script to go ahead with the operation (via an event or return value).  The script then receives the client&#039;s shared variables, and the script can register its own shared variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer datashare; // Resource pointer to the channel.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
         datashare = llRequestDatashare(llGetOwner(),&amp;quot;Radar&amp;quot;,0); // 3rd option is a service version requirement.  0 means any version, non-zero means that the server will check if the service is at least that version before allowing it.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    datashare(integer datashare_pointer,integer update_type)&lt;br /&gt;
    {&lt;br /&gt;
         if(update_type==DATASHARE_AVAILABLE &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llShareString(datashare,&amp;quot;ScriptRegion&amp;quot;,llGetRegionName()); // 3rd argument can be left blank to receive the contents of the variable.&lt;br /&gt;
         }&lt;br /&gt;
// Sent when the viewer has changed something in the channel.&lt;br /&gt;
         if(update_type==DATASHARE_CHANGED &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llSay(0,&amp;quot;Viewer channel: &amp;quot;+llShareString(datashare,&amp;quot;ViewerChannel&amp;quot;,&amp;quot;&amp;quot;));&lt;br /&gt;
         }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Functions/Keywords to Implement ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning on implementing Datashares on OpenSim during the summer.  The following is an LSL-side roadmap.&lt;br /&gt;
&lt;br /&gt;
* Datashare Management&lt;br /&gt;
** [[User:Fred_Rookstown/llRequestDatashare|llRequestDatashare]]&lt;br /&gt;
** [[User:Fred_Rookstown/llCloseDatashare|llCloseDatashare]]&lt;br /&gt;
* Datashare variables&lt;br /&gt;
** Set&lt;br /&gt;
*** [[User:Fred_Rookstown/llShareString|llShareString]]&lt;br /&gt;
*** [[User:Fred_Rookstown/llShareInteger|llShareInteger]]&lt;br /&gt;
*** [[User:Fred_Rookstown/llShareFloat|llShareFloat]]&lt;br /&gt;
*** [[User:Fred_Rookstown/llShareKey|llShareKey]]&lt;br /&gt;
*** [[User:Fred_Rookstown/llShareList|llShareList]]&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=391173</id>
		<title>User:Fred Rookstown/2WayLSLToViewerComms</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=391173"/>
		<updated>2009-06-12T04:01:54Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: /* Why? */ Adding note about Lua content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall contain analyses and protocol proposals for 2-way script/viewer communications, in an attempt to improve communications between scripts and viewers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feel free to add in your own thoughts and suggestions.&#039;&#039;&#039;  I am also willing to host an &amp;quot;office hour&amp;quot; sort of thing at my lounge in Nolan if you wish to discuss this face-to-face with others in a realtime environment.&lt;br /&gt;
&lt;br /&gt;
== Why? ==&lt;br /&gt;
&lt;br /&gt;
In this age of OpenSource viewers, problems begin to crop up as viewers are modified to support additions to the client code that would not be possible via LSL, such as fast, reliable client-side radars and client-side BDSM restraints.  One of the most major issues encountered by developers is the transmission of data back and fourth between LSL and the client itself. Although several methods exist, they can prove to inadequate. In addition, since no current standard of communication currently exists for reliable client&amp;lt;-&amp;gt; server communications, developers wishing to integrate their products with the client must go through a trial and error process in order to find the best solution, and even then, the solution may not be a reliable communications channel.&lt;br /&gt;
&lt;br /&gt;
In addition, 2-way variable communications between LSL and client-side scripts (like Lua, being developed in the Emerald viewer) would open a gigantic new realm of possibilities in SL content creation that would not be possible with the current methods.&lt;br /&gt;
&lt;br /&gt;
This wiki page aims to propose a reliable, simple-to-use method of sharing data between server-side LSL and the client itself.&lt;br /&gt;
&lt;br /&gt;
== Communications methods ==&lt;br /&gt;
&lt;br /&gt;
Since I am by no means an expert at messing with the SL client, feel free to correct me if you feel I am wrong with any point.&lt;br /&gt;
&lt;br /&gt;
=== LLMessageSystem ===&lt;br /&gt;
&lt;br /&gt;
The method LL uses to share information with their servers is via the LLMessageSystem class, which sends and receives raw TCP or UDP packets from the servers and deciphers them into a manageable format. It also performs automatic bandwidth throttling. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* LLMessageSystem is the most direct way of talking to the sim server, which is where the scripts run.  &lt;br /&gt;
* Relatively easy to use&lt;br /&gt;
* Already in place&lt;br /&gt;
* Automatically (de)serializes data as it&#039;s sent; Little to no typecasting required.&lt;br /&gt;
* Totally transparent to the user&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Would require a message.xml change to implement a new message type, and on both ends (servers and viewer)&lt;br /&gt;
* Would require new LSL communications functions.&lt;br /&gt;
* Not necessarily the most reliable method.&lt;br /&gt;
* WOuld require a new capability to notify the server that the channel sharing code is available.&lt;br /&gt;
&lt;br /&gt;
=== HTTP Client/Server ===&lt;br /&gt;
&lt;br /&gt;
HTTP transmissions to and form the client and servers.  Could be XMLRPC, REST, or just plain HTTP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Somewhat fast, although it depends on application and workload.  &lt;br /&gt;
* More reliable than LLMessageSystem&lt;br /&gt;
* Basic classes in place.&lt;br /&gt;
* Can send many datatypes.&lt;br /&gt;
* Can send a large volume of data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* More overhead than LLMessages.&lt;br /&gt;
* Would require operation of an HTTP server on the client to be able to share data to the client, would be difficult to access behind a NAT/Firewall (polling the server would lag the client and server to death).&lt;br /&gt;
* Would require significant LL-side changes to be able to handle HTTP data faster.&lt;br /&gt;
* Raw HTTP requires significant data processing in order to convert from the request/response to client-accessible data, many typecasting operations to handle, including unicode.&lt;br /&gt;
&lt;br /&gt;
=== Chat ===&lt;br /&gt;
&lt;br /&gt;
Chat communications is currently used by RestrainedLife and PAR/Emerald RadarChat, in order to convey information back and forth between the script and viewer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Always in place.&lt;br /&gt;
* Can both send and receive data through NATs and firewalls.&lt;br /&gt;
* Simple to send data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039; &lt;br /&gt;
* Requires the reservation of a channel for use with the component.&lt;br /&gt;
* Malicious/false data can be sent more easily than other methods.&lt;br /&gt;
* 1024 character limit, restricting size.&lt;br /&gt;
* Not reliable at all; Even minor lag can seriously affect communications.&lt;br /&gt;
* Easy for users to identify an open channel; Just listen on the chat channel.  Bad for vendors and privacy in general.&lt;br /&gt;
&lt;br /&gt;
=== Jabber/XMPP ===&lt;br /&gt;
&lt;br /&gt;
From [http://www.xmpp.org/about/ XMPP.org]:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;The Extensible Messaging and Presence Protocol (XMPP) is an open technology for real-time communication, which powers a wide range of applications including instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data. The technology pages provide more information about the various XMPP &amp;quot;building blocks&amp;quot;. Several books about Jabber/XMPP technologies are available, as well.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Open source&lt;br /&gt;
* Well-known protocol&lt;br /&gt;
* Has [http://xmpp.org/rfcs/ documented standards]&lt;br /&gt;
* Scalable (Decentralized, used in Google Talk)&lt;br /&gt;
* May shoehorn in long-overdue group chat fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Requires implementation on both the servers and client.&lt;br /&gt;
** LL has already deemed XMPP-based messaging services too immature to implement.&lt;br /&gt;
* May require significant code changes to handle XMPP safely and securely.&lt;br /&gt;
* Additional libraries required on both servers and client&lt;br /&gt;
* Licensing may be an issue.&lt;br /&gt;
&lt;br /&gt;
== LSL methods ==&lt;br /&gt;
&lt;br /&gt;
What I am considering, for LSL, is the addition of functions to establish, maintain, and terminate a data sharing channel.  A script would request a channel to a service on a particular agent (normally the owner but may be otherwise in other applications), and, if the server has been notified via CAPS (on login) that the agent has datashare channels, and that the specific service has been registered on that channel, the server will tell the script to go ahead with the operation (via an event or return value).  The script then receives the client&#039;s shared variables, and the script can register its own shared variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer datashare; // Resource pointer to the channel.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
         datashare = llRequestDatashare(llGetOwner(),&amp;quot;Radar&amp;quot;,0); // 3rd option is a service version requirement.  0 means any version, non-zero means that the server will check if the service is at least that version before allowing it.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    datashare(integer datashare_pointer,integer update_type)&lt;br /&gt;
    {&lt;br /&gt;
         if(update_type==DATASHARE_AVAILABLE &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llShareString(datashare,&amp;quot;ScriptRegion&amp;quot;,llGetRegionName()); // 3rd argument can be left blank to receive the contents of the variable.&lt;br /&gt;
         }&lt;br /&gt;
// Sent when the viewer has changed something in the channel.&lt;br /&gt;
         if(update_type==DATASHARE_CHANGED &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llSay(0,&amp;quot;Viewer channel: &amp;quot;+llShareString(datashare,&amp;quot;ViewerChannel&amp;quot;,&amp;quot;&amp;quot;));&lt;br /&gt;
         }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Functions/Keywords to Implement ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning on implementing Datashares on OpenSim during the summer.  The following is an LSL-side roadmap.&lt;br /&gt;
&lt;br /&gt;
* [[User:Fred_Rookstown/llRequestDatashare|llRequestDatashare]]&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=391163</id>
		<title>User:Fred Rookstown/2WayLSLToViewerComms</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=391163"/>
		<updated>2009-06-12T03:57:00Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: /* Jabber/XMPP */ Adding relevant RFCs for all us developers to gawk at.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall contain analyses and protocol proposals for 2-way script/viewer communications, in an attempt to improve communications between scripts and viewers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feel free to add in your own thoughts and suggestions.&#039;&#039;&#039;  I am also willing to host an &amp;quot;office hour&amp;quot; sort of thing at my lounge in Nolan if you wish to discuss this face-to-face with others in a realtime environment.&lt;br /&gt;
&lt;br /&gt;
== Why? ==&lt;br /&gt;
&lt;br /&gt;
In this age of OpenSource viewers, problems begin to crop up as viewers are modified to support additions to the client code that would not be possible via LSL, such as fast, reliable client-side radars and client-side BDSM restraints.  One of the most major issues encountered by developers is the transmission of data back and fourth between LSL and the client itself. Although several methods exist, they can prove to inadequate. In addition, since no current standard of communication currently exists for reliable client&amp;lt;-&amp;gt; server communications, developers wishing to integrate their products with the client must go through a trial and error process in order to find the best solution, and even then, the solution may not be a reliable communications channel.&lt;br /&gt;
&lt;br /&gt;
This wiki page aims to propose a reliable, simple-to-use method of sharing data between server-side LSL and the client itself.&lt;br /&gt;
&lt;br /&gt;
== Communications methods ==&lt;br /&gt;
&lt;br /&gt;
Since I am by no means an expert at messing with the SL client, feel free to correct me if you feel I am wrong with any point.&lt;br /&gt;
&lt;br /&gt;
=== LLMessageSystem ===&lt;br /&gt;
&lt;br /&gt;
The method LL uses to share information with their servers is via the LLMessageSystem class, which sends and receives raw TCP or UDP packets from the servers and deciphers them into a manageable format. It also performs automatic bandwidth throttling. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* LLMessageSystem is the most direct way of talking to the sim server, which is where the scripts run.  &lt;br /&gt;
* Relatively easy to use&lt;br /&gt;
* Already in place&lt;br /&gt;
* Automatically (de)serializes data as it&#039;s sent; Little to no typecasting required.&lt;br /&gt;
* Totally transparent to the user&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Would require a message.xml change to implement a new message type, and on both ends (servers and viewer)&lt;br /&gt;
* Would require new LSL communications functions.&lt;br /&gt;
* Not necessarily the most reliable method.&lt;br /&gt;
* WOuld require a new capability to notify the server that the channel sharing code is available.&lt;br /&gt;
&lt;br /&gt;
=== HTTP Client/Server ===&lt;br /&gt;
&lt;br /&gt;
HTTP transmissions to and form the client and servers.  Could be XMLRPC, REST, or just plain HTTP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Somewhat fast, although it depends on application and workload.  &lt;br /&gt;
* More reliable than LLMessageSystem&lt;br /&gt;
* Basic classes in place.&lt;br /&gt;
* Can send many datatypes.&lt;br /&gt;
* Can send a large volume of data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* More overhead than LLMessages.&lt;br /&gt;
* Would require operation of an HTTP server on the client to be able to share data to the client, would be difficult to access behind a NAT/Firewall (polling the server would lag the client and server to death).&lt;br /&gt;
* Would require significant LL-side changes to be able to handle HTTP data faster.&lt;br /&gt;
* Raw HTTP requires significant data processing in order to convert from the request/response to client-accessible data, many typecasting operations to handle, including unicode.&lt;br /&gt;
&lt;br /&gt;
=== Chat ===&lt;br /&gt;
&lt;br /&gt;
Chat communications is currently used by RestrainedLife and PAR/Emerald RadarChat, in order to convey information back and forth between the script and viewer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Always in place.&lt;br /&gt;
* Can both send and receive data through NATs and firewalls.&lt;br /&gt;
* Simple to send data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039; &lt;br /&gt;
* Requires the reservation of a channel for use with the component.&lt;br /&gt;
* Malicious/false data can be sent more easily than other methods.&lt;br /&gt;
* 1024 character limit, restricting size.&lt;br /&gt;
* Not reliable at all; Even minor lag can seriously affect communications.&lt;br /&gt;
* Easy for users to identify an open channel; Just listen on the chat channel.  Bad for vendors and privacy in general.&lt;br /&gt;
&lt;br /&gt;
=== Jabber/XMPP ===&lt;br /&gt;
&lt;br /&gt;
From [http://www.xmpp.org/about/ XMPP.org]:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;The Extensible Messaging and Presence Protocol (XMPP) is an open technology for real-time communication, which powers a wide range of applications including instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data. The technology pages provide more information about the various XMPP &amp;quot;building blocks&amp;quot;. Several books about Jabber/XMPP technologies are available, as well.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Open source&lt;br /&gt;
* Well-known protocol&lt;br /&gt;
* Has [http://xmpp.org/rfcs/ documented standards]&lt;br /&gt;
* Scalable (Decentralized, used in Google Talk)&lt;br /&gt;
* May shoehorn in long-overdue group chat fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Requires implementation on both the servers and client.&lt;br /&gt;
** LL has already deemed XMPP-based messaging services too immature to implement.&lt;br /&gt;
* May require significant code changes to handle XMPP safely and securely.&lt;br /&gt;
* Additional libraries required on both servers and client&lt;br /&gt;
* Licensing may be an issue.&lt;br /&gt;
&lt;br /&gt;
== LSL methods ==&lt;br /&gt;
&lt;br /&gt;
What I am considering, for LSL, is the addition of functions to establish, maintain, and terminate a data sharing channel.  A script would request a channel to a service on a particular agent (normally the owner but may be otherwise in other applications), and, if the server has been notified via CAPS (on login) that the agent has datashare channels, and that the specific service has been registered on that channel, the server will tell the script to go ahead with the operation (via an event or return value).  The script then receives the client&#039;s shared variables, and the script can register its own shared variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer datashare; // Resource pointer to the channel.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
         datashare = llRequestDatashare(llGetOwner(),&amp;quot;Radar&amp;quot;,0); // 3rd option is a service version requirement.  0 means any version, non-zero means that the server will check if the service is at least that version before allowing it.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    datashare(integer datashare_pointer,integer update_type)&lt;br /&gt;
    {&lt;br /&gt;
         if(update_type==DATASHARE_AVAILABLE &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llShareString(datashare,&amp;quot;ScriptRegion&amp;quot;,llGetRegionName()); // 3rd argument can be left blank to receive the contents of the variable.&lt;br /&gt;
         }&lt;br /&gt;
// Sent when the viewer has changed something in the channel.&lt;br /&gt;
         if(update_type==DATASHARE_CHANGED &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llSay(0,&amp;quot;Viewer channel: &amp;quot;+llShareString(datashare,&amp;quot;ViewerChannel&amp;quot;,&amp;quot;&amp;quot;));&lt;br /&gt;
         }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Functions/Keywords to Implement ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning on implementing Datashares on OpenSim during the summer.  The following is an LSL-side roadmap.&lt;br /&gt;
&lt;br /&gt;
* [[User:Fred_Rookstown/llRequestDatashare|llRequestDatashare]]&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=391153</id>
		<title>User:Fred Rookstown/2WayLSLToViewerComms</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=391153"/>
		<updated>2009-06-12T03:50:26Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: /* Jabber */  -&amp;gt; Jabber/XMPP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall contain analyses and protocol proposals for 2-way script/viewer communications, in an attempt to improve communications between scripts and viewers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feel free to add in your own thoughts and suggestions.&#039;&#039;&#039;  I am also willing to host an &amp;quot;office hour&amp;quot; sort of thing at my lounge in Nolan if you wish to discuss this face-to-face with others in a realtime environment.&lt;br /&gt;
&lt;br /&gt;
== Why? ==&lt;br /&gt;
&lt;br /&gt;
In this age of OpenSource viewers, problems begin to crop up as viewers are modified to support additions to the client code that would not be possible via LSL, such as fast, reliable client-side radars and client-side BDSM restraints.  One of the most major issues encountered by developers is the transmission of data back and fourth between LSL and the client itself. Although several methods exist, they can prove to inadequate. In addition, since no current standard of communication currently exists for reliable client&amp;lt;-&amp;gt; server communications, developers wishing to integrate their products with the client must go through a trial and error process in order to find the best solution, and even then, the solution may not be a reliable communications channel.&lt;br /&gt;
&lt;br /&gt;
This wiki page aims to propose a reliable, simple-to-use method of sharing data between server-side LSL and the client itself.&lt;br /&gt;
&lt;br /&gt;
== Communications methods ==&lt;br /&gt;
&lt;br /&gt;
Since I am by no means an expert at messing with the SL client, feel free to correct me if you feel I am wrong with any point.&lt;br /&gt;
&lt;br /&gt;
=== LLMessageSystem ===&lt;br /&gt;
&lt;br /&gt;
The method LL uses to share information with their servers is via the LLMessageSystem class, which sends and receives raw TCP or UDP packets from the servers and deciphers them into a manageable format. It also performs automatic bandwidth throttling. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* LLMessageSystem is the most direct way of talking to the sim server, which is where the scripts run.  &lt;br /&gt;
* Relatively easy to use&lt;br /&gt;
* Already in place&lt;br /&gt;
* Automatically (de)serializes data as it&#039;s sent; Little to no typecasting required.&lt;br /&gt;
* Totally transparent to the user&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Would require a message.xml change to implement a new message type, and on both ends (servers and viewer)&lt;br /&gt;
* Would require new LSL communications functions.&lt;br /&gt;
* Not necessarily the most reliable method.&lt;br /&gt;
* WOuld require a new capability to notify the server that the channel sharing code is available.&lt;br /&gt;
&lt;br /&gt;
=== HTTP Client/Server ===&lt;br /&gt;
&lt;br /&gt;
HTTP transmissions to and form the client and servers.  Could be XMLRPC, REST, or just plain HTTP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Somewhat fast, although it depends on application and workload.  &lt;br /&gt;
* More reliable than LLMessageSystem&lt;br /&gt;
* Basic classes in place.&lt;br /&gt;
* Can send many datatypes.&lt;br /&gt;
* Can send a large volume of data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* More overhead than LLMessages.&lt;br /&gt;
* Would require operation of an HTTP server on the client to be able to share data to the client, would be difficult to access behind a NAT/Firewall (polling the server would lag the client and server to death).&lt;br /&gt;
* Would require significant LL-side changes to be able to handle HTTP data faster.&lt;br /&gt;
* Raw HTTP requires significant data processing in order to convert from the request/response to client-accessible data, many typecasting operations to handle, including unicode.&lt;br /&gt;
&lt;br /&gt;
=== Chat ===&lt;br /&gt;
&lt;br /&gt;
Chat communications is currently used by RestrainedLife and PAR/Emerald RadarChat, in order to convey information back and forth between the script and viewer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Always in place.&lt;br /&gt;
* Can both send and receive data through NATs and firewalls.&lt;br /&gt;
* Simple to send data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039; &lt;br /&gt;
* Requires the reservation of a channel for use with the component.&lt;br /&gt;
* Malicious/false data can be sent more easily than other methods.&lt;br /&gt;
* 1024 character limit, restricting size.&lt;br /&gt;
* Not reliable at all; Even minor lag can seriously affect communications.&lt;br /&gt;
* Easy for users to identify an open channel; Just listen on the chat channel.  Bad for vendors and privacy in general.&lt;br /&gt;
&lt;br /&gt;
=== Jabber/XMPP ===&lt;br /&gt;
&lt;br /&gt;
From [http://www.xmpp.org/about/ XMPP.org]:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;The Extensible Messaging and Presence Protocol (XMPP) is an open technology for real-time communication, which powers a wide range of applications including instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data. The technology pages provide more information about the various XMPP &amp;quot;building blocks&amp;quot;. Several books about Jabber/XMPP technologies are available, as well.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Open source&lt;br /&gt;
* Well-known protocol&lt;br /&gt;
* Has documented standards&lt;br /&gt;
* Scalable (Decentralized, used in Google Talk)&lt;br /&gt;
* May shoehorn in long-overdue group chat fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Requires implementation on both the servers and client.&lt;br /&gt;
** LL has already deemed XMPP-based messaging services too immature to implement.&lt;br /&gt;
* May require significant code changes to handle XMPP safely and securely.&lt;br /&gt;
* Additional libraries required on both servers and client&lt;br /&gt;
* Licensing may be an issue.&lt;br /&gt;
&lt;br /&gt;
== LSL methods ==&lt;br /&gt;
&lt;br /&gt;
What I am considering, for LSL, is the addition of functions to establish, maintain, and terminate a data sharing channel.  A script would request a channel to a service on a particular agent (normally the owner but may be otherwise in other applications), and, if the server has been notified via CAPS (on login) that the agent has datashare channels, and that the specific service has been registered on that channel, the server will tell the script to go ahead with the operation (via an event or return value).  The script then receives the client&#039;s shared variables, and the script can register its own shared variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer datashare; // Resource pointer to the channel.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
         datashare = llRequestDatashare(llGetOwner(),&amp;quot;Radar&amp;quot;,0); // 3rd option is a service version requirement.  0 means any version, non-zero means that the server will check if the service is at least that version before allowing it.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    datashare(integer datashare_pointer,integer update_type)&lt;br /&gt;
    {&lt;br /&gt;
         if(update_type==DATASHARE_AVAILABLE &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llShareString(datashare,&amp;quot;ScriptRegion&amp;quot;,llGetRegionName()); // 3rd argument can be left blank to receive the contents of the variable.&lt;br /&gt;
         }&lt;br /&gt;
// Sent when the viewer has changed something in the channel.&lt;br /&gt;
         if(update_type==DATASHARE_CHANGED &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llSay(0,&amp;quot;Viewer channel: &amp;quot;+llShareString(datashare,&amp;quot;ViewerChannel&amp;quot;,&amp;quot;&amp;quot;));&lt;br /&gt;
         }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Functions/Keywords to Implement ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning on implementing Datashares on OpenSim during the summer.  The following is an LSL-side roadmap.&lt;br /&gt;
&lt;br /&gt;
* [[User:Fred_Rookstown/llRequestDatashare|llRequestDatashare]]&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:LlGetRootRotation&amp;diff=389233</id>
		<title>Talk:LlGetRootRotation</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:LlGetRootRotation&amp;diff=389233"/>
		<updated>2009-06-11T03:36:27Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: fff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== llSetRootRotation-like method ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m working on an avatar that is supposed to be able to attach to surfaces, similar to an insect.  While I have the attaching-to-surfaces thing down, the problem is that, particularly on vertical surfaces like walls, I am unable to rotate the avatar so it appears that the feet are touching the ground, instead of being glued by the hip.  Is there any way to do this in LSL without using a vehicle? -- [[User:Fred Rookstown|Fred Rookstown]] 03:35, 11 June 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:LlGetRootRotation&amp;diff=389223</id>
		<title>Talk:LlGetRootRotation</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:LlGetRootRotation&amp;diff=389223"/>
		<updated>2009-06-11T03:35:56Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: llSetRootRotation-like method&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== llSetRootRotation-like method ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m working on an avatar that is supposed to be able to attach to surfaces, similar to an inspect.  While I have the attaching-to-surfaces thing down, the problem is that, particularly on vertical surfaces like walls, I am unable to rotate the avatar so it appears that the feet are touching the ground, instead of being glued by the hip.  Is there any way to do this in LSL without using a vehicle? -- [[User:Fred Rookstown|Fred Rookstown]] 03:35, 11 June 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Flycam&amp;diff=387703</id>
		<title>Talk:Flycam</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Flycam&amp;diff=387703"/>
		<updated>2009-06-10T04:47:47Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== does not go ==&lt;br /&gt;
&lt;br /&gt;
well i simply can&#039;t make this work.  i&#039;ve got the latest 3dx driver.  i&#039;ve installed it and even restarted.  i run 2ndL and turn on FlyCam, but the device does not do anything.  the graphs don&#039;t wiggle around, and of course the cam does  not move.  what am i missing? [[User:Klein Mandelbrot|Klein Mandelbrot]] 21:16, 16 February 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
I have the same issue using the last RC SL client on my mac. From what I read on windows it works ok and its the same SpaceNavigator driver so it must be some SL issue on the mac.&lt;br /&gt;
&lt;br /&gt;
LL: Can you please tell us what might be the problem? or issue a fix?&lt;br /&gt;
&lt;br /&gt;
Thank you&lt;br /&gt;
&lt;br /&gt;
== Ubuntu 9.04 ==&lt;br /&gt;
&lt;br /&gt;
I have Ubuntu Jaunty Jackalope, and I have a logitech Dual Action pad plugged in and calibrated, but it seems that SL does not want to recognise the device.  Joystick calibrator sees it in /dev/input/js0.  Using a slightly patched SL 1.22.11.0 (compiled from SVN). -- [[User:Fred Rookstown|Fred Rookstown]] 04:47, 10 June 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Flycam&amp;diff=387693</id>
		<title>Talk:Flycam</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Flycam&amp;diff=387693"/>
		<updated>2009-06-10T04:47:35Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== does not go ==&lt;br /&gt;
&lt;br /&gt;
well i simply can&#039;t make this work.  i&#039;ve got the latest 3dx driver.  i&#039;ve installed it and even restarted.  i run 2ndL and turn on FlyCam, but the device does not do anything.  the graphs don&#039;t wiggle around, and of course the cam does  not move.  what am i missing? [[User:Klein Mandelbrot|Klein Mandelbrot]] 21:16, 16 February 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
I have the same issue using the last RC SL client on my mac. From what I read on windows it works ok and its the same SpaceNavigator driver so it must be some SL issue on the mac.&lt;br /&gt;
&lt;br /&gt;
LL: Can you please tell us what might be the problem? or issue a fix?&lt;br /&gt;
&lt;br /&gt;
Thank you&lt;br /&gt;
&lt;br /&gt;
== Ubuntu 9.04 ==&lt;br /&gt;
&lt;br /&gt;
I have Ubuntu Jaunty Jackalope, and I have a logitech Dual Action pad plugged in and calibrated, but it seems that SL does not want to recognise the device.  Joystick calibrator sees it in /dev/input/js0.  Using a slightly patched SL 1.22.11.0 (compiled from SVN).&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/llRequestDatashare&amp;diff=385303</id>
		<title>User:Fred Rookstown/llRequestDatashare</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/llRequestDatashare&amp;diff=385303"/>
		<updated>2009-06-07T20:33:53Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: + Some functions I&amp;#039;ll be prototyping on OpenSim this summer.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func=llRequestDatashare&lt;br /&gt;
|func_id=N/A&lt;br /&gt;
|func_sleep&lt;br /&gt;
|func_energy=N/A&lt;br /&gt;
|func_desc=Attempts to open a [[User:Fred_Rookstown/2WayLSLToViewerComms|datashare]] channel on the specified agent for the specified service, if available.&lt;br /&gt;
|func_footnote&lt;br /&gt;
|return_type=integer&lt;br /&gt;
|return_text=datashare resource pointer&lt;br /&gt;
|p1_type=key|p1_name=agent|p1_desc=Key of target agent|p1_hover&lt;br /&gt;
|p2_type=string|p2_name=service_id|p2_desc=Name of service to connect to|p2_hover&lt;br /&gt;
|p3_type=integer|p3_name=service_revision_req|p3_desc=Ensures that the service is at least this version before allowing the datashare to open.|p3_hover&lt;br /&gt;
|constants&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer datashare; // Datashare pointer&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Open a datashare with no service version check.&lt;br /&gt;
        datashare=llRequestDatashare(llGetOwner(),&amp;quot;Some Service&amp;quot;,0);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes&lt;br /&gt;
|mode=request&lt;br /&gt;
|deprecated&lt;br /&gt;
|location&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
|cat5&lt;br /&gt;
|cat6&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=385293</id>
		<title>User:Fred Rookstown/2WayLSLToViewerComms</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=385293"/>
		<updated>2009-06-07T20:29:53Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: /* LSL methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall contain analyses and protocol proposals for 2-way script/viewer communications, in an attempt to improve communications between scripts and viewers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feel free to add in your own thoughts and suggestions.&#039;&#039;&#039;  I am also willing to host an &amp;quot;office hour&amp;quot; sort of thing at my lounge in Nolan if you wish to discuss this face-to-face with others in a realtime environment.&lt;br /&gt;
&lt;br /&gt;
== Why? ==&lt;br /&gt;
&lt;br /&gt;
In this age of OpenSource viewers, problems begin to crop up as viewers are modified to support additions to the client code that would not be possible via LSL, such as fast, reliable client-side radars and client-side BDSM restraints.  One of the most major issues encountered by developers is the transmission of data back and fourth between LSL and the client itself. Although several methods exist, they can prove to inadequate. In addition, since no current standard of communication currently exists for reliable client&amp;lt;-&amp;gt; server communications, developers wishing to integrate their products with the client must go through a trial and error process in order to find the best solution, and even then, the solution may not be a reliable communications channel.&lt;br /&gt;
&lt;br /&gt;
This wiki page aims to propose a reliable, simple-to-use method of sharing data between server-side LSL and the client itself.&lt;br /&gt;
&lt;br /&gt;
== Communications methods ==&lt;br /&gt;
&lt;br /&gt;
Since I am by no means an expert at messing with the SL client, feel free to correct me if you feel I am wrong with any point.&lt;br /&gt;
&lt;br /&gt;
=== LLMessageSystem ===&lt;br /&gt;
&lt;br /&gt;
The method LL uses to share information with their servers is via the LLMessageSystem class, which sends and receives raw TCP or UDP packets from the servers and deciphers them into a manageable format. It also performs automatic bandwidth throttling. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* LLMessageSystem is the most direct way of talking to the sim server, which is where the scripts run.  &lt;br /&gt;
* Relatively easy to use&lt;br /&gt;
* Already in place&lt;br /&gt;
* Automatically (de)serializes data as it&#039;s sent; Little to no typecasting required.&lt;br /&gt;
* Totally transparent to the user&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Would require a message.xml change to implement a new message type, and on both ends (servers and viewer)&lt;br /&gt;
* Would require new LSL communications functions.&lt;br /&gt;
* Not necessarily the most reliable method.&lt;br /&gt;
* WOuld require a new capability to notify the server that the channel sharing code is available.&lt;br /&gt;
&lt;br /&gt;
=== HTTP Client/Server ===&lt;br /&gt;
&lt;br /&gt;
HTTP transmissions to and form the client and servers.  Could be XMLRPC, REST, or just plain HTTP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Somewhat fast, although it depends on application and workload.  &lt;br /&gt;
* More reliable than LLMessageSystem&lt;br /&gt;
* Basic classes in place.&lt;br /&gt;
* Can send many datatypes.&lt;br /&gt;
* Can send a large volume of data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* More overhead than LLMessages.&lt;br /&gt;
* Would require operation of an HTTP server on the client to be able to share data to the client, would be difficult to access behind a NAT/Firewall (polling the server would lag the client and server to death).&lt;br /&gt;
* Would require significant LL-side changes to be able to handle HTTP data faster.&lt;br /&gt;
* Raw HTTP requires significant data processing in order to convert from the request/response to client-accessible data, many typecasting operations to handle, including unicode.&lt;br /&gt;
&lt;br /&gt;
=== Chat ===&lt;br /&gt;
&lt;br /&gt;
Chat communications is currently used by RestrainedLife and PAR/Emerald RadarChat, in order to convey information back and forth between the script and viewer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Always in place.&lt;br /&gt;
* Can both send and receive data through NATs and firewalls.&lt;br /&gt;
* Simple to send data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039; &lt;br /&gt;
* Requires the reservation of a channel for use with the component.&lt;br /&gt;
* Malicious/false data can be sent more easily than other methods.&lt;br /&gt;
* 1024 character limit, restricting size.&lt;br /&gt;
* Not reliable at all; Even minor lag can seriously affect communications.&lt;br /&gt;
* Easy for users to identify an open channel; Just listen on the chat channel.  Bad for vendors and privacy in general.&lt;br /&gt;
&lt;br /&gt;
=== Jabber ===&lt;br /&gt;
&lt;br /&gt;
Jabber.org is the original IM service based on XMPP, the open standard for instant messaging, and one of the biggest nodes on the open Jabber network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Open source&lt;br /&gt;
* Well-known protocol&lt;br /&gt;
* Has documented standards&lt;br /&gt;
* Scalable (?)&lt;br /&gt;
* May shoehorn in long-overdue group chat fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Requires implementation on both the servers and client.&lt;br /&gt;
** LL has already deemed XMPP-based messaging services too immature to implement.&lt;br /&gt;
* May require significant code changes to handle XMPP safely and securely.&lt;br /&gt;
* Additional libraries required on both servers and client&lt;br /&gt;
* Licensing may be an issue.&lt;br /&gt;
&lt;br /&gt;
== LSL methods ==&lt;br /&gt;
&lt;br /&gt;
What I am considering, for LSL, is the addition of functions to establish, maintain, and terminate a data sharing channel.  A script would request a channel to a service on a particular agent (normally the owner but may be otherwise in other applications), and, if the server has been notified via CAPS (on login) that the agent has datashare channels, and that the specific service has been registered on that channel, the server will tell the script to go ahead with the operation (via an event or return value).  The script then receives the client&#039;s shared variables, and the script can register its own shared variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer datashare; // Resource pointer to the channel.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
         datashare = llRequestDatashare(llGetOwner(),&amp;quot;Radar&amp;quot;,0); // 3rd option is a service version requirement.  0 means any version, non-zero means that the server will check if the service is at least that version before allowing it.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    datashare(integer datashare_pointer,integer update_type)&lt;br /&gt;
    {&lt;br /&gt;
         if(update_type==DATASHARE_AVAILABLE &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llShareString(datashare,&amp;quot;ScriptRegion&amp;quot;,llGetRegionName()); // 3rd argument can be left blank to receive the contents of the variable.&lt;br /&gt;
         }&lt;br /&gt;
// Sent when the viewer has changed something in the channel.&lt;br /&gt;
         if(update_type==DATASHARE_CHANGED &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llSay(0,&amp;quot;Viewer channel: &amp;quot;+llShareString(datashare,&amp;quot;ViewerChannel&amp;quot;,&amp;quot;&amp;quot;));&lt;br /&gt;
         }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Functions/Keywords to Implement ===&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning on implementing Datashares on OpenSim during the summer.  The following is an LSL-side roadmap.&lt;br /&gt;
&lt;br /&gt;
* [[User:Fred_Rookstown/llRequestDatashare|llRequestDatashare]]&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=385273</id>
		<title>User:Fred Rookstown/2WayLSLToViewerComms</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=385273"/>
		<updated>2009-06-07T20:06:16Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall contain analyses and protocol proposals for 2-way script/viewer communications, in an attempt to improve communications between scripts and viewers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feel free to add in your own thoughts and suggestions.&#039;&#039;&#039;  I am also willing to host an &amp;quot;office hour&amp;quot; sort of thing at my lounge in Nolan if you wish to discuss this face-to-face with others in a realtime environment.&lt;br /&gt;
&lt;br /&gt;
== Why? ==&lt;br /&gt;
&lt;br /&gt;
In this age of OpenSource viewers, problems begin to crop up as viewers are modified to support additions to the client code that would not be possible via LSL, such as fast, reliable client-side radars and client-side BDSM restraints.  One of the most major issues encountered by developers is the transmission of data back and fourth between LSL and the client itself. Although several methods exist, they can prove to inadequate. In addition, since no current standard of communication currently exists for reliable client&amp;lt;-&amp;gt; server communications, developers wishing to integrate their products with the client must go through a trial and error process in order to find the best solution, and even then, the solution may not be a reliable communications channel.&lt;br /&gt;
&lt;br /&gt;
This wiki page aims to propose a reliable, simple-to-use method of sharing data between server-side LSL and the client itself.&lt;br /&gt;
&lt;br /&gt;
== Communications methods ==&lt;br /&gt;
&lt;br /&gt;
Since I am by no means an expert at messing with the SL client, feel free to correct me if you feel I am wrong with any point.&lt;br /&gt;
&lt;br /&gt;
=== LLMessageSystem ===&lt;br /&gt;
&lt;br /&gt;
The method LL uses to share information with their servers is via the LLMessageSystem class, which sends and receives raw TCP or UDP packets from the servers and deciphers them into a manageable format. It also performs automatic bandwidth throttling. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* LLMessageSystem is the most direct way of talking to the sim server, which is where the scripts run.  &lt;br /&gt;
* Relatively easy to use&lt;br /&gt;
* Already in place&lt;br /&gt;
* Automatically (de)serializes data as it&#039;s sent; Little to no typecasting required.&lt;br /&gt;
* Totally transparent to the user&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Would require a message.xml change to implement a new message type, and on both ends (servers and viewer)&lt;br /&gt;
* Would require new LSL communications functions.&lt;br /&gt;
* Not necessarily the most reliable method.&lt;br /&gt;
* WOuld require a new capability to notify the server that the channel sharing code is available.&lt;br /&gt;
&lt;br /&gt;
=== HTTP Client/Server ===&lt;br /&gt;
&lt;br /&gt;
HTTP transmissions to and form the client and servers.  Could be XMLRPC, REST, or just plain HTTP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Somewhat fast, although it depends on application and workload.  &lt;br /&gt;
* More reliable than LLMessageSystem&lt;br /&gt;
* Basic classes in place.&lt;br /&gt;
* Can send many datatypes.&lt;br /&gt;
* Can send a large volume of data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* More overhead than LLMessages.&lt;br /&gt;
* Would require operation of an HTTP server on the client to be able to share data to the client, would be difficult to access behind a NAT/Firewall (polling the server would lag the client and server to death).&lt;br /&gt;
* Would require significant LL-side changes to be able to handle HTTP data faster.&lt;br /&gt;
* Raw HTTP requires significant data processing in order to convert from the request/response to client-accessible data, many typecasting operations to handle, including unicode.&lt;br /&gt;
&lt;br /&gt;
=== Chat ===&lt;br /&gt;
&lt;br /&gt;
Chat communications is currently used by RestrainedLife and PAR/Emerald RadarChat, in order to convey information back and forth between the script and viewer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Always in place.&lt;br /&gt;
* Can both send and receive data through NATs and firewalls.&lt;br /&gt;
* Simple to send data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039; &lt;br /&gt;
* Requires the reservation of a channel for use with the component.&lt;br /&gt;
* Malicious/false data can be sent more easily than other methods.&lt;br /&gt;
* 1024 character limit, restricting size.&lt;br /&gt;
* Not reliable at all; Even minor lag can seriously affect communications.&lt;br /&gt;
* Easy for users to identify an open channel; Just listen on the chat channel.  Bad for vendors and privacy in general.&lt;br /&gt;
&lt;br /&gt;
=== Jabber ===&lt;br /&gt;
&lt;br /&gt;
Jabber.org is the original IM service based on XMPP, the open standard for instant messaging, and one of the biggest nodes on the open Jabber network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Open source&lt;br /&gt;
* Well-known protocol&lt;br /&gt;
* Has documented standards&lt;br /&gt;
* Scalable (?)&lt;br /&gt;
* May shoehorn in long-overdue group chat fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Requires implementation on both the servers and client.&lt;br /&gt;
** LL has already deemed XMPP-based messaging services too immature to implement.&lt;br /&gt;
* May require significant code changes to handle XMPP safely and securely.&lt;br /&gt;
* Additional libraries required on both servers and client&lt;br /&gt;
* Licensing may be an issue.&lt;br /&gt;
&lt;br /&gt;
== LSL methods ==&lt;br /&gt;
&lt;br /&gt;
What I am considering, for LSL, is the addition of functions to establish, maintain, and terminate a data sharing channel.  A script would request a channel to a service on a particular agent (normally the owner but may be otherwise in other applications), and, if the server has been notified via CAPS (on login) that the agent has datashare channels, and that the specific service has been registered on that channel, the server will tell the script to go ahead with the operation (via an event or return value).  The script then receives the client&#039;s shared variables, and the script can register its own shared variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer datashare; // Resource pointer to the channel.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
         datashare = llRequestDatashare(llGetOwner(),&amp;quot;Radar&amp;quot;,0); // 3rd option is a service version requirement.  0 means any version, non-zero means that the server will check if the service is at least that version before allowing it.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    datashare(integer datashare_pointer,integer update_type)&lt;br /&gt;
    {&lt;br /&gt;
         if(update_type==DATASHARE_AVAILABLE &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llShareString(datashare,&amp;quot;ScriptRegion&amp;quot;,llGetRegionName()); // 3rd argument can be left blank to receive the contents of the variable.&lt;br /&gt;
         }&lt;br /&gt;
// Sent when the viewer has changed something in the channel.&lt;br /&gt;
         if(update_type==DATASHARE_CHANGED &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llSay(0,&amp;quot;Viewer channel: &amp;quot;+llShareString(datashare,&amp;quot;ViewerChannel&amp;quot;,&amp;quot;&amp;quot;));&lt;br /&gt;
         }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=371823</id>
		<title>User:Fred Rookstown/2WayLSLToViewerComms</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=371823"/>
		<updated>2009-05-26T05:19:19Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall contain analyses and protocol proposals for 2-way script/viewer communications, in an attempt to improve communications between scripts and viewers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feel free to add in your own thoughts and suggestions.&#039;&#039;&#039;  I am also willing to host an &amp;quot;office hour&amp;quot; sort of thing at my lounge in Nolan if you wish to discuss this face-to-face with others in a realtime environment.&lt;br /&gt;
&lt;br /&gt;
== Why? ==&lt;br /&gt;
&lt;br /&gt;
In this age of OpenSource viewers, problems begin to crop up as viewers are modified to support additions to the client code that would not be possible via LSL, such as fast, reliable client-side radars and client-side BDSM restraints.  One of the most major issues encountered by developers is the transmission of data back and fourth between LSL and the client itself. Although several methods exist, they can prove to inadequate. In addition, since no current standard of communication currently exists for reliable client&amp;lt;-&amp;gt; server communications, developers wishing to integrate their products with the client must go through a trial and error process in order to find the best solution, and even then, the solution may not be a reliable communications channel.&lt;br /&gt;
&lt;br /&gt;
This wiki page aims to propose a reliable, simple-to-use method of sharing data between server-side LSL and the client itself.&lt;br /&gt;
&lt;br /&gt;
== Communications methods ==&lt;br /&gt;
&lt;br /&gt;
Since I am by no means an expert at messing with the SL client, feel free to correct me if you feel I am wrong with any point.&lt;br /&gt;
&lt;br /&gt;
=== LLMessageSystem ===&lt;br /&gt;
&lt;br /&gt;
The method LL uses to share information with their servers is via the LLMessageSystem class, which sends and receives raw TCP or UDP packets from the servers and deciphers them into a manageable format. It also performs automatic bandwidth throttling. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* LLMessageSystem is the most direct way of talking to the sim server, which is where the scripts run.  &lt;br /&gt;
* Relatively easy to use&lt;br /&gt;
* Already in place&lt;br /&gt;
* Automatically (de)serializes data as it&#039;s sent; Little to no typecasting required.&lt;br /&gt;
* Totally transparent to the user&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Would require a message.xml change to implement a new message type, and on both ends (servers and viewer)&lt;br /&gt;
* Would require new LSL communications functions.&lt;br /&gt;
* Not necessarily the most reliable method.&lt;br /&gt;
* WOuld require a new capability to notify the server that the channel sharing code is available.&lt;br /&gt;
&lt;br /&gt;
=== HTTP Client/Server ===&lt;br /&gt;
&lt;br /&gt;
HTTP transmissions to and form the client and servers.  Could be XMLRPC, REST, or just plain HTTP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Somewhat fast, although it depends on application and workload.  &lt;br /&gt;
* More reliable than LLMessageSystem&lt;br /&gt;
* Basic classes in place.&lt;br /&gt;
* Can send many datatypes.&lt;br /&gt;
* Can send a large volume of data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* More overhead than LLMessages.&lt;br /&gt;
* Would require operation of an HTTP server on the client to be able to share data to the client, would be difficult to access behind a NAT/Firewall (polling the server would lag the client and server to death).&lt;br /&gt;
* Would require significant LL-side changes to be able to handle HTTP data faster.&lt;br /&gt;
* Raw HTTP requires significant data processing in order to convert from the request/response to client-accessible data, many typecasting operations to handle, including unicode.&lt;br /&gt;
&lt;br /&gt;
=== Chat ===&lt;br /&gt;
&lt;br /&gt;
Chat communications is currently used by RestrainedLife and PAR/Emerald RadarChat, in order to convey information back and forth between the script and viewer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Always in place.&lt;br /&gt;
* Can both send and receive data through NATs and firewalls.&lt;br /&gt;
* Simple to send data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039; &lt;br /&gt;
* Requires the reservation of a channel for use with the component.&lt;br /&gt;
* Malicious/false data can be sent more easily than other methods.&lt;br /&gt;
* 1024 character limit, restricting size.&lt;br /&gt;
* Not reliable at all; Even minor lag can seriously affect communications.&lt;br /&gt;
* Easy for users to identify an open channel; Just listen on the chat channel.  Bad for vendors and privacy in general.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LSL methods ==&lt;br /&gt;
&lt;br /&gt;
What I am considering, for LSL, is the addition of functions to establish, maintain, and terminate a data sharing channel.  A script would request a channel to a service on a particular agent (normally the owner but may be otherwise in other applications), and, if the server has been notified via CAPS (on login) that the agent has datashare channels, and that the specific service has been registered on that channel, the server will tell the script to go ahead with the operation (via an event or return value).  The script then receives the client&#039;s shared variables, and the script can register its own shared variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer datashare; // Resource pointer to the channel.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
         datashare = llRequestDatashare(llGetOwner(),&amp;quot;Radar&amp;quot;,0); // 3rd option is a service version requirement.  0 means any version, non-zero means that the server will check if the service is at least that version before allowing it.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    datashare(integer datashare_pointer,integer update_type)&lt;br /&gt;
    {&lt;br /&gt;
         if(update_type==DATASHARE_AVAILABLE &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llShareString(datashare,&amp;quot;ScriptRegion&amp;quot;,llGetRegionName()); // 3rd argument can be left blank to receive the contents of the variable.&lt;br /&gt;
         }&lt;br /&gt;
// Sent when the viewer has changed something in the channel.&lt;br /&gt;
         if(update_type==DATASHARE_CHANGED &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llSay(0,&amp;quot;Viewer channel: &amp;quot;+llShareString(datashare,&amp;quot;ViewerChannel&amp;quot;,&amp;quot;&amp;quot;));&lt;br /&gt;
         }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=371813</id>
		<title>User:Fred Rookstown/2WayLSLToViewerComms</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=371813"/>
		<updated>2009-05-26T04:31:00Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: /* LLMessageSystem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall contain analyses and protocol proposals for 2-way script/viewer communications, in an attempt to improve communications between scripts and viewers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feel free to add in your own thoughts and suggestions.&#039;&#039;&#039;  I am also willing to host an &amp;quot;office hour&amp;quot; sort of thing at my lounge in Nolan if you wish to discuss this face-to-face with others in a realtime environment.&lt;br /&gt;
&lt;br /&gt;
== Why? ==&lt;br /&gt;
&lt;br /&gt;
In this age of OpenSource viewers, problems begin to crop up as viewers are modified to support additions to the client code that would not be possible via LSL, such as fast, reliable client-side radars and client-side BDSM restraints.  One of the most major issues encountered by developers is the transmission of data back and fourth between LSL and the client itself. Although several methods exist, they can prove to inadequate. In addition, since no current standard of communication currently exists for reliable client&amp;lt;-&amp;gt; server communications, developers wishing to integrate their products with the client must go through a trial and error process in order to find the best solution, and even then, the solution may not be a reliable communications channel.&lt;br /&gt;
&lt;br /&gt;
This wiki page aims to propose a reliable, simple-to-use method of sharing data between server-side LSL and the client itself.&lt;br /&gt;
&lt;br /&gt;
== Communications methods ==&lt;br /&gt;
&lt;br /&gt;
Since I am by no means an expert at messing with the SL client, feel free to correct me if you feel I am wrong with any point.&lt;br /&gt;
&lt;br /&gt;
=== LLMessageSystem ===&lt;br /&gt;
&lt;br /&gt;
The method LL uses to share information with their servers is via the LLMessageSystem class, which sends and receives raw TCP or UDP packets from the servers and deciphers them into a manageable format. It also performs automatic bandwidth throttling. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* LLMessageSystem is the most direct way of talking to the sim server, which is where the scripts run.  &lt;br /&gt;
* Relatively easy to use&lt;br /&gt;
* Already in place&lt;br /&gt;
* Automatically (de)serializes data as it&#039;s sent; Little to no typecasting required.&lt;br /&gt;
* Totally transparent to the user&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Would require a message.xml change to implement a new message type, and on both ends (servers and viewer)&lt;br /&gt;
* Would require new LSL communications functions.&lt;br /&gt;
* Not necessarily the most reliable method.&lt;br /&gt;
* WOuld require a new capability to notify the server that the channel sharing code is available.&lt;br /&gt;
&lt;br /&gt;
=== HTTP Client/Server ===&lt;br /&gt;
&lt;br /&gt;
HTTP transmissions to and form the client and servers.  Could be XMLRPC, REST, or just plain HTTP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Somewhat fast, although it depends on application and workload.  &lt;br /&gt;
* More reliable than LLMessageSystem&lt;br /&gt;
* Basic classes in place.&lt;br /&gt;
* Can send many datatypes.&lt;br /&gt;
* Can send a large volume of data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* More overhead than LLMessages.&lt;br /&gt;
* Would require operation of an HTTP server on the client to be able to share data to the client, would be difficult to access behind a NAT/Firewall (polling the server would lag the client and server to death).&lt;br /&gt;
* Would require significant LL-side changes to be able to handle HTTP data faster.&lt;br /&gt;
* Raw HTTP requires significant data processing in order to convert from the request/response to client-accessible data, many typecasting operations to handle, including unicode.&lt;br /&gt;
&lt;br /&gt;
=== Chat ===&lt;br /&gt;
&lt;br /&gt;
Chat communications is currently used by RestrainedLife and PAR/Emerald RadarChat, in order to convey information back and forth between the script and viewer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Always in place.&lt;br /&gt;
* Can both send and receive data through NATs and firewalls.&lt;br /&gt;
* Simple to send data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039; &lt;br /&gt;
* Requires the reservation of a channel for use with the component.&lt;br /&gt;
* Malicious/false data can be sent more easily than other methods.&lt;br /&gt;
* 1024 character limit, restricting size.&lt;br /&gt;
* Not reliable at all; Even minor lag can seriously affect communications.&lt;br /&gt;
* Easy for users to identify an open channel; Just listen on the chat channel.  Bad for combat HUDs and privacy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LSL methods ==&lt;br /&gt;
&lt;br /&gt;
What I am considering, for LSL, is the addition of functions to establish, maintain, and terminate a data sharing channel.  A script would request a channel to a service on a particular agent (normally the owner but may be otherwise in other applications), and, if the server has been notified via CAPS (on login) that the agent has datashare channels, and that the specific service has been registered on that channel, the server will tell the script to go ahead with the operation (via an event or return value).  The script then receives the client&#039;s shared variables, and the script can register its own shared variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer datashare; // Resource pointer to the channel.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
         datashare = llRequestDatashare(llGetOwner(),&amp;quot;Radar&amp;quot;,0); // 3rd option is a service version requirement.  0 means any version, non-zero means that the server will check if the service is at least that version before allowing it.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    datashare(integer datashare_pointer,integer update_type)&lt;br /&gt;
    {&lt;br /&gt;
         if(update_type==DATASHARE_AVAILABLE &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llShareString(datashare,&amp;quot;ScriptRegion&amp;quot;,llGetRegionName()); // 3rd argument can be left blank to receive the contents of the variable.&lt;br /&gt;
         }&lt;br /&gt;
// Sent when the viewer has changed something in the channel.&lt;br /&gt;
         if(update_type==DATASHARE_CHANGED &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llSay(0,&amp;quot;Viewer channel: &amp;quot;+llShareString(datashare,&amp;quot;ViewerChannel&amp;quot;,&amp;quot;&amp;quot;));&lt;br /&gt;
         }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=371803</id>
		<title>User:Fred Rookstown/2WayLSLToViewerComms</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown/2WayLSLToViewerComms&amp;diff=371803"/>
		<updated>2009-05-26T04:28:26Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: New page: This page shall contain analyses and protocol proposals for 2-way script/viewer communications, in an attempt to improve communications between scripts and viewers.  &amp;#039;&amp;#039;&amp;#039;Feel free to add in...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shall contain analyses and protocol proposals for 2-way script/viewer communications, in an attempt to improve communications between scripts and viewers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feel free to add in your own thoughts and suggestions.&#039;&#039;&#039;  I am also willing to host an &amp;quot;office hour&amp;quot; sort of thing at my lounge in Nolan if you wish to discuss this face-to-face with others in a realtime environment.&lt;br /&gt;
&lt;br /&gt;
== Why? ==&lt;br /&gt;
&lt;br /&gt;
In this age of OpenSource viewers, problems begin to crop up as viewers are modified to support additions to the client code that would not be possible via LSL, such as fast, reliable client-side radars and client-side BDSM restraints.  One of the most major issues encountered by developers is the transmission of data back and fourth between LSL and the client itself. Although several methods exist, they can prove to inadequate. In addition, since no current standard of communication currently exists for reliable client&amp;lt;-&amp;gt; server communications, developers wishing to integrate their products with the client must go through a trial and error process in order to find the best solution, and even then, the solution may not be a reliable communications channel.&lt;br /&gt;
&lt;br /&gt;
This wiki page aims to propose a reliable, simple-to-use method of sharing data between server-side LSL and the client itself.&lt;br /&gt;
&lt;br /&gt;
== Communications methods ==&lt;br /&gt;
&lt;br /&gt;
Since I am by no means an expert at messing with the SL client, feel free to correct me if you feel I am wrong with any point.&lt;br /&gt;
&lt;br /&gt;
=== LLMessageSystem ===&lt;br /&gt;
&lt;br /&gt;
The method LL uses to share information with their servers is via the LLMessageSystem class, which sends and receives raw TCP or UDP packets from the servers and deciphers them into a manageable format. It also performs automatic bandwidth throttling. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* LLMessageSystem is the most direct way of talking to the sim server, which is where the scripts run.  &lt;br /&gt;
* Relatively easy to use&lt;br /&gt;
* Already in place&lt;br /&gt;
* Automatically (de)serializes data as it&#039;s sent; Little to no typecasting required.&lt;br /&gt;
* Totally transparent to the user&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* Would require a message.xml change to implement a new message type, and on both ends (servers and LL)&lt;br /&gt;
* Would require new LSL communications functions.&lt;br /&gt;
* Not necessarily the most reliable method.&lt;br /&gt;
* WOuld require a new capability to notify the server that the channel sharing code is available.&lt;br /&gt;
&lt;br /&gt;
=== HTTP Client/Server ===&lt;br /&gt;
&lt;br /&gt;
HTTP transmissions to and form the client and servers.  Could be XMLRPC, REST, or just plain HTTP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Somewhat fast, although it depends on application and workload.  &lt;br /&gt;
* More reliable than LLMessageSystem&lt;br /&gt;
* Basic classes in place.&lt;br /&gt;
* Can send many datatypes.&lt;br /&gt;
* Can send a large volume of data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039;&lt;br /&gt;
* More overhead than LLMessages.&lt;br /&gt;
* Would require operation of an HTTP server on the client to be able to share data to the client, would be difficult to access behind a NAT/Firewall (polling the server would lag the client and server to death).&lt;br /&gt;
* Would require significant LL-side changes to be able to handle HTTP data faster.&lt;br /&gt;
* Raw HTTP requires significant data processing in order to convert from the request/response to client-accessible data, many typecasting operations to handle, including unicode.&lt;br /&gt;
&lt;br /&gt;
=== Chat ===&lt;br /&gt;
&lt;br /&gt;
Chat communications is currently used by RestrainedLife and PAR/Emerald RadarChat, in order to convey information back and forth between the script and viewer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pros:&#039;&#039;&#039;&lt;br /&gt;
* Always in place.&lt;br /&gt;
* Can both send and receive data through NATs and firewalls.&lt;br /&gt;
* Simple to send data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cons:&#039;&#039;&#039; &lt;br /&gt;
* Requires the reservation of a channel for use with the component.&lt;br /&gt;
* Malicious/false data can be sent more easily than other methods.&lt;br /&gt;
* 1024 character limit, restricting size.&lt;br /&gt;
* Not reliable at all; Even minor lag can seriously affect communications.&lt;br /&gt;
* Easy for users to identify an open channel; Just listen on the chat channel.  Bad for combat HUDs and privacy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LSL methods ==&lt;br /&gt;
&lt;br /&gt;
What I am considering, for LSL, is the addition of functions to establish, maintain, and terminate a data sharing channel.  A script would request a channel to a service on a particular agent (normally the owner but may be otherwise in other applications), and, if the server has been notified via CAPS (on login) that the agent has datashare channels, and that the specific service has been registered on that channel, the server will tell the script to go ahead with the operation (via an event or return value).  The script then receives the client&#039;s shared variables, and the script can register its own shared variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer datashare; // Resource pointer to the channel.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
         datashare = llRequestDatashare(llGetOwner(),&amp;quot;Radar&amp;quot;,0); // 3rd option is a service version requirement.  0 means any version, non-zero means that the server will check if the service is at least that version before allowing it.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    datashare(integer datashare_pointer,integer update_type)&lt;br /&gt;
    {&lt;br /&gt;
         if(update_type==DATASHARE_AVAILABLE &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llShareString(datashare,&amp;quot;ScriptRegion&amp;quot;,llGetRegionName()); // 3rd argument can be left blank to receive the contents of the variable.&lt;br /&gt;
         }&lt;br /&gt;
// Sent when the viewer has changed something in the channel.&lt;br /&gt;
         if(update_type==DATASHARE_CHANGED &amp;amp;&amp;amp; datashare==datashare_pointer)&lt;br /&gt;
         {&lt;br /&gt;
              llSay(0,&amp;quot;Viewer channel: &amp;quot;+llShareString(datashare,&amp;quot;ViewerChannel&amp;quot;,&amp;quot;&amp;quot;));&lt;br /&gt;
         }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=371783</id>
		<title>User:Fred Rookstown</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Fred_Rookstown&amp;diff=371783"/>
		<updated>2009-05-26T03:29:25Z</updated>

		<summary type="html">&lt;p&gt;Fred Rookstown: New page: Blah blah blah, I do coding and stuff.  == Current things I&amp;#039;m working on ==  * User:Fred_Rookstown/2WayLSLToViewerComms - An analysis and (maybe) proposal for 2-way script to viewer co...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Blah blah blah, I do coding and stuff.&lt;br /&gt;
&lt;br /&gt;
== Current things I&#039;m working on ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Fred_Rookstown/2WayLSLToViewerComms]] - An analysis and (maybe) proposal for 2-way script to viewer communications.&lt;/div&gt;</summary>
		<author><name>Fred Rookstown</name></author>
	</entry>
</feed>