Multi-currency support coming to OpenSim viewers

OpenSim was a spin off of the Second Life virtual world platform. The various OpenSim viewers (think web browsers for connecting to virtual worlds instead of web pages) were forked from the Second Life viewer which was open sourced by Linden Lab. As such, these viewers were designed for connecting to a single homogeneous platform with a single currency. Over time, OpenSim has evolved into a platform which supports heterogeneous worlds where commerce services can vary from land mass to land mass and where a user can teleport to an entirely separate world similar to how a user can click a link in a web browser and jump from cnn.com to facebook.com. Unfortunately, while the OpenSim viewers have supported some of this evolution, they have not yet fully separated from the idea that the currency service connected to at login is the one in use throughout a session… until now. With some guidance from Ansariel Hiller, I have built and tested a patch for the Firestorm Viewer to provide multi-currency support in OpenSim.

The Gloebit Money Module long ago took the advice of Cinder Roxley of the Alchemy Viewer and began supplying region based currency service parameters to the viewer when a user entered a Gloebit enabled region. However, to my knowledge, none of the viewers (even Alchemy) has consumed this information to adapt the experience the user receives. Under existing viewer implementations, the currency symbol used throughout the viewer and the service endpoints for buying currency and land are set based on the global settings of the virtual world the user first logs into at the beginning of a session. When a user crosses to a land mass using an alternate currency service or hypergrid teleports to a different world, the symbol and service endpoints are not updated. The incorrect symbol is confusing to users and the buy-currency, buy-land, and insufficient-funds flows all break. In addition, the buy-currency, buy-land and insufficient-funds flows have required the setup of complex php helper scripts, an XML-RPC server, and a url pointing at that server, which has meant these often don’t work even on the world the user first logs into.

This will all change once the Firestorm dev team reviews this patch and includes it in a release, so get onto their jira and vote it up! With this update, when a user enters a new region in OpenSim, if that region is running a currency module which supplies region specific currency parameters, the viewer will update the currency symbol and service endpoints to those supplied by that module. Otherwise, it will update them to the global settings for that virtual world. This will fix the user experience both for multi-currency worlds and for hypergrid teleports.

The Gloebit Money Module has already implemented these parameters and other money modules are welcome to do so as well. Further, for regions running the Gloebit Money Module, once users update to a viewer with this patch, they will no longer have to set up the php helper scripts, XML-RPC server and url to enable the buy-land, buy-currency, and insufficient-funds flows. The Gloebit Money Module will handle these flows on its own.

I’d love for every OpenSim viewer to adopt these changes, so I’ve supplied the patch for download here (for importing or as a reference implementation dependent upon how much the various viewers have diverged) and give permission to use and distribute this code under the LGPL. I just ask that attribution be provided.