[opensource-dev] Client Plugin System Design
Rob Nelson
nexisentertainment at gmail.com
Wed Mar 17 14:42:14 PDT 2010
As stated before, sockets add unnecessary bulk to any plugin
architecture, ESPECIALLY HTTP. The SL viewer currently takes up 100%
CPU even with scripting turned off; The last thing we need is more
memory or processor load.
There are ways to signal the viewer when an event has occurred without
using sockets, and without running a separate process. A simple
std::queue of events being passed to the Lua engine is what I currently
use. I therefore suggest C++ Dynamic Shared Objects, each providing a
language option (Lua, Python, Mono), but with a shared interface that:
* Provides public start/restart/kill methods (for a scripting console)
* Is in its own thread (to prevent blocking)
* provides a way to pass in events with variable arguments (Luna uses a
string stream with serialized objects)
* Provides the scripting engine some basic "environmental
variables" (Viewer name/channel/version, settings THAT ARE NOT
PASSWORDS, some other global vars like gAgent)
* Automatically starts (if configured to do so) only AFTER login to
prevent receiving login details
* Does not provide a way to create raw messages or send money.
There's probably a bunch of other requirements, too.
If firefly is truly using Mono, then I do sincerely hope it fails. Mono
is way too slow to run plugins efficiently, and as seeing that the
viewer is already chock-full of slowness, I don't want any more overhead
added.
Rob Nelson
Luna Viewer
http://luna-viewer.googlecode.com/
On Wed, 2010-03-17 at 10:50 -0500, Argent Stonecutter wrote:
> On 2010-03-17, at 10:21, Dzonatas Sol wrote:
> > Ricky wrote:
> >> So far, barring any LL concepts, we have (as far as I know so far!)
> >> two designs of plugin system:
> >> 1: Socket-based plugins - as�suggested�by Morgaine.
> >> 2: D-Bus or similar existing IPC tool.
> >> 3: C++ Dynamically Shared Objects - my suggestion.
> >
> > 4. REST/HTTP
>
> That's just a specific design for category 1.
>
> _______________________________________________
> Policies and (un)subscribe information available here:
> http://wiki.secondlife.com/wiki/OpenSource-Dev
> Please read the policies before posting to keep unmoderated posting privileges
More information about the opensource-dev
mailing list