<?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=Carnildo+Greenacre</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=Carnildo+Greenacre"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Carnildo_Greenacre"/>
	<updated>2026-07-25T12:47:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Extensible_Prim_Attributes_from_LSL&amp;diff=13174</id>
		<title>Talk:Extensible Prim Attributes from LSL</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Extensible_Prim_Attributes_from_LSL&amp;diff=13174"/>
		<updated>2007-02-26T04:55:58Z</updated>

		<summary type="html">&lt;p&gt;Carnildo Greenacre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This would be useful. In the interim, is the object description usable for holding meta data? This may still be sent to the client even if it&#039;s not normally visible on objects you don&#039;t own. This is the case with object names, at least. It&#039;s worth investigation. --[[User:Soft Noel|Soft Noel]] 13:30, 24 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
This would be quite useful for my raytracer work.  Right now, I&#039;m thinking of re-using the lighting parameters to carry advanced material properties: light radius can also store index of refraction, light intensity can be used for specular highlight intensity, and light falloff can store specular highlight size. --[[User:Carnildo Greenacre|Carnildo Greenacre]] 20:55, 25 February 2007 (PST)&lt;/div&gt;</summary>
		<author><name>Carnildo Greenacre</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User_talk:SignpostMarv_Martin/Archive/Implementing_new_features&amp;diff=9880</id>
		<title>User talk:SignpostMarv Martin/Archive/Implementing new features</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User_talk:SignpostMarv_Martin/Archive/Implementing_new_features&amp;diff=9880"/>
		<updated>2007-02-13T03:19:14Z</updated>

		<summary type="html">&lt;p&gt;Carnildo Greenacre: /* Alternate Rendering Engines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Alternate Rendering Engines ==&lt;br /&gt;
* Heh, isn&#039;t SL already running on an open source 3D engine? :-) [[User:Eddy Stryker|Eddy Stryker]] 19:55, 9 January 2007&lt;br /&gt;
** Nope. Just saying we-do-this-and-that does not make things happen :) [[User:Andy Tir|Andy Tir]] 23:31, 11 February 2007 (PST)&lt;br /&gt;
*I&#039;m probably insane to try this, but I&#039;m working on a raytracing engine for SecondLife.  If I&#039;m lucky, it&#039;ll be able to run on current quad-core CPUs.  If I&#039;m not, it won&#039;t be usable until summer, when dual-quad systems are available. --[[User:Carnildo Greenacre|Carnildo Greenacre]] 19:19, 12 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Better Sound Support ==&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039;. [[Community Bounties#VLC instead of QuickTime]] might help. [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Removing Texture Loading ==&lt;br /&gt;
* &#039;&#039;&#039;Comment&#039;&#039;&#039; How complete do you want this to be? I made a very quick and easy patch that prevents the client from requesting any image downloads, but in my experience it still rendered a few textures like the grass terrain and avatar hair. It sped up the framerate a lot, but didn&#039;t change the GPU requirements to run SL. If the latter is your goal you&#039;d probably have better luck by removing shaders and disabling OpenGL extensions. --[[User:Eddy Stryker|Eddy Stryker]] 12:01, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039; -- Disabling texture download/display would be a great asset to people interested in communication more than shopping/etc. [[User:Kamilion Schnook|Kamilion Schnook]]&lt;br /&gt;
** As long as you like the color grey :-) --[[User:Eddy Stryker|Eddy Stryker]] 12:01, 9 January 2007 (PST)&lt;br /&gt;
* &#039;&#039;&#039;Comment:&#039;&#039;&#039; As far as I was aware, libSL clients don&#039;t load textures, due to the lack of JPEG 2000 support :-P [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
** This is somewhat incorrect. libsecondlife has had JPEG2000 support for quite some time through our jasper shim called libjaspernet, and some projects use it. Most don&#039;t however, as there are few interactive GUI clients using libsecondlife. --[[User:Eddy Stryker|Eddy Stryker]] 12:01, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Patching it so that llLoadURL opens the F1 Help Browser ==&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039; [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
* Streaming media urls can be implemented in this manner by making use of string concatenation, e.g. &amp;lt;nowiki&amp;gt;llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_URL,&#039;http://&#039; + (string)llGetOwner() + &#039;:&#039; + stringVar__password + &#039;@icecast.example.com:8000&#039;,PARCEL_MEDIA_COMMAND_AGENT,llGetOwner()]);&amp;lt;/nowiki&amp;gt; [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
* The problem with this, is that doing this via serverside script is that there&#039;s only one media URL, and you&#039;d be connecting to it with the owner&#039;s key -- What is wanted is each individual client responds with it&#039;s own key. For instance, integrating a &amp;quot;Who is listening in SL&amp;quot; to an icecast server. Each connected client supplies it&#039;s own key/name via rewriting, and a name2key/key2name DB displays each individually connected user&#039;s SL information. [[User:Kamilion Schnook|Kamilion Schnook]] 20:35 Jan 8, 2007 PST&lt;br /&gt;
**Using the PARCEL_MEDIA_COMMAND_AGENT, I&#039;m told you can give each agent their own stream to listen to. So you could do the user method, or more likely, append a query string, e.g:&amp;lt;div style=&amp;quot;font-size:140%;&amp;quot;&amp;gt;&amp;lt;code class=&amp;quot;lsl&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_URL,&#039;http://&#039; + (string)llGetOwner() + &#039;:&#039; + stringVar__password + &#039;@icecast.example.com:8000&#039;,PARCEL_MEDIA_COMMAND_AGENT,llGetOwner()]);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
**[[User:SignpostMarv Martin|SignpostMarv Martin]] 03:31, 10 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding a Avatar Local Stream Channel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Peer to Peer Voice over IP using above idea, improved ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More efficient local cache ==&lt;br /&gt;
* &#039;&#039;&#039;Comment:&#039;&#039;&#039; Seronis has some good ideas on how this should be implemented. [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
* &#039;&#039;&#039;Comment:&#039;&#039;&#039; Definitely. One cache per region, to a configurable cap total, would be an immense load off the asset servers, and off of our poor bandwidth. [[User:Buckaroo Mu|Buckaroo Mu]] 11:30, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [http://en.wikipedia.org/wiki/Client-To-Client_Protocol CTCP] protocol layered on IM system ==&lt;br /&gt;
* Bleh ? [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Command Line Interface Improvements ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More sophisticated IM  features ==&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039; with a big hell yes. In a large group, it&#039;s difficult to keep track of a conversation when there is a mass exodus from the session. It&#039;s annoying having the system spam the window. [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Shortcut/Link/Alias function in Inventory ==&lt;br /&gt;
A pure viewer based solution can &amp;quot;only&amp;quot; be a hack at best. A possible implementation could be:&lt;br /&gt;
&lt;br /&gt;
#) Change the viewer, so that when a drag and drop operation is performed on a &#039;no-copy&#039; item, the error is trapped&lt;br /&gt;
#) for each error, register the UUID of the object in a special notecard&lt;br /&gt;
#) When presenting the contents of a folder in the viewer, preset a mixture of the real contents and the contents of the note card&lt;br /&gt;
#) Hide the special notecard&lt;br /&gt;
#) Handle folder drops onto the avatar&lt;br /&gt;
#) Handle moving of the special links&lt;br /&gt;
#) Handle deletion of the special links&lt;br /&gt;
#) Handle deletion of the original &#039;no-copy&#039; item&lt;br /&gt;
&lt;br /&gt;
This will only a partial solution, as an scrips running on the servers will still see the real contents of the folder.&lt;br /&gt;
&lt;br /&gt;
:Yea, I realized that this would really have to include a new Inventory Type ID - but do the servers do checking for type IDs? This may be something that can be done client-side with either no server-side change or only one very minor one - the assignment of a Type ID. For instance: Assume the new Inventory Type of Link, which simply stores the UUID of the original object. The simplest thing to do with them regarding copying would be to make them either no-transfer, or &amp;quot;delete on transfer&amp;quot; - they simply go away if you try to transfer them. In every other way, it behaves as a normal inventory item. [[User:Buckaroo Mu|Buckaroo Mu]] 09:15, 11 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
::This definitely could be fudged by using a series of specially named notecards (for configuration data), allowing the feature to be implemented without requiring modifications to the server&lt;br /&gt;
::[[User:SignpostMarv Martin|SignpostMarv Martin]] 10:03, 11 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
:::It &#039;&#039;could be&#039;&#039; fudged with notecards - but how many hacks do you want in SL? The assignment of an additional inventory type at the server end, as far I as can tell from the viewer source, would require probably two lines of code. We need to work with LL to see if they would support this inclusion, rather than make kludges that work but are far less elegant, and may break scripts. [[User:Buckaroo Mu|Buckaroo Mu]] 16:16, 12 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
::::You&#039;re forgetting something: the servers aren&#039;t built for dynamic assets. &#039;Fudging&#039; it would allow the community to decide on features and interfaces while Linden Lab make the significant changes to the server required for this to work.&lt;br /&gt;
::::[[User:SignpostMarv Martin|SignpostMarv Martin]] 21:12, 12 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
:::::If you &#039;&#039;fudge&#039;&#039; this via notecards, serverside scrips working on inventories will see the inventory as it really is. In effect making life complicated for LSL scripts, because now they have to parse a notecard as well.&lt;br /&gt;
:::::[[User:Duffy Langdon|Duffy Langdon]]&lt;br /&gt;
&lt;br /&gt;
== DirectX3D Hardware Acceleration ==&lt;br /&gt;
&lt;br /&gt;
The OpenGL code is scattered all over the entire codebase. You&#039;d have to abstract out all the 3D code first, it wouldn&#039;t be an improvement it would be a complete rewrite.&lt;br /&gt;
&lt;br /&gt;
== GPGPU Support ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Multiple Monitor Support ==&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039; I&#039;ve been wanting this since I only had one monitor :-D [[User:SignpostMarv Martin|SignpostMarv Martin]] 11:13, 10 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Embedded scripting language for client-side plugins ==&lt;br /&gt;
One way of doing this would be to exploit the xpcom architecture of Mozilla. Exposing the viewer core as xpcom interfaces. That way the flexibility and extensibility of the Mozilla engine could be used.&lt;br /&gt;
&lt;br /&gt;
The viewer already includes the mozilla engine, using xpcom it will be possible to use Javascript, Java, C++ (Mono/.Net is under way).&lt;br /&gt;
&lt;br /&gt;
This would require that a definition of an interface layer between the core viewer and the xpcom system inside Mozilla, once that was defined and implemented, the viewer functionality could be extened using almost any language.&lt;br /&gt;
&lt;br /&gt;
[[User:Duffy Langdon|Duffy Langdon]] 12:34, 10 January 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nude patch ==&lt;br /&gt;
It&#039;s inevitable.  Any bets on how long it will be?&lt;br /&gt;
# Ages ago. Around about the time alpha textures for clothes were allowed. [[User:SignpostMarv Martin|SignpostMarv Martin]] 00:53, 11 January 2007 (PST)&lt;br /&gt;
# Do bear in mind that my mention of a possible implementation for the &#039;nude patch&#039; would be akin to hallucinating, due to the also mentioned ability to run extra-stringent checks on the server side for submitted content in PG regions. [[User:SignpostMarv Martin|SignpostMarv Martin]] 01:08, 11 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think a nude patch could work anyway - the skin and clothing textures are combined on the wearer&#039;s client, then the combined texture is uploaded to the server as the single texture that appears on the avatar. That&#039;s why &amp;quot;rebaking&amp;quot; your textures on your client affects how other people see you. You could possibly just apply the same skin to everyone but you might just as well leave everyone unrezzed then ;) - Yumi Murakami&lt;br /&gt;
			&lt;br /&gt;
: and chase all your payig customers away ? In order for us to build our business out in SL and represent our RL business inside SL such things should never be possible therefor as this is a technical wiki and forum how to further create a better client i suggest to build as much security in the client as possible ro prevent such &#039;attacks&#039; on our avatars. [[User:River Senyurt|River Senyurt]] 11:34, 12 January 2007&lt;br /&gt;
&lt;br /&gt;
:: As I described in the Barriers to implementation section for this &amp;quot;feature&amp;quot;, security such as this would have to be built into the server. Since the Viewer is now GPL, all it would take is for someone to remove this &#039;security&#039; layer, and you&#039;re right back where you started, thus Linden Lab are highly unlikely to spend time implementing such a mechanism in the client. The method I described has benefits for both the main and teen grids anyway.&lt;br /&gt;
&lt;br /&gt;
:: Aside from the odd oversight over the years (e.g. texture uploads, megaprims), all security and validation operations are executed on the server side. It fits into LL&#039;s behaviour to implement such checks on the server, and while they could, and most likely will do something alone these lines, there is unfortunately nothing you can do to stop somebody else making their client get nervous imagine you in your underwear. Or less.&lt;br /&gt;
:: [[User:SignpostMarv Martin|SignpostMarv Martin]] 04:18, 12 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Out of sight., out of mind ==&lt;br /&gt;
&lt;br /&gt;
# The client has an option to prevent certain types of objects from being rendered&lt;br /&gt;
# Objects are addressed server-side by UUID&lt;br /&gt;
&lt;br /&gt;
The client would have be made aware of the UUID of an object, categorising it as a new type of object, and a hotkey could be used to toggle the visibility.&lt;br /&gt;
&lt;br /&gt;
Similarly, if a photographer or machinimaker is working in-world, the following options would be useful:&lt;br /&gt;
&lt;br /&gt;
* Do not render anything other than the land owner&#039;s objects&lt;br /&gt;
* Do not render objects not owned by people on your friends list&lt;br /&gt;
* Do not render avatars on your friends list&lt;br /&gt;
&lt;br /&gt;
This would enable people to deal with certain types of griefer attacks more easily, much in the same way that toggling particles on and off can be useful when particle poofers have been dropped.&lt;br /&gt;
&lt;br /&gt;
[[User:SignpostMarv Martin|SignpostMarv Martin]] 15:32, 12 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
=== Visual mute ===&lt;br /&gt;
Maybe add Visual Mute, that makes agent&#039;s avatar and objects not rendered?&lt;br /&gt;
[[User:Tharkang Varayez|Tharkang Varayez]] 04:59, 13 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Night skies ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m working on customizing the night sky.  Since the sky, and especially the starfield, are strictly client-side effects, this would involve storing the data in a local file.  Where would be the best place to store this, and what would be the best way to access it?&lt;br /&gt;
&lt;br /&gt;
Are there any plans for things like sim-wide data storage?  Such a thing would make it possible to assign per-sim or per-area skies.  I figure a decent starfield would require between 8k and 16k of storage; objects like comets, planets, and the like would be much smaller. --[[User:Carnildo Greenacre|Carnildo Greenacre]] 00:48, 13 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
=== Marv&#039;s crazy thoughts ===&lt;br /&gt;
Rename feature to &amp;quot;Celestial Effects&amp;quot;&lt;br /&gt;
:&#039;&#039;Since the effects you refer to- comets, planets, starfiled, and one assumes Aurora Borealis, as well as celestial bodies such as nebulae, pulsars, supernovas, asteroid fields etc etc, are &#039;&#039;&#039;effects seen in the sky&#039;&#039;&#039; or space&#039;&#039;&#039; (which is the basic definition of &#039;celestial&#039;), it would make sense to make allowance for the code to be extended to provide this wider scope.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would suggest implementing bitTorrent (or other P2P protocol) client, putting an option in the Network tab, and adding the necessary UI elements that say &amp;quot;Customised Celestial Effects Server XYZ has &#039;&#039;&#039;n&#039;&#039;&#039; celestial packs available for this parcel/simulator, please select download&amp;quot;, as well as options for saving/deleting/editing said celestial effects.&lt;br /&gt;
&lt;br /&gt;
Separate bandwidth control options would be advised, although the gzipped/7zipped celestial effects packages are likely to be rather small.&lt;br /&gt;
&lt;br /&gt;
Since it would be cool to have the ability to edit the celestial effects, it might make sense to implement a version control system, so once people have played around with the effects package, they could submit their take on the pack/their improvements back to the server.&lt;br /&gt;
* It would be useful to alert people who are using another version of the effects pack that another version has been made available&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to hazard a guess that doing a mashup of CVS/SVN + bitTorrent might be a pain in the ass, but with 20k+ concurrent Resis, and filesizes of less than 16kb (adding support for procedural generation of content to help lower things further would be advised), this would make things rather efficient if it was pulled off.&lt;br /&gt;
&lt;br /&gt;
Individual items of content should be made available for distribution individually- one person&#039;s comet effect might be better than another&#039;s for example.&lt;br /&gt;
&lt;br /&gt;
Since these creations will involve intellectual property, I would advise enforcing a Creative Commons licensing policy from the get-go.&lt;br /&gt;
&lt;br /&gt;
==== Summary ====&lt;br /&gt;
* Rename feature to &amp;quot;Celestial Effects&amp;quot;&lt;br /&gt;
* use bitTorrent or other P2P technology to distribute content&lt;br /&gt;
* use Version Control systems for server-side storage&lt;br /&gt;
* enforce Creative Commons licensing ( CC BY-NC-ND for example would mean refusing submissions back to the central storage server.&lt;br /&gt;
** Since multiple servers are likely to be made available, it would make sense for the following two features to be added to the servers&lt;br /&gt;
**# Checking to make sure someone hasn&#039;t resubmitted someone else&#039;s content as a fresh asset.&lt;br /&gt;
**# Allowing communication between servers to check results.&lt;br /&gt;
* Allow individual assets of the effects package to be modified or replaced&lt;br /&gt;
** An option for:&lt;br /&gt;
*** Always use asset X for asset type Y&lt;br /&gt;
*** Never use asset type Y&lt;br /&gt;
*** Never use assets under a specific CC license&lt;br /&gt;
** This would mean a single data format could be designed for things such as constellations, which could be combined with any number of celestial effects for the numerous &#039;&#039;&#039;Star&#039;&#039;&#039; asset types, rendering effects for specific subsets of the &#039;&#039;&#039;Star&#039;&#039;&#039; asset type.&lt;br /&gt;
&lt;br /&gt;
=== Celestial Asset Types ===&lt;br /&gt;
* Stars&lt;br /&gt;
* Nebulae&lt;br /&gt;
* Comets&lt;br /&gt;
* Asteroids&lt;br /&gt;
* See [http://en.wikipedia.org/wiki/Celestial_body the Wikipedia article on celestial bodies for full list]&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to stop myself short on this, as I feel this feature alone would eat up a rather large amount of the talk page and is complex enough that it should be given it&#039;s own sub-section of the wiki, [[Project:Celestial Effects]], since I have all kinds of crazy ideas in mind for this :-D&lt;br /&gt;
&lt;br /&gt;
[[User:SignpostMarv Martin|SignpostMarv Martin]] 08:52, 13 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Implement other languages options - Dutch ==&lt;br /&gt;
&lt;br /&gt;
At this moment I&#039;m already changing my english GUI from SL client into a Dutch (nederlands) language version. So my question is if somebody is interested in this and maybe in the future, to add this in the official beta release.&lt;br /&gt;
Although there is still a lot of work to do.&lt;br /&gt;
&lt;br /&gt;
--[[User:Crash Crabe|Crash Crabe]] 01:09, 25 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
:Although it&#039;s in an &amp;quot;in development&amp;quot; stage, I&#039;m guessing the best place to discuss other language options would be [[User talk:SignpostMarv Martin/Sandbox/Project:Internationalisation|Project:Internationalisation]]&lt;br /&gt;
:[[User:SignpostMarv Martin|SignpostMarv Martin]] 03:24, 12 February 2007 (PST)&lt;/div&gt;</summary>
		<author><name>Carnildo Greenacre</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Third_Party_Libraries&amp;diff=5990</id>
		<title>Third Party Libraries</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Third_Party_Libraries&amp;diff=5990"/>
		<updated>2007-01-23T09:23:29Z</updated>

		<summary type="html">&lt;p&gt;Carnildo Greenacre: Sorting out the JPEG and JPEG-2000 libraries&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiLearnBox}}&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
    |- style=&amp;quot;background:#ffdead;&amp;quot;&lt;br /&gt;
    !Library !! Version !! Description&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Apache --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://apr.apache.org/ Apache Portable Runtime ] || 1.1.2&lt;br /&gt;
|A set of C functions which provide a portable and consistent interface into operating system - or simply widely useful - functionality. We primarily use it for threading and socket i/o. This is actually three packages, apr, apr-util and apr-iconv.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Boost --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.boost.org/ Boost] || 1.32.0&lt;br /&gt;
|A set of portable C++ libraries which provide a wide set of functionality. Used primarily for tokenization.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TUT --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://tut-framework.sourceforge.net/ TUT] || 2006-06-22&lt;br /&gt;
|Unit test framework based on the use of c++ meta template programming. Used to test LL libraries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- quicktime --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://developer.apple.com/quicktime/ Quicktime] || 7.13&lt;br /&gt;
|Used to play in-world video clips on a prim.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- libcurl--&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://curl.haxx.se/libcurl/ libcurl] || 7.15.1&lt;br /&gt;
|Handles moving data across the net in many different protocols. Used to GET/POST/PUT/DELETE web resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- openssl --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!openssl || 0.9.7c&lt;br /&gt;
|Provides encryption for sensitive actions such as user login&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- zlib --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.zlib.net/ zlib] || 1.2.1&lt;br /&gt;
|zlib is a lossless data-compression library which is used for a variety of network i/o and file compression.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- mozilla --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.mozilla.org/developer/ Mozilla] || 1.8.0.9&lt;br /&gt;
|The mozilla library handles rendering HTML in the viewer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- cg --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://developer.nvidia.com/page/cg_main.html CG] || ??&lt;br /&gt;
|cg controls some visual effects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- OpenGL --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.opengl.org/ OpenGL] || ??&lt;br /&gt;
| 3D Graphics rendering engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Expat --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://expat.sourceforge.net/ Expat] || 1.95.8&lt;br /&gt;
|XML parser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- FreeType --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.freetype.org/ FreeType] || 2.1.5&lt;br /&gt;
|Font engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- jpeglib --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.ijg.org/ jpeglib] || 6b&lt;br /&gt;
|JPEG decoder library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KDU --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.kakadusoftware.com/ KDU] || 5.2.1&lt;br /&gt;
|Kakadu (KDU) JPEG-2000 decoder library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ogg --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://xiph.org/ogg/ OGG] || 1.0.3&lt;br /&gt;
|Audio control.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vorbis --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://xiph.org/vorbis/ Vorbis] || 1.1.2&lt;br /&gt;
|Audio control.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- SDL --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.libsdl.org/index.php SDL] || 1.2.7&lt;br /&gt;
|The Simple DirectMedia Layer libraries are used for handling input and basic window/GL setup on the Linux client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Smartheap --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.microquill.com/smartheap/index.html Smartheap] || ??&lt;br /&gt;
|Memory allocation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Speedtree --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.speedtree.com/ Speedtree] ||  ??&lt;br /&gt;
|Controls rendering of trees that are not yet implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- xmlrpc-epi --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://xmlrpc-epi.sourceforge.net/ xmlrpc-eip] || 0.51&lt;br /&gt;
|Controls the XML-RPC protocol.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- OpenJPEG --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!OpenJPEG || 1.0&lt;br /&gt;
|An open-source JPEG-2000 library; a slower alternative to Kadaku&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Glib --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!Glib || 2.0.0&lt;br /&gt;
|??&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GTK+ --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.gtk.org/ GTK+] || ??&lt;br /&gt;
|&#039;Native&#039; UI components on the Linux client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ELFIO --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://sourceforge.net/projects/elfio/ ELFIO] || ??&lt;br /&gt;
|Enhanced stacktrace information on the Linux client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MESA --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!Mesa ||  6.2.1&lt;br /&gt;
|??&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Carnildo Greenacre</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Third_Party_Libraries&amp;diff=5989</id>
		<title>Third Party Libraries</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Third_Party_Libraries&amp;diff=5989"/>
		<updated>2007-01-23T09:21:58Z</updated>

		<summary type="html">&lt;p&gt;Carnildo Greenacre: Purpose of OpenSSL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiLearnBox}}&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
    |- style=&amp;quot;background:#ffdead;&amp;quot;&lt;br /&gt;
    !Library !! Version !! Description&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Apache --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://apr.apache.org/ Apache Portable Runtime ] || 1.1.2&lt;br /&gt;
|A set of C functions which provide a portable and consistent interface into operating system - or simply widely useful - functionality. We primarily use it for threading and socket i/o. This is actually three packages, apr, apr-util and apr-iconv.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Boost --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.boost.org/ Boost] || 1.32.0&lt;br /&gt;
|A set of portable C++ libraries which provide a wide set of functionality. Used primarily for tokenization.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TUT --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://tut-framework.sourceforge.net/ TUT] || 2006-06-22&lt;br /&gt;
|Unit test framework based on the use of c++ meta template programming. Used to test LL libraries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- quicktime --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://developer.apple.com/quicktime/ Quicktime] || 7.13&lt;br /&gt;
|Used to play in-world video clips on a prim.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- libcurl--&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://curl.haxx.se/libcurl/ libcurl] || 7.15.1&lt;br /&gt;
|Handles moving data across the net in many different protocols. Used to GET/POST/PUT/DELETE web resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- openssl --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!openssl || 0.9.7c&lt;br /&gt;
|Provides encryption for sensitive actions such as user login&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- zlib --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.zlib.net/ zlib] || 1.2.1&lt;br /&gt;
|zlib is a lossless data-compression library which is used for a variety of network i/o and file compression.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- mozilla --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.mozilla.org/developer/ Mozilla] || 1.8.0.9&lt;br /&gt;
|The mozilla library handles rendering HTML in the viewer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- cg --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://developer.nvidia.com/page/cg_main.html CG] || ??&lt;br /&gt;
|cg controls some visual effects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- OpenGL --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.opengl.org/ OpenGL] || ??&lt;br /&gt;
| 3D Graphics rendering engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Expat --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://expat.sourceforge.net/ Expat] || 1.95.8&lt;br /&gt;
|XML parser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- FreeType --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.freetype.org/ FreeType] || 2.1.5&lt;br /&gt;
|Font engine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- jpeglib --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.ijg.org/ jpeglib] || 6b&lt;br /&gt;
|JPEG decoder library. It is an open alternative to KDU.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- KDU --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.kakadusoftware.com/ KDU] || 5.2.1&lt;br /&gt;
|Kakadu (KDU) iJPEG decoder library.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ogg --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://xiph.org/ogg/ OGG] || 1.0.3&lt;br /&gt;
|Audio control.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vorbis --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://xiph.org/vorbis/ Vorbis] || 1.1.2&lt;br /&gt;
|Audio control.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- SDL --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.libsdl.org/index.php SDL] || 1.2.7&lt;br /&gt;
|The Simple DirectMedia Layer libraries are used for handling input and basic window/GL setup on the Linux client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Smartheap --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.microquill.com/smartheap/index.html Smartheap] || ??&lt;br /&gt;
|Memory allocation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Speedtree --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.speedtree.com/ Speedtree] ||  ??&lt;br /&gt;
|Controls rendering of trees that are not yet implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- xmlrpc-epi --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://xmlrpc-epi.sourceforge.net/ xmlrpc-eip] || 0.51&lt;br /&gt;
|Controls the XML-RPC protocol.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- OpenJPEG --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!OpenJPEG || 1.0&lt;br /&gt;
|??&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Glib --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!Glib || 2.0.0&lt;br /&gt;
|??&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GTK+ --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://www.gtk.org/ GTK+] || ??&lt;br /&gt;
|&#039;Native&#039; UI components on the Linux client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ELFIO --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
![http://sourceforge.net/projects/elfio/ ELFIO] || ??&lt;br /&gt;
|Enhanced stacktrace information on the Linux client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MESA --&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!Mesa ||  6.2.1&lt;br /&gt;
|??&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Carnildo Greenacre</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Viewer_Architecture&amp;diff=5383</id>
		<title>Viewer Architecture</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Viewer_Architecture&amp;diff=5383"/>
		<updated>2007-01-14T04:00:34Z</updated>

		<summary type="html">&lt;p&gt;Carnildo Greenacre: /* Program Flow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiLearnBox}}&lt;br /&gt;
&lt;br /&gt;
The Second Life client (also known as the &amp;quot;viewer&amp;quot;) is a complex piece of software. It can be visualized as a streaming media client like RealPlayer, a game engine like Quake 3, or a web browser.&lt;br /&gt;
&lt;br /&gt;
First you&#039;ll need to learn some terminology like &amp;quot;agent&amp;quot;, &amp;quot;sim&amp;quot;, and &amp;quot;region&amp;quot; in the [[glossary]].&lt;br /&gt;
&lt;br /&gt;
== Learn by Example ==&lt;br /&gt;
* [[Adding a menu item]]&lt;br /&gt;
* [[Adding a dialog]]&lt;br /&gt;
* [[How movement works]]&lt;br /&gt;
* [[How the camera works]]&lt;br /&gt;
* [[How login works]]&lt;br /&gt;
* [[How keyboard processing works]]&lt;br /&gt;
* [[How scripts work]]&lt;br /&gt;
* [[The lifetime of a session]]&lt;br /&gt;
* [[Adding a preference]]&lt;br /&gt;
&lt;br /&gt;
== Major Systems ==&lt;br /&gt;
* [[Message System]] - reliable and unreliable transport over UDP&lt;br /&gt;
* [[Image System]] - prioritizes and decodes JPEG2000 images into OpenGL textures&lt;br /&gt;
* [[Viewer Object System]] - objects in scene for rendering and editing&lt;br /&gt;
* [[Rendering System]] - from viewer object to drawable to face to vertices to graphics card&lt;br /&gt;
* [[Culling]] - octree and occlusion based culling to speed rendering&lt;br /&gt;
* [[UI Widgets]] - cross platform buttons, scroll bars, etc.&lt;br /&gt;
* [[UI Floaters]] - dialogs and windows built from XML files&lt;br /&gt;
* [[Asset System]] - transport for animations, sounds, notecards, scripts, etc.&lt;br /&gt;
* [[Inventory]] - server-side storage of assets for each user&lt;br /&gt;
* [[Sound System]] - cross platform audio based on FMOD&lt;br /&gt;
* [[Movie System]] - QuickTime-based video on object surfaces&lt;br /&gt;
* [[VFS]] - cached data is held in two &amp;quot;virtual file systems&amp;quot; in large files on the client&lt;br /&gt;
* [[Selection Manager]] - holds extended information for selected objects and allows editing&lt;br /&gt;
* [[Avatar Appearance]] - appearance is constructed from a mesh, parameters to deform the mesh, and textures to describe clothing&lt;br /&gt;
* [[Web Browser]] - the integration of the viewer with the web.&lt;br /&gt;
* [[Avatar Profiles]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
* [[L$ System]]&lt;br /&gt;
* [[Tools]] - anything that takes effect when you click your mouse on the world view.&lt;br /&gt;
&lt;br /&gt;
== Threads ==&lt;br /&gt;
The viewer is a single process with a few threads:&lt;br /&gt;
* Main thread -- The input/output main program function (including rendering).&lt;br /&gt;
* VFS thread -- Thread responsible for reading/writing to the local virtual file system.&lt;br /&gt;
* LFS thread -- Thread responsible for some reading/writing to the local native file system.&lt;br /&gt;
** Used by the {{OSWiki|Threaded_Image_Pipeline}} project&lt;br /&gt;
* Image thread -- Thread responsible for requesting and decoding image data&lt;br /&gt;
** Used by the {{OSWiki|Threaded_Image_Pipeline}} project&lt;br /&gt;
* Worker Threads -- Threads designed to do cpu intensive background tasks&lt;br /&gt;
** These threads may be paused during rendering so as not to reduce performance (design in-progress)&lt;br /&gt;
&lt;br /&gt;
== Program Flow ==&lt;br /&gt;
# Initialize - newview/viewer.cpp :: main()&lt;br /&gt;
# Loop  - newview/viewer.cpp :: main_loop()&lt;br /&gt;
#* Gathers  keyboard and mouse input&lt;br /&gt;
#* Pumps the TCP i/o&lt;br /&gt;
#* idle()&lt;br /&gt;
#* Render the frame&lt;br /&gt;
#* let filesystem and worker threads process&lt;br /&gt;
# Shutdown&lt;br /&gt;
&lt;br /&gt;
== Sources of Input ==&lt;br /&gt;
* The [[Message System]].&lt;br /&gt;
** Assets through the [[Asset System]], transmitted using the [[Transfer Manager]], and extracted from the [[VFS]].&lt;br /&gt;
** Files through [[Xfer Manager]].&lt;br /&gt;
* Files copied out of a [[VFS]] into local file store and read through c/c++/ll file API.&lt;br /&gt;
* XMLRPC calls such as [[Authentication Flow|login]] and [[Buying Land and Currency]].&lt;br /&gt;
* HTTP GET/POST to the [[Backbone]]. This is not yet in use.&lt;br /&gt;
* Streaming music and videos.&lt;br /&gt;
** Quicktime.&lt;br /&gt;
** FMOD.&lt;br /&gt;
* The web browser.&lt;br /&gt;
&lt;br /&gt;
== User Guides ==&lt;br /&gt;
Known [[Client_parameters]]&lt;br /&gt;
&lt;br /&gt;
Known Client Parameters on [http://lslwiki.com/lslwiki/wakka.php?wakka=newview&amp;amp;show_comments=1 LSLwiki.com]&lt;br /&gt;
&lt;br /&gt;
Known [[defines]]&lt;br /&gt;
&lt;br /&gt;
[[Godmode]] - what Lindens can do&lt;/div&gt;</summary>
		<author><name>Carnildo Greenacre</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User_talk:SignpostMarv_Martin/Archive/Implementing_new_features&amp;diff=5265</id>
		<title>User talk:SignpostMarv Martin/Archive/Implementing new features</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User_talk:SignpostMarv_Martin/Archive/Implementing_new_features&amp;diff=5265"/>
		<updated>2007-01-13T08:48:17Z</updated>

		<summary type="html">&lt;p&gt;Carnildo Greenacre: Night skies&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Alternate Rendering Engines ==&lt;br /&gt;
* Heh, isn&#039;t SL already running on an open source 3D engine? :-) [[User:Eddy Stryker|Eddy Stryker]] 19:55, 9 January 2007&lt;br /&gt;
&lt;br /&gt;
== Better Sound Support ==&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039;. [[Community Bounties#VLC instead of QuickTime]] might help. [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Removing Texture Loading ==&lt;br /&gt;
* &#039;&#039;&#039;Comment&#039;&#039;&#039; How complete do you want this to be? I made a very quick and easy patch that prevents the client from requesting any image downloads, but in my experience it still rendered a few textures like the grass terrain and avatar hair. It sped up the framerate a lot, but didn&#039;t change the GPU requirements to run SL. If the latter is your goal you&#039;d probably have better luck by removing shaders and disabling OpenGL extensions. --[[User:Eddy Stryker|Eddy Stryker]] 12:01, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039; -- Disabling texture download/display would be a great asset to people interested in communication more than shopping/etc. [[User:Kamilion Schnook|Kamilion Schnook]]&lt;br /&gt;
** As long as you like the color grey :-) --[[User:Eddy Stryker|Eddy Stryker]] 12:01, 9 January 2007 (PST)&lt;br /&gt;
* &#039;&#039;&#039;Comment:&#039;&#039;&#039; As far as I was aware, libSL clients don&#039;t load textures, due to the lack of JPEG 2000 support :-P [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
** This is somewhat incorrect. libsecondlife has had JPEG2000 support for quite some time through our jasper shim called libjaspernet, and some projects use it. Most don&#039;t however, as there are few interactive GUI clients using libsecondlife. --[[User:Eddy Stryker|Eddy Stryker]] 12:01, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Patching it so that llLoadURL opens the F1 Help Browser ==&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039; [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
* Streaming media urls can be implemented in this manner by making use of string concatenation, e.g. &amp;lt;nowiki&amp;gt;llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_URL,&#039;http://&#039; + (string)llGetOwner() + &#039;:&#039; + stringVar__password + &#039;@icecast.example.com:8000&#039;,PARCEL_MEDIA_COMMAND_AGENT,llGetOwner()]);&amp;lt;/nowiki&amp;gt; [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
* The problem with this, is that doing this via serverside script is that there&#039;s only one media URL, and you&#039;d be connecting to it with the owner&#039;s key -- What is wanted is each individual client responds with it&#039;s own key. For instance, integrating a &amp;quot;Who is listening in SL&amp;quot; to an icecast server. Each connected client supplies it&#039;s own key/name via rewriting, and a name2key/key2name DB displays each individually connected user&#039;s SL information. [[User:Kamilion Schnook|Kamilion Schnook]] 20:35 Jan 8, 2007 PST&lt;br /&gt;
**Using the PARCEL_MEDIA_COMMAND_AGENT, I&#039;m told you can give each agent their own stream to listen to. So you could do the user method, or more likely, append a query string, e.g:&amp;lt;div style=&amp;quot;font-size:140%;&amp;quot;&amp;gt;&amp;lt;code class=&amp;quot;lsl&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_URL,&#039;http://&#039; + (string)llGetOwner() + &#039;:&#039; + stringVar__password + &#039;@icecast.example.com:8000&#039;,PARCEL_MEDIA_COMMAND_AGENT,llGetOwner()]);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
**[[User:SignpostMarv Martin|SignpostMarv Martin]] 03:31, 10 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding a Avatar Local Stream Channel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Peer to Peer Voice over IP using above idea, improved ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More efficient local cache ==&lt;br /&gt;
* &#039;&#039;&#039;Comment:&#039;&#039;&#039; Seronis has some good ideas on how this should be implemented. [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
* &#039;&#039;&#039;Comment:&#039;&#039;&#039; Definitely. One cache per region, to a configurable cap total, would be an immense load off the asset servers, and off of our poor bandwidth. [[User:Buckaroo Mu|Buckaroo Mu]] 11:30, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [http://en.wikipedia.org/wiki/Client-To-Client_Protocol CTCP] protocol layered on IM system ==&lt;br /&gt;
* Bleh ? [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Command Line Interface Improvements ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More sophisticated IM  features ==&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039; with a big hell yes. In a large group, it&#039;s difficult to keep track of a conversation when there is a mass exodus from the session. It&#039;s annoying having the system spam the window. [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Shortcut/Link/Alias function in Inventory ==&lt;br /&gt;
A pure viewer based solution can &amp;quot;only&amp;quot; be a hack at best. A possible implementation could be:&lt;br /&gt;
&lt;br /&gt;
#) Change the viewer, so that when a drag and drop operation is performed on a &#039;no-copy&#039; item, the error is trapped&lt;br /&gt;
#) for each error, register the UUID of the object in a special notecard&lt;br /&gt;
#) When presenting the contents of a folder in the viewer, preset a mixture of the real contents and the contents of the note card&lt;br /&gt;
#) Hide the special notecard&lt;br /&gt;
#) Handle folder drops onto the avatar&lt;br /&gt;
#) Handle moving of the special links&lt;br /&gt;
#) Handle deletion of the special links&lt;br /&gt;
#) Handle deletion of the original &#039;no-copy&#039; item&lt;br /&gt;
&lt;br /&gt;
This will only a partial solution, as an scrips running on the servers will still see the real contents of the folder.&lt;br /&gt;
&lt;br /&gt;
:Yea, I realized that this would really have to include a new Inventory Type ID - but do the servers do checking for type IDs? This may be something that can be done client-side with either no server-side change or only one very minor one - the assignment of a Type ID. For instance: Assume the new Inventory Type of Link, which simply stores the UUID of the original object. The simplest thing to do with them regarding copying would be to make them either no-transfer, or &amp;quot;delete on transfer&amp;quot; - they simply go away if you try to transfer them. In every other way, it behaves as a normal inventory item. [[User:Buckaroo Mu|Buckaroo Mu]] 09:15, 11 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
::This definitely could be fudged by using a series of specially named notecards (for configuration data), allowing the feature to be implemented without requiring modifications to the server&lt;br /&gt;
::[[User:SignpostMarv Martin|SignpostMarv Martin]] 10:03, 11 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
:::It &#039;&#039;could be&#039;&#039; fudged with notecards - but how many hacks do you want in SL? The assignment of an additional inventory type at the server end, as far I as can tell from the viewer source, would require probably two lines of code. We need to work with LL to see if they would support this inclusion, rather than make kludges that work but are far less elegant, and may break scripts. [[User:Buckaroo Mu|Buckaroo Mu]] 16:16, 12 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
::::You&#039;re forgetting something: the servers aren&#039;t built for dynamic assets. &#039;Fudging&#039; it would allow the community to decide on features and interfaces while Linden Lab make the significant changes to the server required for this to work.&lt;br /&gt;
::::[[User:SignpostMarv Martin|SignpostMarv Martin]] 21:12, 12 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== DirectX3D Hardware Acceleration ==&lt;br /&gt;
&lt;br /&gt;
The OpenGL code is scattered all over the entire codebase. You&#039;d have to abstract out all the 3D code first, it wouldn&#039;t be an improvement it would be a complete rewrite.&lt;br /&gt;
&lt;br /&gt;
== GPGPU Support ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Multiple Monitor Support ==&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039; I&#039;ve been wanting this since I only had one monitor :-D [[User:SignpostMarv Martin|SignpostMarv Martin]] 11:13, 10 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Embedded scripting language for client-side plugins ==&lt;br /&gt;
One way of doing this would be to exploit the xpcom architecture of Mozilla. Exposing the viewer core as xpcom interfaces. That way the flexibility and extensibility of the Mozilla engine could be used.&lt;br /&gt;
&lt;br /&gt;
The viewer already includes the mozilla engine, using xpcom it will be possible to use Javascript, Java, C++ (Mono/.Net is under way).&lt;br /&gt;
&lt;br /&gt;
This would require that a definition of an interface layer between the core viewer and the xpcom system inside Mozilla, once that was defined and implemented, the viewer functionality could be extened using almost any language.&lt;br /&gt;
&lt;br /&gt;
[[User:Duffy Langdon|Duffy Langdon]] 12:34, 10 January 2007&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nude patch ==&lt;br /&gt;
It&#039;s inevitable.  Any bets on how long it will be?&lt;br /&gt;
# Ages ago. Around about the time alpha textures for clothes were allowed. [[User:SignpostMarv Martin|SignpostMarv Martin]] 00:53, 11 January 2007 (PST)&lt;br /&gt;
# Do bear in mind that my mention of a possible implementation for the &#039;nude patch&#039; would be akin to hallucinating, due to the also mentioned ability to run extra-stringent checks on the server side for submitted content in PG regions. [[User:SignpostMarv Martin|SignpostMarv Martin]] 01:08, 11 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think a nude patch could work anyway - the skin and clothing textures are combined on the wearer&#039;s client, then the combined texture is uploaded to the server as the single texture that appears on the avatar. That&#039;s why &amp;quot;rebaking&amp;quot; your textures on your client affects how other people see you. You could possibly just apply the same skin to everyone but you might just as well leave everyone unrezzed then ;) - Yumi Murakami&lt;br /&gt;
			&lt;br /&gt;
: and chase all your payig customers away ? In order for us to build our business out in SL and represent our RL business inside SL such things should never be possible therefor as this is a technical wiki and forum how to further create a better client i suggest to build as much security in the client as possible ro prevent such &#039;attacks&#039; on our avatars. [[User:River Senyurt|River Senyurt]] 11:34, 12 January 2007&lt;br /&gt;
&lt;br /&gt;
:: As I described in the Barriers to implementation section for this &amp;quot;feature&amp;quot;, security such as this would have to be built into the server. Since the Viewer is now GPL, all it would take is for someone to remove this &#039;security&#039; layer, and you&#039;re right back where you started, thus Linden Lab are highly unlikely to spend time implementing such a mechanism in the client. The method I described has benefits for both the main and teen grids anyway.&lt;br /&gt;
&lt;br /&gt;
:: Aside from the odd oversight over the years (e.g. texture uploads, megaprims), all security and validation operations are executed on the server side. It fits into LL&#039;s behaviour to implement such checks on the server, and while they could, and most likely will do something alone these lines, there is unfortunately nothing you can do to stop somebody else making their client get nervous imagine you in your underwear. Or less.&lt;br /&gt;
:: [[User:SignpostMarv Martin|SignpostMarv Martin]] 04:18, 12 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Out of sight., out of mind ==&lt;br /&gt;
&lt;br /&gt;
# The client has an option to prevent certain types of objects from being rendered&lt;br /&gt;
# Objects are addressed server-side by UUID&lt;br /&gt;
&lt;br /&gt;
The client would have be made aware of the UUID of an object, categorising it as a new type of object, and a hotkey could be used to toggle the visibility.&lt;br /&gt;
&lt;br /&gt;
Similarly, if a photographer or machinimaker is working in-world, the following options would be useful:&lt;br /&gt;
&lt;br /&gt;
* Do not render anything other than the land owner&#039;s objects&lt;br /&gt;
* Do not render objects not owned by people on your friends list&lt;br /&gt;
* Do not render avatars on your friends list&lt;br /&gt;
&lt;br /&gt;
This would enable people to deal with certain types of griefer attacks more easily, much in the same way that toggling particles on and off can be useful when particle poofers have been dropped.&lt;br /&gt;
&lt;br /&gt;
[[User:SignpostMarv Martin|SignpostMarv Martin]] 15:32, 12 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Night skies ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m working on customizing the night sky.  Since the sky, and especially the starfield, are strictly client-side effects, this would involve storing the data in a local file.  Where would be the best place to store this, and what would be the best way to access it?&lt;br /&gt;
&lt;br /&gt;
Are there any plans for things like sim-wide data storage?  Such a thing would make it possible to assign per-sim or per-area skies.  I figure a decent starfield would require between 8k and 16k of storage; objects like comets, planets, and the like would be much smaller. --[[User:Carnildo Greenacre|Carnildo Greenacre]] 00:48, 13 January 2007 (PST)&lt;/div&gt;</summary>
		<author><name>Carnildo Greenacre</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Build_the_Viewer_on_Linux&amp;diff=5093</id>
		<title>Build the Viewer on Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Build_the_Viewer_on_Linux&amp;diff=5093"/>
		<updated>2007-01-12T18:40:57Z</updated>

		<summary type="html">&lt;p&gt;Carnildo Greenacre: /* Augh!!  The client seems REALLY slow!! */ Better wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CompileNav}}&lt;br /&gt;
&lt;br /&gt;
The following are instructions for building the Second Life viewer on linux. This process has only been used on [http://www.debian.org/ debian] and debian based systems like [http://www.ubuntu.com/ ubuntu]. For other platforms, see [[Get source and compile]].&lt;br /&gt;
&lt;br /&gt;
== Installing the required dependencies ==&lt;br /&gt;
&lt;br /&gt;
The Second Life Viewer has a number of compile/link dependencies on external libraries which need to be put in place first - to help you, the source download page contains a link to a &amp;lt;i&amp;gt;slviewer-linux-libs&amp;lt;/i&amp;gt; package which you unpack over the source tree to fill most of the dependancies (and thus avoid most of the fiddly work described on this page).  The Second Life Viewer is not a trivial build, and experience with building large software packages will help you greatly - but don&#039;t be daunted, it should be simple once the dependencies are in the right place the first time.&lt;br /&gt;
&lt;br /&gt;
Paths and package names given here are based on Ubuntu 6.06 and may vary according to your Linux distribution.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* You will need the &amp;lt;b&amp;gt;SCons&amp;lt;/b&amp;gt; build tool [package: scons]&lt;br /&gt;
* You should use the &amp;lt;b&amp;gt;GCC 3.4&amp;lt;/b&amp;gt; C/C++ compiler [package: g++-3.4]; other GCC versions are not well-tested; GCC 4.x will NOT currently build the viewer without some code adjustments.&lt;br /&gt;
&lt;br /&gt;
* fetch and unpack &amp;lt;b&amp;gt;FMOD 3.75&amp;lt;/b&amp;gt; &amp;lt;http://www.fmod.org/&amp;gt;&lt;br /&gt;
** FMOD provides audio output, but (although &#039;free&#039; in some senses) is not itself open-source.  &amp;lt;b&amp;gt;If&amp;lt;/b&amp;gt; you wish to avoid FMOD, thus disabling audio, you may make these changes:&lt;br /&gt;
*** Remove the reference to &#039;&amp;lt;b&amp;gt;fmod-3.75&amp;lt;/b&amp;gt;&#039; in indra/SConstruct&lt;br /&gt;
*** Replace &#039;&amp;lt;b&amp;gt;-DLL_SDL=1&amp;lt;/b&amp;gt;&#039; with &#039;&amp;lt;b&amp;gt;-DLL_SDL=1 -DLL_FMOD=0&amp;lt;/b&amp;gt;&#039; in indra/SConstruct&lt;br /&gt;
*** Comment-out the libfmod line in indra/newview/linux_tools/client-manifest-i686&lt;br /&gt;
&lt;br /&gt;
* You will need the &amp;lt;b&amp;gt;Curl&amp;lt;/b&amp;gt; library [package: libcurl-dev]&lt;br /&gt;
&lt;br /&gt;
* You will need some development headers for OpenGL and X11: gl.h, glext.h, glu.h, Xlib.h, and Xutil.h [packages: mesa-common-dev, libglu1-mesa-dev, libx11-dev]&lt;br /&gt;
&lt;br /&gt;
* You will need &amp;lt;b&amp;gt;GTK 2.x development headers&amp;lt;/b&amp;gt; [libgtk2.0-dev]&lt;br /&gt;
&lt;br /&gt;
* You will need &amp;lt;b&amp;gt;yacc&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;lex&amp;lt;/b&amp;gt; [suggest packages: bison, flex]&lt;br /&gt;
&lt;br /&gt;
* You may &amp;lt;b&amp;gt;either&amp;lt;/b&amp;gt; use our easy &amp;lt;i&amp;gt;slviewer-linux-libs&amp;lt;/i&amp;gt; bundle of pre-built libraries and headers unpacked into the Second Life Viewer source tree, &amp;lt;b&amp;gt;or&amp;lt;/b&amp;gt; (for example if you are porting to a new architecture or wish to make a package tailored to your Linux distribution&#039;s own libraries) you will have to install the following additional dependencies:&lt;br /&gt;
** &amp;lt;b&amp;gt;boost&amp;lt;/b&amp;gt; [libboost-dev]&lt;br /&gt;
** &amp;lt;b&amp;gt;boost-regex&amp;lt;/b&amp;gt; [libboost-regex-dev]&lt;br /&gt;
** &amp;lt;b&amp;gt;apr-1&amp;lt;/b&amp;gt; [libapr1.0-dev]&lt;br /&gt;
** &amp;lt;b&amp;gt;aprutil-1&amp;lt;/b&amp;gt; [libaprutil1.0-dev]&lt;br /&gt;
** &amp;lt;b&amp;gt;xmlrpc-epi 0.51&amp;lt;/b&amp;gt; &amp;lt;http://xmlrpc-epi.sourceforge.net/&amp;gt;&lt;br /&gt;
*** note: not xmlrpc-c (xmlrpc-c has a library and headers with the same name but is not compatible)&lt;br /&gt;
*** Build with ./configure --prefix=/usr --includedir=/usr/include/xmlrpc-epi  --[[User:Caelum Lewellen|Caelum Lewellen]] 15:47, 11 January 2007 (PST)&lt;br /&gt;
** &amp;lt;b&amp;gt;jpeglib&amp;lt;/b&amp;gt; [libjpeg62-dev]&lt;br /&gt;
** &amp;lt;b&amp;gt;SDL&amp;lt;/b&amp;gt; [libsdl1.2-dev]&lt;br /&gt;
** &amp;lt;b&amp;gt;Vorbis&amp;lt;/b&amp;gt; [libvorbis-dev]&lt;br /&gt;
** build &amp;lt;b&amp;gt;ELFIO&amp;lt;/b&amp;gt; &amp;lt;http://sourceforge.net/projects/elfio/&amp;gt;&lt;br /&gt;
** build &amp;lt;b&amp;gt;OpenJPEG&amp;lt;/b&amp;gt; &amp;lt;http://www.openjpeg.org/&amp;gt;&lt;br /&gt;
** &amp;lt;b&amp;gt;expat&amp;lt;/b&amp;gt; [libexpat1-dev]&lt;br /&gt;
&lt;br /&gt;
=== Copy headers and libraries into the source tree ===&lt;br /&gt;
&lt;br /&gt;
Here is a guide to the sequence of shell commands needed to copy the required headers and libraries into the Second Life Viewer source tree for building.  Actual paths to system headers may vary according to Linux distribution.&lt;br /&gt;
* ${SLSRC} refers to the top-level directory of the Second Life Viewer source tree.&lt;br /&gt;
* ${FMOD} refers to the top-level directory into which you unpacked FMOD 3.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 cp ${FMOD}/api/inc/* ${SLSRC}/libraries/i686-linux/include/&lt;br /&gt;
 cp ${FMOD}/api/libfmod-3.75.so ${SLSRC}/libraries/i686-linux/lib_release_client/&lt;br /&gt;
&lt;br /&gt;
 cp -a /usr/include/atk-1.0 ${SLSRC}/libraries/i686-linux/include/&lt;br /&gt;
 cp -a /usr/include/gtk-2.0 ${SLSRC}/libraries/i686-linux/include/&lt;br /&gt;
 cp -a /usr/lib/gtk-2.0/include/* ${SLSRC}/libraries/i686-linux/include/gtk-2.0/&lt;br /&gt;
 cp -a /usr/include/glib-2.0 ${SLSRC}/libraries/i686-linux/include/&lt;br /&gt;
 cp -a /usr/lib/glib-2.0/include/* ${SLSRC}/libraries/i686-linux/include/glib-2.0/&lt;br /&gt;
 cp -a /usr/include/pango-1.0 ${SLSRC}/libraries/i686-linux/include/&lt;br /&gt;
&lt;br /&gt;
if your GTK is fairly recent and thus needs Cairo:&lt;br /&gt;
 cp -a /usr/include/cairo/* ${SLSRC}/libraries/i686-linux/include/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using our easy &amp;lt;i&amp;gt;slviewer-linux-libs&amp;lt;/i&amp;gt; bundle then you can skip the rest of this section, &amp;lt;b&amp;gt;otherwise&amp;lt;/b&amp;gt; you will also need to perform the following:&lt;br /&gt;
* ${OPENJPEG} refers to the top-level directory of your completed OpenJPEG build.&lt;br /&gt;
* ${ELFIO} refers to the top-level directory of your completed ELFIO build.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 cp -a /usr/include/apr-1.0/ ${SLSRC}/libraries/i686-linux/include/apr-1&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/expat&lt;br /&gt;
 cp -a /usr/include/expat*.h ${SLSRC}/libraries/i686-linux/include/expat/&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/zlib&lt;br /&gt;
 cp -a /usr/include/zlib*.h ${SLSRC}/libraries/i686-linux/include/zlib/&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/openjpeg&lt;br /&gt;
 cp ${OPENJPEG}/libopenjpeg/openjpeg.h ${SLSRC}/libraries/i686-linux/include/openjpeg/&lt;br /&gt;
 cp ${OPENJPEG}/libopenjpeg.a ${SLSRC}/libraries/i686-linux/lib_release_client/&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/ELFIO&lt;br /&gt;
 cp ${ELFIO}/ELFIO/*.h ${SLSRC}/libraries/i686-linux/include/ELFIO/&lt;br /&gt;
 cp ${ELFIO}/ELFIO/libelfio.so ${SLSRC}/libraries/i686-linux/lib_release_client/&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/jpeglib&lt;br /&gt;
 cp -a /usr/include/j*.h ${SLSRC}/libraries/i686-linux/include/jpeglib/&lt;br /&gt;
 touch ${SLSRC}/libraries/i686-linux/include/jpeglib/jinclude.h&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/llfreetype2&lt;br /&gt;
 cp -a /usr/include/freetype2/freetype/ ${SLSRC}/libraries/i686-linux/include/llfreetype2/&lt;br /&gt;
 cp -a /usr/include/ft2build.h ${SLSRC}/libraries/i686-linux/include/llfreetype2/freetype/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cd indra&lt;br /&gt;
 $ scons DISTCC=no BTARGET=client BUILD=release&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Expect a build time of a couple of hours.  The resulting unstripped Second Life Viewer binary is &amp;lt;b&amp;gt;newview/secondlife-i686-bin&amp;lt;/b&amp;gt;. Note that temporary object code is compiled into &amp;lt;b&amp;gt;/tmp/$USER&amp;lt;/b&amp;gt; by default (where $USER is your username) - this can be changed by prefixing the &amp;lt;b&amp;gt;scons&amp;lt;/b&amp;gt; command above with &amp;lt;b&amp;gt;TEMP_BUILD_DIR=&amp;quot;&amp;lt;i&amp;gt;[full directory path]&amp;lt;/i&amp;gt;&amp;quot;&amp;lt;/b&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ TEMP_BUILD_DIR=&amp;quot;/home/fred/secondlife/temp-build&amp;quot; scons DISTCC=no BTARGET=client BUILD=release&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build a release that has all of the shaders and optimizations enabled and resembles the official shipped Linux alpha client, use BUILD=releasefordownload&lt;br /&gt;
&lt;br /&gt;
Be sure to read the [[Common compilation problems]] page if you have problems - we&#039;ll try to keep the page up to date with known problems and solutions.&lt;br /&gt;
&lt;br /&gt;
== Testing and packaging the client ==&lt;br /&gt;
&lt;br /&gt;
=== Testing the result from inside the tree ===&lt;br /&gt;
&lt;br /&gt;
You may find it simpler to follow the instructions in the &#039;Packaging the client&#039; section below to run the client under the same conditions as an end-user would.  Otherwise:&lt;br /&gt;
&lt;br /&gt;
* Preparing to run &#039;in-tree&#039;&lt;br /&gt;
** &amp;lt;i&amp;gt;ensure that you have indra/newview/app_settings/static_*.db2&amp;lt;/i&amp;gt; - if not, you&#039;ll find it in the &#039;slviewer-linux-libs&#039; download.&lt;br /&gt;
** now, from the indra directory:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cp ../scripts/messages/message_template.msg newview/app_settings/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Running it: The LD_LIBRARY_PATH stuff ensures that the binary looks for its libraries in the right places.  From the indra directory:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ ( cd newview &amp;amp;&amp;amp; LD_LIBRARY_PATH=../../libraries/i686-linux/lib_release_client:${LD_LIBRARY_PATH}:/usr/local/lib  ./secondlife-i686-bin )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Augh!!  The client seems REALLY slow!! ====&lt;br /&gt;
&lt;br /&gt;
By default, the open-source Second Life Viewer uses the open-source OpenJPEG library to decode the (many) JPEG-2000 texture images it receives from the servers.  Unfortunately this isn&#039;t quite of comparable speed to the proprietary third-party library which the Linden Lab viewer builds have traditionally used, for which we are not permitted to redistribute the source.&lt;br /&gt;
&lt;br /&gt;
However, the &amp;lt;i&amp;gt;slviewer-linux-libs&amp;lt;/i&amp;gt; package includes two pre-built libraries which facilitate the use of this smoother image decoding method: &amp;lt;b&amp;gt;libkdu_v42R.so&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;libllkdu.so&amp;lt;/b&amp;gt;.  These are provided for your testing; again, we are not permitted to grant you the right to re-distribute these libraries to downstream users, but the viewer will still work (albeit slower) without them.&lt;br /&gt;
&lt;br /&gt;
To &amp;lt;b&amp;gt;use these faster image-decoding libraries&amp;lt;/b&amp;gt;, they simply need to be put into the right places relative to the viewer runtime directory - nothing needs to be reconfigured or recompiled.  If you&#039;re running the client from the source tree, the following will make the KDU libraries available:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 cp &amp;quot;$SLSRC/libraries/i686-linux/lib_release_client/libllkdu.so&amp;quot; &amp;quot;$SLSRC/indra/newview/libllkdu.so&amp;quot;&lt;br /&gt;
 mkdir &amp;quot;$SLSRC/indra/lib&amp;quot;&lt;br /&gt;
 cp &amp;quot;$SLSRC/libraries/i686-linux/lib_release_client/libkdu_v42R.so&amp;quot; &amp;quot;$SLSRC/indra/lib/libkdu_v42R.so&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;b&amp;gt;indra/newview/linux_tools/client-manifest-i686&amp;lt;/b&amp;gt; contains some commented-out entries describing where these libraries belong; if you uncomment the two lines corresponding to libllkdu and libkdu then they will be automatically copied into the right place in the runtime directory when you follow the &#039;Packaging the client&#039; instructions below.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;Unable to initialize communications&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
If the viewer just displays the error message &amp;quot; Unable to initialize communications&amp;quot; and exits, it can&#039;t find message_template.msg. You did remember to copy it over, right?&lt;br /&gt;
&lt;br /&gt;
=== Packaging the client ===&lt;br /&gt;
&lt;br /&gt;
If you substitute &#039;BUILD=release&#039; with &#039;&amp;lt;b&amp;gt;BUILD=releasefordownload&amp;lt;/b&amp;gt;&#039; in the &#039;Compiling&#039; section above, then packaging the resulting code, libraries, data and documentation into a tarball for the end-user will be done automatically as the final stage of the build process; the pristine end-user client distribution has been assembled into the directory &amp;lt;b&amp;gt;indra/newview/SecondLife_i686_1_X_Y_Z/&amp;lt;/b&amp;gt; and has also been tarred into &amp;lt;b&amp;gt;indra/newview/SecondLife_i686_1_X_Y_Z.tar.bz2&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The file which controls what (and where) files go into the end-user runtime viewer directory is &amp;lt;b&amp;gt;indra/newview/linux_tools/client-manifest-i686&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Packaging errors ====&lt;br /&gt;
&lt;br /&gt;
The final packaging step may fail with errors about the manifest if you are not using the &amp;lt;i&amp;gt;slviewer-linux-libs&amp;lt;/i&amp;gt; bundle; in this case, if you still wish to end up with an end-user viewer package incorporating your own libraries, you can edit the manifest file found at &amp;lt;b&amp;gt;indra/newview/linux_tools/client-manifest-i686&amp;lt;/b&amp;gt;&lt;/div&gt;</summary>
		<author><name>Carnildo Greenacre</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Coding_standard&amp;diff=4827</id>
		<title>Talk:Coding standard</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Coding_standard&amp;diff=4827"/>
		<updated>2007-01-11T05:33:24Z</updated>

		<summary type="html">&lt;p&gt;Carnildo Greenacre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Indentation ==&lt;br /&gt;
&lt;br /&gt;
What does it mean &#039;&#039;Use 4 character tabs for indentation and ensure that your editor is not converting tabs to spaces.&#039;&#039;?&lt;br /&gt;
&lt;br /&gt;
If my editor doesn&#039;t change tabs to spaces, what&#039;s the difference whether they are shown in my editor as 4, 8 or 13 spaces?&lt;br /&gt;
&lt;br /&gt;
[[User:Tharkang Varayez|Tharkang Varayez]] 09:18, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
:Non-code-structure spacing.  Consider:&lt;br /&gt;
          func_call(one_param, two_param, three_param,&lt;br /&gt;
                    four_param, five_param, six_param);&lt;br /&gt;
:The indent under func_call could be either ten spaces, or two tabs and two spaces. --[[User:Carnildo Greenacre|Carnildo Greenacre]] 21:33, 10 January 2007 (PST)&lt;/div&gt;</summary>
		<author><name>Carnildo Greenacre</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:SignpostMarv_Martin/Archive/Implementing_new_features&amp;diff=4826</id>
		<title>User:SignpostMarv Martin/Archive/Implementing new features</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:SignpostMarv_Martin/Archive/Implementing_new_features&amp;diff=4826"/>
		<updated>2007-01-11T04:30:53Z</updated>

		<summary type="html">&lt;p&gt;Carnildo Greenacre: It&amp;#039;s inevitable&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiContribBox}}&lt;br /&gt;
&lt;br /&gt;
Of course, a really valuable way to contribute is to add a new feature. Try to work with the community and with Linden Lab in planning the feature before running off and implementing new things. Though we appreciate your hard work, we can&#039;t accept every new feature, since maintaining new features comes with a cost. Try thinking of ways to use APIs to make plugins, or perhaps propose new APIs to make the viewer more extensible, before adding new things to the core viewer.&lt;br /&gt;
&lt;br /&gt;
== Ideas for new Features ==&lt;br /&gt;
&lt;br /&gt;
=== Alternate Rendering Engines ===&lt;br /&gt;
* older hardware support, etc...&lt;br /&gt;
* [http://www.google.ca/search?q=Open+Source+3D+Engine (&#039;&#039;Open Source 3D Engine&#039;&#039;)]&lt;br /&gt;
** Heh, isn&#039;t SL already running on an open source 3D engine? :-)&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
&lt;br /&gt;
=== Better Sound Support ===&lt;br /&gt;
* Preload status&lt;br /&gt;
* playback control, etc...&lt;br /&gt;
** Quote: &#039;&#039;llKelly: eightltr: yes, that idea has been suggested in the past. (&#039;&#039;&#039;L$1 per 1sec audio&#039;&#039;&#039;)  I think we would rather improve the methods of linking to externally hosted sounds.&#039;&#039;&lt;br /&gt;
* MIDI Support - maybe with some nice clientside Wavetables&lt;br /&gt;
* MOD, XM, ect. Support&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039;. [[Community Bounties#VLC instead of QuickTime]] might help. [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
=== Removing Texture Loading ===&lt;br /&gt;
* so SL can run on less powerful Systems (say the N800/N770)&lt;br /&gt;
** How complete do you want this to be? I made a very quick and easy patch that prevents the client from requesting any image downloads, but in my experience it still rendered a few textures like the grass terrain and avatar hair. It sped up the framerate a lot, but didn&#039;t change the GPU requirements to run SL. If the latter is your goal you&#039;d probably have better luck by removing shaders and disabling OpenGL extensions. --[[User:Eddy Stryker|Eddy Stryker]] 12:01, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039; -- Disabling texture download/display would be a great asset to people interested in communication more than shopping/etc. [[User:Kamilion Schnook|Kamilion Schnook]]&lt;br /&gt;
** As long as you like the color grey :-) --[[User:Eddy Stryker|Eddy Stryker]] 12:01, 9 January 2007 (PST)&lt;br /&gt;
* &#039;&#039;&#039;Comment:&#039;&#039;&#039; As far as I was aware, libSL clients don&#039;t load textures, due to the lack of JPEG 2000 support :-P [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
** This is somewhat incorrect. libsecondlife has had JPEG2000 support for quite some time through our jasper shim called libjaspernet, and some projects use it. Most don&#039;t however, as there are few interactive GUI clients using libsecondlife. --[[User:Eddy Stryker|Eddy Stryker]] 12:01, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
=== Patching it so that llLoadURL opens the F1 Help Browser ===&lt;br /&gt;
* Adding keyword replacement in llLoadURL, Streaming media support, and other external links&lt;br /&gt;
** For instance, to provide an icecast stream with a agent UUID, &amp;lt;nowiki&amp;gt;http://&#039;&#039;&#039;agentkey&#039;&#039;&#039;:apassword@icecast.somehost.com:8000&amp;lt;/nowiki&amp;gt; as a parcel URL&lt;br /&gt;
* To provide an external website with a SL User Name, &amp;lt;nowiki&amp;gt; http://www.somesite.com/somephp.php?query=stuff&amp;amp;slname=&#039;&#039;agentname&#039;&#039;&amp;amp;action=buy&amp;amp;deliveryto=&#039;&#039;agentkey&#039;&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
* Unless the LSL2 VM starts supporting optional parameters, you risk breaking thousands of scripts&lt;br /&gt;
** &#039;&#039;&#039;Workaround:&#039;&#039;&#039; Prefix urls with ubrowser:, e.g. &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;ubrowser:http://example.com&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;, which will result in the dialog box indicating that the url will open inside the client.&lt;br /&gt;
** &#039;&#039;&#039;Alternative Workaround:&#039;&#039;&#039; Clientside rewriting only, for connecting to media URLs&lt;br /&gt;
==== Comments ====&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039; [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
* Streaming media urls can be implemented in this manner by making use of string concatenation, e.g. &amp;lt;nowiki&amp;gt;llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_URL,&#039;http://&#039; + (string)llGetOwner() + &#039;:&#039; + stringVar__password + &#039;@icecast.example.com:8000&#039;,PARCEL_MEDIA_COMMAND_AGENT,llGetOwner()]);&amp;lt;/nowiki&amp;gt; [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
* The problem with this, is that doing this via serverside script is that there&#039;s only one media URL, and you&#039;d be connecting to it with the owner&#039;s key -- What is wanted is each individual client responds with it&#039;s own key. For instance, integrating a &amp;quot;Who is listening in SL&amp;quot; to an icecast server. Each connected client supplies it&#039;s own key/name via rewriting, and a name2key/key2name DB displays each individually connected user&#039;s SL information. [[User:Kamilion Schnook|Kamilion Schnook]] 20:35 Jan 8, 2007 PST&lt;br /&gt;
**Using the PARCEL_MEDIA_COMMAND_AGENT, I&#039;m told you can give each agent their own stream to listen to. So you could do the user method, or more likely, append a query string, e.g:&amp;lt;div style=&amp;quot;font-size:140%;&amp;quot;&amp;gt;&amp;lt;code class=&amp;quot;lsl&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_URL,&#039;http://&#039; + (string)llGetOwner() + &#039;:&#039; + stringVar__password + &#039;@icecast.example.com:8000&#039;,PARCEL_MEDIA_COMMAND_AGENT,llGetOwner()]);&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
**[[User:SignpostMarv Martin|SignpostMarv Martin]] 03:31, 10 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
=== Adding a Avatar Local Stream Channel ===&lt;br /&gt;
* that has a Range of X Meters around an Avatar&lt;br /&gt;
* This would be used for Local Audio Streaming &lt;br /&gt;
** Or Local VoIP chat &lt;br /&gt;
** Teamspeak...&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
&lt;br /&gt;
=== Peer to Peer Voice over IP using above idea, improved ===&lt;br /&gt;
** Capible clients advertise themselves via below CTCP-style protocol&lt;br /&gt;
** Clients use multicast packets to broadcast to a list of addresses the server manages of clients in range.&lt;br /&gt;
** In effect, this would give each avatar two unidirectional shoutcast-style stream impliments, or one bidirectional impliment.&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
&lt;br /&gt;
=== More efficient local cache ===&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
* &#039;&#039;&#039;Comment:&#039;&#039;&#039; Seronis has some good ideas on how this should be implemented. [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
* &#039;&#039;&#039;Comment:&#039;&#039;&#039; Definitely. One cache per region, to a configurable cap total, would be an immense load off the asset servers, and off of our poor bandwidth. [[User:Buckaroo Mu|Buckaroo Mu]] 11:30, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
=== [http://en.wikipedia.org/wiki/Client-To-Client_Protocol CTCP] protocol layered on IM system ===&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
Establishing a circuit between two clients will probably require server side assistance, since circuits are UDP based, and most clients will be behind NAT&#039;s and firewalls. CTCP will require a clientside listening socket either implemented via [http://www.faqs.org/rfcs/rfc3489.html RFC 3489] or some sort of UPnP code using a TCP direct connection.&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
* Bleh ? [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
=== Command Line Interface Improvements ===&lt;br /&gt;
* for changing preferences sending an IM, teleporting, etc&lt;br /&gt;
** for example: &amp;quot;/set drawdist 96&amp;quot;, &amp;quot;/set sound off&amp;quot;, &amp;quot;/tp ahern&amp;quot;, or &amp;quot;/im kex godel hello&amp;quot;&lt;br /&gt;
** would need an escape system which doesn&#039;t conflict with script command gestures (or a reserved words like how /me is)&lt;br /&gt;
** Or better yet, the Ctrl-G Gesture management window could be improved to allow this, and even allow rebinding /commands&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
* Implementing an escape system which doesn&#039;t conflict with script command gestures (or a reserved words like how /me is)&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
&lt;br /&gt;
=== More sophisticated IM  features ===&lt;br /&gt;
* muting/filtering/autoresponse options&lt;br /&gt;
** mute or do not alert on IMs by started by a group, agent, or group-agent&lt;br /&gt;
** Autoreply to IMs received while (Away)&lt;br /&gt;
** Sidebar Userlist of Active Users who are currently participating in a Group IM Session. &lt;br /&gt;
*** When a user says something, they&#039;re added. When a user leaves the session, they&#039;re removed from the list.&lt;br /&gt;
* More control over filtering specific objects/textures/sounds/agents/etc&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039; with a big hell yes. In a large group, it&#039;s difficult to keep track of a conversation when there is a mass exodus from the session. It&#039;s annoying having the system spam the window. [[User:SignpostMarv Martin|SignpostMarv Martin]] 07:51, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
=== Shortcut/Link/Alias function in Inventory ===&lt;br /&gt;
*Add a &amp;quot;link&amp;quot; (&amp;quot;alias&amp;quot;, &amp;quot;shortcut&amp;quot;) facility to the inventory, that would not break Permissions. For instance, I have one nice set of prim dress shoes that are no-copy, and four tuxedos. I cannot make complete separate outfits, because I have only one copy of the shoes. However, using a &amp;quot;link&amp;quot;, I could create an outfit folder with the tux and a link to the no-copy shoes. Still means I would only have the one set, but it would make changing clothes much much easier. [[User:Buckaroo Mu|Buckaroo Mu]] 09:23, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
A pure viewer based solution can &amp;quot;only&amp;quot; be a hack at best. A possible implementation could be:&lt;br /&gt;
&lt;br /&gt;
#) Change the viewer, so that when a drag and drop operation is performed on a &#039;no-copy&#039; item, the error is trapped&lt;br /&gt;
#) for each error, register the UUID of the object in a special notecard&lt;br /&gt;
#) When presenting the contents of a folder in the viewer, preset a mixture of the real contents and the contents of the note card&lt;br /&gt;
#) Hide the special notecard&lt;br /&gt;
#) Handle folder drops onto the avatar&lt;br /&gt;
#) Handle moving of the special links&lt;br /&gt;
#) Handle deletion of the special links&lt;br /&gt;
#) Handle deletion of the original &#039;no-copy&#039; item&lt;br /&gt;
&lt;br /&gt;
This will only a partial solution, as an scrips running on the servers will still see the real contents of the folder.&lt;br /&gt;
&lt;br /&gt;
=== DirectX3D Hardware Acceleration ===&lt;br /&gt;
*A DirectX3D-driven version of the viewer, allowing those with ATi or Intel hardware accelerated cards to take advantage of the processing power. The system could allow selection as a preference of OpenGL or DirectX3D, as many Windows-only games currently do. Conditional build statements would keep the option from appearing in the non-DirectX3D capable builds. [[User:Buckaroo Mu|Buckaroo Mu]] 09:28, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
&lt;br /&gt;
=== GPGPU Support ===&lt;br /&gt;
*A method of offloading some of the [http://www.gpgpu.org/ graphics processing to the GPU] might help increase framerate. [[User:Buckaroo Mu|Buckaroo Mu]] 09:37, 9 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
&lt;br /&gt;
=== Multiple Monitor Support ===&lt;br /&gt;
*Support for detachable sub-windows, allowing the inventory, chat history, IM, etc. windows to be moved to a second monitor (if available). This is a very highly-desired feature (by those that have dual-monitor systems). [[User:Buckaroo Mu|Buckaroo Mu]] 09:37, 9 January 2007 (PST)&lt;br /&gt;
* This could potentially be done using an external program, if SL had some way of exposing this data in a crossplatform way. (Does NT support named pipes?) Some libsecondlife projects such as SLeek are already exposing this. [[User:Kamilion Schnook|Kamilion Schnook]] 20:39 Jan 9 2007&lt;br /&gt;
==== Potential Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
* &#039;&#039;&#039;Seconded&#039;&#039;&#039; I&#039;ve been wanting this since I only had one monitor :-D [[User:SignpostMarv Martin|SignpostMarv Martin]] 11:13, 10 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
=== Client Side Scripting ===&lt;br /&gt;
* Make the client more powerful and plugable &lt;br /&gt;
&lt;br /&gt;
==== Known Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
One way of doing this would be to exploit the xpcom architecture of Mozilla. Exposing the viewer core as xpcom interfaces. That way the flexibility and extensibility of the Mozilla engine could be used.&lt;br /&gt;
&lt;br /&gt;
The viewer already includes the mozilla engine, using xpcom it will be possible to use Javascript, Java, C++ (Mono/.Net is under way).&lt;br /&gt;
&lt;br /&gt;
This would require that a definition of an interface layer between the core viewer and the xpcom system inside Mozilla, once that was defined and implemented, the viewer functionality could be extened using almost any language.&lt;br /&gt;
&lt;br /&gt;
=== Nude patch ===&lt;br /&gt;
*Modify the client to not render any avatar clothes or attachments.&lt;br /&gt;
&lt;br /&gt;
==== Known Barriers to Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
It&#039;s inevitable.  Any bets on how long it will be?&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
Linden Lab is considering offering bounties for especially desirable features in the viewer.&lt;br /&gt;
&lt;br /&gt;
* [[Linden Lab Bounties]]&lt;br /&gt;
* [[Community Bounties]]&lt;br /&gt;
* [[:Category:Bounties]]&lt;/div&gt;</summary>
		<author><name>Carnildo Greenacre</name></author>
	</entry>
</feed>