<?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=Prodigal+Maeterlinck</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=Prodigal+Maeterlinck"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Prodigal_Maeterlinck"/>
	<updated>2026-06-06T13:46:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Pre_1.20_Client_parameters&amp;diff=1195467</id>
		<title>Talk:Pre 1.20 Client parameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Pre_1.20_Client_parameters&amp;diff=1195467"/>
		<updated>2015-02-04T22:13:10Z</updated>

		<summary type="html">&lt;p&gt;Prodigal Maeterlinck: /* grids.xml */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reworded -skin option and removed link to [[skin]], since this refers to the User Interface skin, not the avatar&#039;s skin. [[User:Simon Nolan|Simon Nolan]] 10:12, 15 May 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
Added directions for Linux users. --[[User:Katheryne Helendale|Katheryne Helendale]] 00:37, 26 May 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== grids.xml ==&lt;br /&gt;
&lt;br /&gt;
This file doesn&#039;t exist in the official installation, and this page contains the only reference to it in the wiki. Is there a source for this? [[User:Prodigal Maeterlinck|Prodigal Maeterlinck]] ([[User talk:Prodigal Maeterlinck|talk]]) 14:13, 4 February 2015 (PST)&lt;/div&gt;</summary>
		<author><name>Prodigal Maeterlinck</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Plugin_architecture&amp;diff=65392</id>
		<title>Talk:Plugin architecture</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Plugin_architecture&amp;diff=65392"/>
		<updated>2008-04-28T16:48:34Z</updated>

		<summary type="html">&lt;p&gt;Prodigal Maeterlinck: /* Security Concerns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Open Source Talk Page}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Glad to see a conversation blooming here.  Any chance we can see a little consolidation of these pages, though?  Looks like we&#039;re sprawling out quite a bit. -- [[User:Rob Linden|Rob Linden]] 20:01, 12 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== semantics ==&lt;br /&gt;
&lt;br /&gt;
This should probably be moved to [[Project:Plugin architecture]]&lt;br /&gt;
&amp;lt;br /&amp;gt;[[User:SignpostMarv Martin|SignpostMarv Martin]] 13:17, 14 February 2007 (PST)&lt;br /&gt;
:No, Project: is used for official metainformation about the open source project from linden lab.  Things like policy statements and such. This namespace is fine. [[User:Gigs Taggart|Gigs Taggart]] 13:30, 14 February 2007 (PST)&lt;br /&gt;
::Is that LL policy, or a practice borrowed from the Wikipedia ?&lt;br /&gt;
::[[User:SignpostMarv Martin|SignpostMarv Martin]] 13:35, 14 February 2007 (PST)&lt;br /&gt;
:::Yes, it is LL&#039;s policy.  The bug in Jira to use multiple namespaces was shot down and closed WONTFIX.  Fragmenting the namespace has negative effects on searching and no real benefit.  Namespaces should be used for pages that are fundamentally different in some way, not as a way to partition articles.  Please don&#039;t use the Project: namespace for articles.  Just create the article and then tag it with categories it fits in.  People can bring up the category page to look through pages in that category.  [[User:Gigs Taggart|Gigs Taggart]] 13:45, 14 February 2007 (PST)&lt;br /&gt;
::::{{JIRA|WEB-22}} was Rob shooting down Strife&#039;s request to have &amp;quot;LSL&amp;quot; added as a custom namespace, &#039;&#039;&#039;not&#039;&#039;&#039; Rob shooting down any and all uses of built-in namespaces.&lt;br /&gt;
::::If this article is intended to be a hub for the standardisation and development of plugins &amp;amp; plugin architecture, then it should be moved to [[Project:Plugin architecture]], as it would be a &amp;quot;project&amp;quot; within the SL Wiki, as opposed to an article which describes the plugin architecture once it&#039;s defined.&lt;br /&gt;
::::[[User:SignpostMarv Martin|SignpostMarv Martin]] 14:35, 14 February 2007 (PST)&lt;br /&gt;
::::P.S. This wouldn&#039;t go under &amp;quot;This wiki should function as one wiki, rather than as a bunch of tiny wikis that happen to share the same domain name.&amp;quot;, as it is purely for organisational purposes, whereas Strife seems to want to segregate the wiki.&lt;br /&gt;
::::[[User:SignpostMarv Martin|SignpostMarv Martin]] 14:40, 14 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
Actually, &amp;quot;Project:&amp;quot; should be reserved for meta information about this wiki itself.  On most MediaWiki installs, the &amp;quot;Project:&amp;quot; namespace is equal to the name of the wiki itself, but I unset that option, thus &amp;quot;Project:&amp;quot; is the sole way of getting to that namespace.  The things that go into the &amp;quot;Project:&amp;quot; namespace should be limited to those things that are about editing policy, etc. -- [[User:Rob Linden|Rob Linden]] 14:47, 14 February 2007 (PST)&lt;br /&gt;
:Ah. So is [[User talk:SignpostMarv Martin/Sandbox/Project:Internationalisation|Project:Internationalisation]] a good use of the namespace or not ?&lt;br /&gt;
:[[User:SignpostMarv Martin|SignpostMarv Martin]] 15:16, 14 February 2007 (PST)&lt;br /&gt;
::Looks good to me. [[User:Gigs Taggart|Gigs Taggart]] 15:56, 14 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== plugin creation complexity ==&lt;br /&gt;
&lt;br /&gt;
#How complex are plugins going to be to create ?&lt;br /&gt;
#Could plugins be written in notepad, or would they have to be developed in an IDE then compiled ?&lt;br /&gt;
#If a plain-text scripting language were to be used, what languages would be advocated for use ? Javascript &amp;lt;small&amp;gt;(yay greasemonkey!)&amp;lt;/small&amp;gt; ? Perl ? Ruby ? Python ? All of the above ?&lt;br /&gt;
&lt;br /&gt;
[[User:SignpostMarv Martin|SignpostMarv Martin]] 19:34, 14 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
:We&#039;re not even close to this point in development or planning. I&#039;m pretty sure higher level scripting languages will make it into client plugins eventually.  &lt;br /&gt;
:--- [[User:Baba Yamamoto|Baba Yamamoto]] 19:10, 16 February 2007 (PST)&lt;br /&gt;
== parameter passing ==&lt;br /&gt;
I don&#039;t like the idea of anonymous pointers for parameter passing. I think that some kind of parameter list is essential.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
  int sl_param_id;  // Defined in the particular function&#039;s API&lt;br /&gt;
  enum {&lt;br /&gt;
    SL_INT32, SL_INT64, SL_FLOAT32, SL_FLOAT64, SL_STRING, SL_ALLOCED_STRING, ...&lt;br /&gt;
  } sl_type;        // Plugin may ignore parameters &lt;br /&gt;
  int sl_required;  // If set, plugin MUST handle this parameter&lt;br /&gt;
  int sl_changed;   // Zero before any plugin called, non-zero if any plugin has changed it&lt;br /&gt;
  int64_t sl_value; // If the type is only 32 bits long, high 32 bits must be zero.&lt;br /&gt;
} sl_param;&lt;br /&gt;
typedef enum { SL_OK, SL_INCOMPATIBLE, SL_ERROR, SL_BREAK } sl_result;&lt;br /&gt;
&lt;br /&gt;
sl_result sl_plugin(int count, sl_param params[], sl_param *error_info);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The function calling the plugin can have all these set in a static structure, and only needs to zero out the sl_changed parameters and set up the initial values. Plugins do not call plugins, the list of plugins for the function are called sequentially by the sl_handle_plugins routine.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(my_plugins != NULL) {&lt;br /&gt;
  my_params[0].sl_changed = 0;&lt;br /&gt;
  my_params[0].sl_value = whatever;&lt;br /&gt;
  final_result = sl_handle_plugins(my_plugins, 1, my_params, &amp;amp;error_param);&lt;br /&gt;
  if(final_result == SL_BREAK) return success;&lt;br /&gt;
  if(final_result == SL_ERROR) {&lt;br /&gt;
    panic(error_param);&lt;br /&gt;
    return failure;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The plugin must at a minimum:&lt;br /&gt;
&lt;br /&gt;
* verify that the sl_param_id values are what it expects and handle (even if by ignoring) the wrong values&lt;br /&gt;
* handle (even if by ignoring the parameter) the &amp;quot;wrong&amp;quot; types&lt;br /&gt;
* return SL_INCOMPATIBLE if any of the parameters it&#039;s ignoring have sl_required set.&lt;br /&gt;
* set sl_changed for any parameters it&#039;s changed&lt;br /&gt;
* fill in error_info if it returns SL_ERROR&lt;br /&gt;
* free an SL_ALLOCED_STRING if it changes the string&lt;br /&gt;
** make sure that the type of the new string parameter is SL_ALLOCED_STRING or SL_STRING to let the caller or later plugins know how to deal with them&lt;br /&gt;
&lt;br /&gt;
The plugin may:&lt;br /&gt;
&lt;br /&gt;
* Handle changes to the order of parameters as indicated by sl_param_id&lt;br /&gt;
* Handle changes to the types of parameters as indicated by sl_type&lt;br /&gt;
* Behave differently if a previous plugin has changed a parameter&lt;br /&gt;
&lt;br /&gt;
Return values:&lt;br /&gt;
&lt;br /&gt;
* SL_OK - Normal return, go on to the next plugin&lt;br /&gt;
* SL_INCOMPATIBLE - This plugin no longer works with this call. Let the user know and don&#039;t call this plugin again.&lt;br /&gt;
* SL_ERROR - This plugin has detected an error sufficiently severe that this call must abort. Should be rare.&lt;br /&gt;
** error_info must be set to { original_param_id, SL_STRING or SL_ALLOCED_STRING, TRUE, TRUE, error_message }.&lt;br /&gt;
* SL_BREAK - Don&#039;t call any further plugins, don&#039;t run the rest of the function, the plugin has completely handled the call.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Argent Stonecutter|Argent Stonecutter]] 06:48, 22 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== content from Implementing new features ==&lt;br /&gt;
&lt;br /&gt;
=== Embedded scripting language for client-side plugins ===&lt;br /&gt;
[[User:Heather Goodliffe|Heather Goodliffe]], [[User:Yumi Murakami|Yumi Murakami]], [[User:Argent Stonecutter|Argent Stonecutter]]&lt;br /&gt;
&lt;br /&gt;
* Make the client more powerful and plugable &lt;br /&gt;
* Embed a scripting language, such as Javascript or Tcl or LUA or Python, within Second Life to enable client plug-ins to be written in a modular fashion.  Client plugins would be distributed via Second Life itself; hopefully LL would eventually agree to create a new object type for these, but for testing purposes notecards would probably suffice.&lt;br /&gt;
* Let me second that: I&#039;d like to see client-side scripting as well.  It should be easy to add that (in particular, using Lua), and it would let users fix so many usability problems.  At a minimum, the scripting language should be able to access the functionality available through the menus, it should permit key bindings and grab keys, access preference settings, and it should be able to listen to chat and IM, so that commands can be triggered from there. [[User:Jherek Cerminara|Jherek Cerminara]]&lt;br /&gt;
&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;
: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;
: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;
:[[User:Duffy Langdon|Duffy Langdon]] 12:34, 10 January 2007&lt;br /&gt;
&lt;br /&gt;
* Something to note: the above plugin architecture would make automatic glue code for scripting languages easy to write. [[User:Argent Stonecutter|Argent Stonecutter]] 06:56, 22 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
[[Category:Future Roundtables]]&lt;br /&gt;
&lt;br /&gt;
== Automated Agents ==&lt;br /&gt;
&lt;br /&gt;
Just curious, how does &amp;quot;Automated Agents&amp;quot; become a plugin ?&lt;br /&gt;
&lt;br /&gt;
Or are you referring to &amp;quot;headless agents&amp;quot; in the context of having all IMs for a Resident&#039;s alts routed through into one instance of SL ?&lt;br /&gt;
&lt;br /&gt;
[[User:SignpostMarv Martin|SignpostMarv Martin]] 22:15, 23 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Security Concerns ==&lt;br /&gt;
&lt;br /&gt;
I believe the hardest part of the plug-in system will be to overcome to security concerns. How many trust being able to download and plug-in arbitrary code that might set off a money event. I&#039;ve heard the casual user of SL not want to deal with such concerns. For that reason, I believe a scripting language is the way to go. We can limit the availability of the API to the scripts. This can be the default to allow arbitrary code in the form of scripts. [[User:Dzonatas Sol|Dzonatas Sol]] 01:54, 7 April 2007 (PDT)&lt;br /&gt;
: Unless a plugin disables the big-ass blue box notice that says &amp;quot;You just have Resident X L$10k&amp;quot;, I think that it&#039;ll be difficult to wholesale rip people off.&lt;br /&gt;
: The suggested method for getting around the security concerns thing would be to have something like https://plugins.secondlife.com whereby each plugin listed on the site has been given the all-clear by Linden Lab as &amp;quot;not ripping people off&amp;quot;.&lt;br /&gt;
: The API cannot be limited, as it&#039;ll be just a case of modifying the source code.&lt;br /&gt;
: [[User:SignpostMarv Martin|SignpostMarv Martin]] 04:56, 7 April 2007 (PDT)&lt;br /&gt;
::I&#039;m pretty sure that a review system as you suggested above won&#039;t scale. [[User:Dzonatas Sol|Dzonatas Sol]] 11:29, 8 April 2007 (PDT)&lt;br /&gt;
::: Of course it won&#039;t. It&#039;s more reliable than limiting the API though.&lt;br /&gt;
::: [[User:SignpostMarv Martin|SignpostMarv Martin]] 02:53, 9 April 2007 (PDT)&lt;br /&gt;
::::It would be easier to allow an option to limit access to the API by default. Let the user decide to over-ride that. Also, there could be certification key like web browser do now. It wasn&#039;t the intent to make it impossible for even certifiable plug-ins to gain greater access. [[User:Dzonatas Sol|Dzonatas Sol]] 13:49, 9 April 2007 (PDT)&lt;br /&gt;
:::::L$ handling should go through the same permissions system an LSL-initiated call goes through.&lt;br /&gt;
:::::&#039;&#039;&#039;&#039;Plugin Foo created by Bar requests permission to debit your account&#039;&#039;&#039;&#039;&lt;br /&gt;
:::::A web-based interface along the lines of flickr should be a usable means of managing permissions.&lt;br /&gt;
:::::[[User:SignpostMarv Martin|SignpostMarv Martin]] 16:45, 9 April 2007 (PDT)&lt;br /&gt;
: Some of this discussion happened a couple months back during Rob&#039;s office hours. Really, if the plugins are dynamically loadable libraries, you can&#039;t do much for security. Even if you don&#039;t expose something in the API, it&#039;s still accessible so long as the plugin has access to the memory space. What would make a lot of sense is creating scripting engines as plugins. If a scripting system proves to be secure, we might be able to eventually convince Linden Lab to ship the scripting system themselves.&lt;br /&gt;
: Creating a scripting system plugin should be pretty straightforward once the plugin system exists, so long as the scripting language has a nearly a one-to-one mapping of script functions to plugin API functions. --[[User:Soft Noel|Soft Noel]] 13:23, 10 April 2007 (PDT)&lt;br /&gt;
: All the same security issues apply to any third-party clients anyway. So why consider solutions that wouldn&#039;t be feasible in a discussion of the security of the whole executable? --[[User:Prodigal Maeterlinck|Prodigal Maeterlinck]] 13:59, 29 November 2007 (PST)&lt;br /&gt;
:: Not everyone uses third-party clients. Many people avoid them for security reasons. [[User:Argent Stonecutter|Argent Stonecutter]] 14:35, 31 December 2007 (PST)&lt;br /&gt;
::: And many of those same people will avoid plugins for the same reason, which only further demonstrates how moot the point is; the population of users who &#039;&#039;won&#039;t&#039;&#039; use third-party development isn&#039;t useful on a discussion forum concerned with developing third-party software. Plugins need no more or less of a reliable security certification process than client browsers themselves, and security isn&#039;t a good reason for delaying a plugin architecture. [[User:Prodigal Maeterlinck|Prodigal Maeterlinck]] 09:48, 28 April 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
===Scripting API for security===&lt;br /&gt;
Some scripting languages have &amp;quot;Safe&amp;quot; interpreter modes: Javascript and Tcl immediately come to mind. Also, scripts are more easily eyeball-firewalled. [[User:Argent Stonecutter|Argent Stonecutter]] 14:35, 31 December 2007 (PST)&lt;br /&gt;
===External plugins for security===&lt;br /&gt;
While an external plugin, connected through a socket of some kind, could still use code injection attacks on the viewer it does raise the bar a little. On the other hand external plugins are limited in what they can do in the viewer... you would need to have them communicate (by chat, say) to a HUD to provide a user interface in-game. Still, this would be a useful option for many applications. [[User:Argent Stonecutter|Argent Stonecutter]] 14:35, 31 December 2007 (PST)&lt;/div&gt;</summary>
		<author><name>Prodigal Maeterlinck</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Viewer_Authentication_Critique&amp;diff=43776</id>
		<title>Talk:Viewer Authentication Critique</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Viewer_Authentication_Critique&amp;diff=43776"/>
		<updated>2007-12-06T21:07:47Z</updated>

		<summary type="html">&lt;p&gt;Prodigal Maeterlinck: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Talk}}&lt;br /&gt;
&lt;br /&gt;
== Process for editing the critique ==&lt;br /&gt;
&lt;br /&gt;
By virtue of jumping first, I think [[User:Matthew Dowd|Matthew Dowd]] should be the working group chair for editing this document.  What I think that means is this:&lt;br /&gt;
*  Anyone can still make no-brainer edits to the article&lt;br /&gt;
*  Matthew will be arbiter for dispute resolution, should that be necessary.&lt;br /&gt;
*  If there are points that Matthew is unclear about, he should delete them from the document, and move them to the talk page.&lt;br /&gt;
*  If there are points that others are unclear about, they should bring them up on the talk page, and then later delete them from the main page if a question/concern goes unanswered on the talk page (with &amp;quot;see talk page&amp;quot; in the comment of the edit).&lt;br /&gt;
*  If, for whatever reason, it becomes necessary to fork this document, it&#039;s best to move all critiques into the user space of the working group chair.  So, for example, Matthew&#039;s version would move to [[User:Matthew Dowd/Viewer Authentication Critique]], and other critiques could also be done the same way.  This page would become a list of critiques.&lt;br /&gt;
&lt;br /&gt;
Sound like a reasonable process?  I think this is lightweight enough that a pretty good document can evolve pretty quickly.  -- [[User:Rob Linden|Rob Linden]] 12:56, 29 September 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Third party viewers/code ==&lt;br /&gt;
&lt;br /&gt;
What&#039;s the substantive difference between these two points?&lt;br /&gt;
#  Viewer still involves running trusted code on the computer and could initiate other attacks e.g.&lt;br /&gt;
# Most of these attacks could be performed by any third-party software designed for use with SL &lt;br /&gt;
Both have many subpoints.  Could they be consolidated into a single point? -- [[User:Rob Linden|Rob Linden]] 20:10, 29 September 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
The first point is that keeping the client from seeing the password doesn&#039;t remove the danger of a modified client.&lt;br /&gt;
&lt;br /&gt;
The second point is that *any* ancillary software (such as animation editors, sculpt editors, sculpt texture plugins) could be used in an attack, even if they don&#039;t actually connect to SL, since they would be used by SL residents.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Argent Stonecutter|Argent Stonecutter]] 21:00, 29 September 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
Is this better, Rob? -- [[User:Argent Stonecutter|Argent Stonecutter]] 21:11, 29 September 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
:Yes, that is.  Thanks for the clarification! -- [[User:Rob Linden|Rob Linden]] 21:44, 29 September 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== No balance ==&lt;br /&gt;
&lt;br /&gt;
This article is pretty awful, its just an attack. For real critique you have to explore the alternatives and discuss the pros and cons for each.&lt;br /&gt;
Even if this form of log in has these disadvantages it could still be an improvement over what we currently have.&lt;br /&gt;
We need a common point of reference to discuss if this is an improvement and what alternatives exist. [[User:Ahab Schmo|Ahab Schmo]] 12:31, 30 September 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nicholaz&#039;s Summary to SLDev ==&lt;br /&gt;
&lt;br /&gt;
I think (and would be surprised otherwise) there currently consensus&lt;br /&gt;
among those who replied here on the list that ...&lt;br /&gt;
&lt;br /&gt;
1) the new auth mechanism does nothing to significantly increase security&lt;br /&gt;
in terms of protecting user assets from malicious viewers (once the&lt;br /&gt;
viewer is logged in, you&#039;re at the mercy of the viewer, no matter how&amp;gt; you logged in)&lt;br /&gt;
&lt;br /&gt;
2) the new auth mechanism makes login to SL cumbersome and breaks many&lt;br /&gt;
ways in which people are currently using SL (alts, switching between&lt;br /&gt;
viewers, etc.)&lt;br /&gt;
&lt;br /&gt;
3) the new auth mechanism will make it impossible for some environment&lt;br /&gt;
to log in from at all (proxies, firewalls, security software, ...)&lt;br /&gt;
or prevent specific forms of viewers (lean viewers, mobile systems,&lt;br /&gt;
viewer on a memory stick, ...)&lt;br /&gt;
&lt;br /&gt;
4) the new auth mechanism will break existing applications (bots, libsl,&lt;br /&gt;
etc.) and these will have to work around these.&lt;br /&gt;
&lt;br /&gt;
5) Allowing these (4) to work around it, means that 3rd party viewers can&lt;br /&gt;
also work around it, meaning that you&#039;ll end up with 3rd party viewers&lt;br /&gt;
which are a lot more convenient than the official viewer, essentially&amp;gt; driving people away from the official viewer.&lt;br /&gt;
&lt;br /&gt;
6) other mechanisms exist, which a) actually increase security and which&lt;br /&gt;
b) do not break existing use and c) are less cumbersome&lt;br /&gt;
&lt;br /&gt;
7) (this is my personal addition but I&#039;d be amazed if anyone disagreed)&lt;br /&gt;
people are losing a lot more assets and value through Linden&lt;br /&gt;
malfunctions (lost inventory, search &amp;amp; classifieds being not seen&lt;br /&gt;
because of outages, etc.) than have ever been lost through spoofing&lt;br /&gt;
or malicious viewers.&lt;br /&gt;
&lt;br /&gt;
8) __whatever mechanism is implemented, should be a *choice* with the__&lt;br /&gt;
__existing mechanisms remaining in place__&lt;br /&gt;
&lt;br /&gt;
9) (see (8) )&lt;br /&gt;
&lt;br /&gt;
10) (see (9) )&lt;br /&gt;
&lt;br /&gt;
Bottom line is that the new auth mechanism is something that offers neglectible&lt;br /&gt;
improvement in security and will cause countless problems or developer&lt;br /&gt;
hours on both sides.&lt;br /&gt;
&lt;br /&gt;
== Anti-fraud measures! ==&lt;br /&gt;
&lt;br /&gt;
It appears there is a greater desire to find anti-fraud measures than to just stop phishing attack by malicious code. Of course, both are of interest, but it appears the anti-fraud bit was stated weakly when in fact it the stronger point. I suspect a major miscommunication occurred here. The viewer itself was addressed by LL rather than augmented security for anti-fraud. I&#039;m under the assumption that LL is not able to release some details to the public at this time, so we get bits and pieces of more minor points rather than the major points with priority.&lt;br /&gt;
&lt;br /&gt;
The article mentions anti-fraud as an objective, but the criticisms are mainly focused on anti-phishing.&lt;br /&gt;
&lt;br /&gt;
In fact, there is mention that anti-fraud is the priority!  [https://lists.secondlife.com/pipermail/sldev/2007-October/005621.html]&lt;br /&gt;
&lt;br /&gt;
Also, we can see the light of this from Robin Linden as pasted below.&lt;br /&gt;
&lt;br /&gt;
I believe the critique needs to address the issue of anti-fraud more significantly. That is to allow such measures even if the anti-phishing has been addressed more (actually too much).&lt;br /&gt;
&lt;br /&gt;
We need to help LL solve fraud in the many forms it appears besides just the login!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://slrecord.typepad.com/the_second_life_record/2007/10/vat-attack.html&lt;br /&gt;
&lt;br /&gt;
(highly edited and cut to remove the mass discussion about VAT)&lt;br /&gt;
&lt;br /&gt;
[11:00]  LilMatty Althouse: recently absue reports have been ignored regarding a child sex parcel owner, multiple pictures have been provided and the response from the support team via a ticket has gone ignored and answered as &#039;if we do somethign we will do it&#039; type attitude..... countless users have been reported by people at the sim&lt;br /&gt;
[11:00]  LilMatty Althouse: conversations logged and re reported&lt;br /&gt;
[11:01]  LilMatty Althouse: we would rather have something we can lgo as well please -&lt;br /&gt;
[11:01]  Robin Linden: Lil - can you please email me at robin@lindenlab.com with the information?&lt;br /&gt;
[11:02]  LilMatty Althouse: robin i have compiled a note card if that would be easier to drop you now&lt;br /&gt;
[11:02]  Robin Linden: We can discuss whatever you&#039;d like to talk about. :)&lt;br /&gt;
[11:02]  LilMatty Althouse: and i can email you more information within a 12 hour period while i compile things into there&lt;br /&gt;
[11:02]  LilMatty Althouse: if i may robin&lt;br /&gt;
[11:02]  Robin Linden: I assume you&#039;re here to talk about VAT?&lt;br /&gt;
[11:02]  LilMatty Althouse: as i have something non vat related :)&lt;br /&gt;
[11:02]  Robin Linden: OK Lil&lt;br /&gt;
[11:12]  LilMatty Althouse: how do you want me to email you, do i include documentation&lt;br /&gt;
[11:12]  Robin Linden: LilMatty - let&#039;s take that offline. It&#039;s a serious charge and I&#039;ll need to get the authorities involved to investigate&lt;br /&gt;
[11:13]  LilMatty Althouse: Ok then I have another question Robin :)&lt;br /&gt;
[11:13]  LilMatty Althouse: Well robin the issue i mentioned earlier&lt;br /&gt;
[11:13]  LilMatty Althouse: or evidence, abuse report tickets?&lt;br /&gt;
[11:15]  Robin Linden: I have the notecard and will follow up.&lt;br /&gt;
&lt;br /&gt;
[11:16]  Jessica Holyoke: I have a question, when you stated that the ebay sellers of lindens were engaged in fraud,were they reported to law enforcement?&lt;br /&gt;
[11:16]  Robin Linden: Not all eBay sellers of Lindens are engaged in fraud.&lt;br /&gt;
[11:18]  Jessica Holyoke: but the one&#039;s that you said were engaged in fraud and took action against their accounts(sorry about the lag)&lt;br /&gt;
[11:19]  Robin Linden: For the most part jessica people who engage in fraud have been tough to catch. We rarely know who they are in RL.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
There&#039;s really not a lot that software design can do to prevent social-engineering frauds, and it&#039;s not really the software&#039;s responsibility. The best you can do is inform and educate those who stay alert to communication, and hope word of mouth ripples out...even if that&#039;s in the form of urban legend hysteria, people will be more careful about what they exchange and who they exchange with.&lt;br /&gt;
 [[User:Prodigal Maeterlinck|Prodigal Maeterlinck]] 13:07, 6 December 2007 (PST)&lt;/div&gt;</summary>
		<author><name>Prodigal Maeterlinck</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Plugin_architecture&amp;diff=42328</id>
		<title>Talk:Plugin architecture</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Plugin_architecture&amp;diff=42328"/>
		<updated>2007-11-29T21:59:30Z</updated>

		<summary type="html">&lt;p&gt;Prodigal Maeterlinck: /* Security Concerns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Open Source Talk Page}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Glad to see a conversation blooming here.  Any chance we can see a little consolidation of these pages, though?  Looks like we&#039;re sprawling out quite a bit. -- [[User:Rob Linden|Rob Linden]] 20:01, 12 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== semantics ==&lt;br /&gt;
&lt;br /&gt;
This should probably be moved to [[Project:Plugin architecture]]&lt;br /&gt;
&amp;lt;br /&amp;gt;[[User:SignpostMarv Martin|SignpostMarv Martin]] 13:17, 14 February 2007 (PST)&lt;br /&gt;
:No, Project: is used for official metainformation about the open source project from linden lab.  Things like policy statements and such. This namespace is fine. [[User:Gigs Taggart|Gigs Taggart]] 13:30, 14 February 2007 (PST)&lt;br /&gt;
::Is that LL policy, or a practice borrowed from the Wikipedia ?&lt;br /&gt;
::[[User:SignpostMarv Martin|SignpostMarv Martin]] 13:35, 14 February 2007 (PST)&lt;br /&gt;
:::Yes, it is LL&#039;s policy.  The bug in Jira to use multiple namespaces was shot down and closed WONTFIX.  Fragmenting the namespace has negative effects on searching and no real benefit.  Namespaces should be used for pages that are fundamentally different in some way, not as a way to partition articles.  Please don&#039;t use the Project: namespace for articles.  Just create the article and then tag it with categories it fits in.  People can bring up the category page to look through pages in that category.  [[User:Gigs Taggart|Gigs Taggart]] 13:45, 14 February 2007 (PST)&lt;br /&gt;
::::{{JIRA|WEB-22}} was Rob shooting down Strife&#039;s request to have &amp;quot;LSL&amp;quot; added as a custom namespace, &#039;&#039;&#039;not&#039;&#039;&#039; Rob shooting down any and all uses of built-in namespaces.&lt;br /&gt;
::::If this article is intended to be a hub for the standardisation and development of plugins &amp;amp; plugin architecture, then it should be moved to [[Project:Plugin architecture]], as it would be a &amp;quot;project&amp;quot; within the SL Wiki, as opposed to an article which describes the plugin architecture once it&#039;s defined.&lt;br /&gt;
::::[[User:SignpostMarv Martin|SignpostMarv Martin]] 14:35, 14 February 2007 (PST)&lt;br /&gt;
::::P.S. This wouldn&#039;t go under &amp;quot;This wiki should function as one wiki, rather than as a bunch of tiny wikis that happen to share the same domain name.&amp;quot;, as it is purely for organisational purposes, whereas Strife seems to want to segregate the wiki.&lt;br /&gt;
::::[[User:SignpostMarv Martin|SignpostMarv Martin]] 14:40, 14 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
Actually, &amp;quot;Project:&amp;quot; should be reserved for meta information about this wiki itself.  On most MediaWiki installs, the &amp;quot;Project:&amp;quot; namespace is equal to the name of the wiki itself, but I unset that option, thus &amp;quot;Project:&amp;quot; is the sole way of getting to that namespace.  The things that go into the &amp;quot;Project:&amp;quot; namespace should be limited to those things that are about editing policy, etc. -- [[User:Rob Linden|Rob Linden]] 14:47, 14 February 2007 (PST)&lt;br /&gt;
:Ah. So is [[User talk:SignpostMarv Martin/Sandbox/Project:Internationalisation|Project:Internationalisation]] a good use of the namespace or not ?&lt;br /&gt;
:[[User:SignpostMarv Martin|SignpostMarv Martin]] 15:16, 14 February 2007 (PST)&lt;br /&gt;
::Looks good to me. [[User:Gigs Taggart|Gigs Taggart]] 15:56, 14 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== plugin creation complexity ==&lt;br /&gt;
&lt;br /&gt;
#How complex are plugins going to be to create ?&lt;br /&gt;
#Could plugins be written in notepad, or would they have to be developed in an IDE then compiled ?&lt;br /&gt;
#If a plain-text scripting language were to be used, what languages would be advocated for use ? Javascript &amp;lt;small&amp;gt;(yay greasemonkey!)&amp;lt;/small&amp;gt; ? Perl ? Ruby ? Python ? All of the above ?&lt;br /&gt;
&lt;br /&gt;
[[User:SignpostMarv Martin|SignpostMarv Martin]] 19:34, 14 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
:We&#039;re not even close to this point in development or planning. I&#039;m pretty sure higher level scripting languages will make it into client plugins eventually.  &lt;br /&gt;
:--- [[User:Baba Yamamoto|Baba Yamamoto]] 19:10, 16 February 2007 (PST)&lt;br /&gt;
== parameter passing ==&lt;br /&gt;
I don&#039;t like the idea of anonymous pointers for parameter passing. I think that some kind of parameter list is essential.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
  int sl_param_id;  // Defined in the particular function&#039;s API&lt;br /&gt;
  enum {&lt;br /&gt;
    SL_INT32, SL_INT64, SL_FLOAT32, SL_FLOAT64, SL_STRING, SL_ALLOCED_STRING, ...&lt;br /&gt;
  } sl_type;        // Plugin may ignore parameters &lt;br /&gt;
  int sl_required;  // If set, plugin MUST handle this parameter&lt;br /&gt;
  int sl_changed;   // Zero before any plugin called, non-zero if any plugin has changed it&lt;br /&gt;
  int64_t sl_value; // If the type is only 32 bits long, high 32 bits must be zero.&lt;br /&gt;
} sl_param;&lt;br /&gt;
typedef enum { SL_OK, SL_INCOMPATIBLE, SL_ERROR, SL_BREAK } sl_result;&lt;br /&gt;
&lt;br /&gt;
sl_result sl_plugin(int count, sl_param params[], sl_param *error_info);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The function calling the plugin can have all these set in a static structure, and only needs to zero out the sl_changed parameters and set up the initial values. Plugins do not call plugins, the list of plugins for the function are called sequentially by the sl_handle_plugins routine.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if(my_plugins != NULL) {&lt;br /&gt;
  my_params[0].sl_changed = 0;&lt;br /&gt;
  my_params[0].sl_value = whatever;&lt;br /&gt;
  final_result = sl_handle_plugins(my_plugins, 1, my_params, &amp;amp;error_param);&lt;br /&gt;
  if(final_result == SL_BREAK) return success;&lt;br /&gt;
  if(final_result == SL_ERROR) {&lt;br /&gt;
    panic(error_param);&lt;br /&gt;
    return failure;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The plugin must at a minimum:&lt;br /&gt;
&lt;br /&gt;
* verify that the sl_param_id values are what it expects and handle (even if by ignoring) the wrong values&lt;br /&gt;
* handle (even if by ignoring the parameter) the &amp;quot;wrong&amp;quot; types&lt;br /&gt;
* return SL_INCOMPATIBLE if any of the parameters it&#039;s ignoring have sl_required set.&lt;br /&gt;
* set sl_changed for any parameters it&#039;s changed&lt;br /&gt;
* fill in error_info if it returns SL_ERROR&lt;br /&gt;
* free an SL_ALLOCED_STRING if it changes the string&lt;br /&gt;
** make sure that the type of the new string parameter is SL_ALLOCED_STRING or SL_STRING to let the caller or later plugins know how to deal with them&lt;br /&gt;
&lt;br /&gt;
The plugin may:&lt;br /&gt;
&lt;br /&gt;
* Handle changes to the order of parameters as indicated by sl_param_id&lt;br /&gt;
* Handle changes to the types of parameters as indicated by sl_type&lt;br /&gt;
* Behave differently if a previous plugin has changed a parameter&lt;br /&gt;
&lt;br /&gt;
Return values:&lt;br /&gt;
&lt;br /&gt;
* SL_OK - Normal return, go on to the next plugin&lt;br /&gt;
* SL_INCOMPATIBLE - This plugin no longer works with this call. Let the user know and don&#039;t call this plugin again.&lt;br /&gt;
* SL_ERROR - This plugin has detected an error sufficiently severe that this call must abort. Should be rare.&lt;br /&gt;
** error_info must be set to { original_param_id, SL_STRING or SL_ALLOCED_STRING, TRUE, TRUE, error_message }.&lt;br /&gt;
* SL_BREAK - Don&#039;t call any further plugins, don&#039;t run the rest of the function, the plugin has completely handled the call.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Argent Stonecutter|Argent Stonecutter]] 06:48, 22 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== content from Implementing new features ==&lt;br /&gt;
&lt;br /&gt;
=== Embedded scripting language for client-side plugins ===&lt;br /&gt;
[[User:Heather Goodliffe|Heather Goodliffe]], [[User:Yumi Murakami|Yumi Murakami]], [[User:Argent Stonecutter|Argent Stonecutter]]&lt;br /&gt;
&lt;br /&gt;
* Make the client more powerful and plugable &lt;br /&gt;
* Embed a scripting language, such as Javascript or Tcl or LUA or Python, within Second Life to enable client plug-ins to be written in a modular fashion.  Client plugins would be distributed via Second Life itself; hopefully LL would eventually agree to create a new object type for these, but for testing purposes notecards would probably suffice.&lt;br /&gt;
* Let me second that: I&#039;d like to see client-side scripting as well.  It should be easy to add that (in particular, using Lua), and it would let users fix so many usability problems.  At a minimum, the scripting language should be able to access the functionality available through the menus, it should permit key bindings and grab keys, access preference settings, and it should be able to listen to chat and IM, so that commands can be triggered from there. [[User:Jherek Cerminara|Jherek Cerminara]]&lt;br /&gt;
&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;
: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;
: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;
:[[User:Duffy Langdon|Duffy Langdon]] 12:34, 10 January 2007&lt;br /&gt;
&lt;br /&gt;
* Something to note: the above plugin architecture would make automatic glue code for scripting languages easy to write. [[User:Argent Stonecutter|Argent Stonecutter]] 06:56, 22 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
[[Category:Future Roundtables]]&lt;br /&gt;
&lt;br /&gt;
== Automated Agents ==&lt;br /&gt;
&lt;br /&gt;
Just curious, how does &amp;quot;Automated Agents&amp;quot; become a plugin ?&lt;br /&gt;
&lt;br /&gt;
Or are you referring to &amp;quot;headless agents&amp;quot; in the context of having all IMs for a Resident&#039;s alts routed through into one instance of SL ?&lt;br /&gt;
&lt;br /&gt;
[[User:SignpostMarv Martin|SignpostMarv Martin]] 22:15, 23 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Security Concerns ==&lt;br /&gt;
&lt;br /&gt;
I believe the hardest part of the plug-in system will be to overcome to security concerns. How many trust being able to download and plug-in arbitrary code that might set off a money event. I&#039;ve heard the casual user of SL not want to deal with such concerns. For that reason, I believe a scripting language is the way to go. We can limit the availability of the API to the scripts. This can be the default to allow arbitrary code in the form of scripts. [[User:Dzonatas Sol|Dzonatas Sol]] 01:54, 7 April 2007 (PDT)&lt;br /&gt;
: Unless a plugin disables the big-ass blue box notice that says &amp;quot;You just have Resident X L$10k&amp;quot;, I think that it&#039;ll be difficult to wholesale rip people off.&lt;br /&gt;
: The suggested method for getting around the security concerns thing would be to have something like https://plugins.secondlife.com whereby each plugin listed on the site has been given the all-clear by Linden Lab as &amp;quot;not ripping people off&amp;quot;.&lt;br /&gt;
: The API cannot be limited, as it&#039;ll be just a case of modifying the source code.&lt;br /&gt;
: [[User:SignpostMarv Martin|SignpostMarv Martin]] 04:56, 7 April 2007 (PDT)&lt;br /&gt;
::I&#039;m pretty sure that a review system as you suggested above won&#039;t scale. [[User:Dzonatas Sol|Dzonatas Sol]] 11:29, 8 April 2007 (PDT)&lt;br /&gt;
::: Of course it won&#039;t. It&#039;s more reliable than limiting the API though.&lt;br /&gt;
::: [[User:SignpostMarv Martin|SignpostMarv Martin]] 02:53, 9 April 2007 (PDT)&lt;br /&gt;
::::It would be easier to allow an option to limit access to the API by default. Let the user decide to over-ride that. Also, there could be certification key like web browser do now. It wasn&#039;t the intent to make it impossible for even certifiable plug-ins to gain greater access. [[User:Dzonatas Sol|Dzonatas Sol]] 13:49, 9 April 2007 (PDT)&lt;br /&gt;
:::::L$ handling should go through the same permissions system an LSL-initiated call goes through.&lt;br /&gt;
:::::&#039;&#039;&#039;&#039;Plugin Foo created by Bar requests permission to debit your account&#039;&#039;&#039;&#039;&lt;br /&gt;
:::::A web-based interface along the lines of flickr should be a usable means of managing permissions.&lt;br /&gt;
:::::[[User:SignpostMarv Martin|SignpostMarv Martin]] 16:45, 9 April 2007 (PDT)&lt;br /&gt;
: Some of this discussion happened a couple months back during Rob&#039;s office hours. Really, if the plugins are dynamically loadable libraries, you can&#039;t do much for security. Even if you don&#039;t expose something in the API, it&#039;s still accessible so long as the plugin has access to the memory space. What would make a lot of sense is creating scripting engines as plugins. If a scripting system proves to be secure, we might be able to eventually convince Linden Lab to ship the scripting system themselves.&lt;br /&gt;
: Creating a scripting system plugin should be pretty straightforward once the plugin system exists, so long as the scripting language has a nearly a one-to-one mapping of script functions to plugin API functions. --[[User:Soft Noel|Soft Noel]] 13:23, 10 April 2007 (PDT)&lt;br /&gt;
: All the same security issues apply to any third-party clients anyway. So why consider solutions that wouldn&#039;t be feasible in a discussion of the security of the whole executable? --[[User:Prodigal Maeterlinck|Prodigal Maeterlinck]] 13:59, 29 November 2007 (PST)&lt;/div&gt;</summary>
		<author><name>Prodigal Maeterlinck</name></author>
	</entry>
</feed>