Late on Monday evening (GMT) I published my first external OpenSimulator region module (i.e. one that is not bundled as a core OpenSim component). This module is the Parallel Selves Message Bridge, and it’s available in binary and BSD licensed source code form at the OpenSimulator forge. Shenlei has already written about it from a user’s point of view – this post is to give some more background and technical information as to exactly what it is. I’ll also write again soon about my experiences in creating the module itself and where I think OpenSim’s region module system needs to improve.
The Parallel Selves Message Bridge (PSMB) can be used in a standalone OpenSimulator instance to exchange instant messages with people in another Second Life compatible target system. The target system can be another OpenSim standalone, an OpenSim grid or even the Linden Labs Second Life grid. The bridge works by relaying messages through an avatar account that you already have on the target system (hence the name Parallel Selves).
For instance, suppose that I have an avatar called Fenn Meredith on the Linden Labs grid. Fenn has a very good friend called Lulworth Beaumont on that grid whom she would like to keep Instant Messaging throughout the day. However, Fenn also wants to do some building work on a local standalone OpenSim instance and doesn’t have a powerful enough machine to keep two Second Life clients open at once.
How can Fenn keep chatting to Lulworth? One way is to use a text only client to remain connected to the Linden Labs grid, such as Katherine Berry’s AjaxLife or Linden Lab’s own forthcoming SLim client. But in this case Fenn really wants to be immersed in the building work that she is doing – he doesn’t want to have to flip between applications every time a new IM comes in.
This is where the Message Bridge comes in. Once the module is installed (which involves copying a dll to OpenSim’s bin/ directory and making a few configuration changes), Fenn logs in to her local OpenSim. She then types
/bridge co mySLPassword
into the client’s chat area (this chat is intercepted by the PSMB module – it doesn’t get spoken in world). The module uses the password to login the existing Fenn Meredith account on the Linden Labs grid using libsecondlife.
Once that avatar is logged in, the friends list from the Linden Labs grid is imported into the local OpenSim instance, creating an entry for Lulworth Beaumont in the client’s Contacts window. Fenn can then work in her OpenSim standalone but still send and receive instant messages from Lulworth using the normal Second Life client IM interface.
We’ve had this module running internally with Black Dress Technology for a few weeks now and it has been working pretty well. However, it does have quite a few limitations, some minor that could be overcome with a bit more coding, some much more major.
Among the minor issues is the requirement that both the target the source system avatars have the same name. The module also only allows one target system to be specified rather than multiple. Problems like these can be overcome with a little bit more coding.
The more major issues stem from the fact that the module requires you to connect parallel avatars in order to relay Instant Messages. This is a kludge – a much better way to transfer Instant Messages would be through a proper gateway that didn’t require a user account on each individual system. As far as I recall the Linden Lab sponsored Architecture Working Group was looking into this, though it could be some time before we see any results.
The parallel avatar requirement makes it difficult to get this approach to work from an OpenSim grid (rather than from just an OpenSim standalone). Quite a lot of extra coding could get it to work from a single region server on a grid. A lot, lot more coding again could probably get it to work for an entire grid. However, there are major trust concerns in getting this to work on a grid – region servers either end up with your target avatar password or have access to the connection you establish. On a completely private grid this might be okay (presuming that you trust the grid operators completely or you run the grid yourself). On a commercial closed grid or an open grid where third parties are operating region servers the trust issue is probably insurmountable.
The PSMB module has proven useful already, and with a bit more work it could become useful to more people. Even where it isn’t useful, there’s always a chance that it might add a tiny bit more impetus towards the eventual goal of a proper IM exchange system between virtual environments.
In the mean time, patches and feedback on the PSMB project page are most welcome. I would consider the code to be at an alpha level right, so any information about bugs would be appreciated.
I can’t guarantee how much additional work I’ll be able to put in for features unless there’s something that I really need, but I always find that constructive user feedback and requests provide a great motivation for doing additional work.