[sldev] Plugin system - first code drop
John Hurliman
jhurliman at wsu.edu
Tue Feb 27 12:29:10 PST 2007
Tim Shephard wrote:
> Thanks Richard.
>
> That was a real eye opener, especially the bit about "large
> architectural decisions to be made".
>
> Can you shed some light on that? Are these decisions strictly GUI
> hierarchy related? Timelines?
>
> My main concern here would be developing a contract of Ansi C function
> pointers across DLLs and then after the architecture upgrade is done a
> significant impedance mismatch occurs, and everyone needs to rewrite
> their plugins. Or, worse, we keep you guys from doing the upgrades
> you need to do because you have to support a bunch of legacy
> plugins... ;)
>
> Heh. I hope I'm not the only one that doesn't see the curious
> challenge trying to architect when you have no clue what the over all
> technical roadmap looks like...
>
> I am beginning to think whatever we come up with in this environment
> is going to be sub-optimal at best.
>
> Though I can imagine that we can probably come up with something that
> works...
>
>
Continuing on with what Richard was saying, everything has changed, is
changing, and will continue to change in the future. Second Life is more
like a research project than a product, and expecting that you can write
anything for it and walk away for two months and have it still 100%
functional is completely out of the question. Forget about UI
architectures changing, what if the functionality your plugin uses
doesn't exist on the grid in another two weeks? What if the packets that
you are intercepting and sending out are now using the REST protocol?
With World of Warcraft plugins, every time a big functional change is
made to WoW or the plugin API changes they bump a version number and
every plugin breaks. The plugin developers take a look at the latest
changes, adapt to them, and release again. It's not an ideal situation,
it's probably not even good, but it works and in reality it's probably
the only way to build a plugin system on top of something with such a
rapid development cycle. I would focus on a versioning system for
different components of the client, so if message_template.msg changes
all plugins that send and receive packets break. If the UI system
changes all plugins that have UIs break. Same for the rendering
pipeline, etc.
Just throwing a wish out, but if the API exposed C functions instead of
C++ that would make my day.
John Hurliman
More information about the SLDev
mailing list