Improved Item Exchange with Other Grids

We updated the system today with a change that makes it easier to take items from other grids into Kitely, and then take them with you when you leave Kitely to visit other grids.

This update also includes several bug fixes, including a bug that sometimes prevented Hypergrid users from teleporting into Kitely.

Improved Item Exchange with Other Grids

Kitely is a Content-Filtered open grid. Unlike unfiltered open grids, Kitely enables content creators to decide whether the items they create may be taken to other grids, or will be treated as unexportable content. There are two ways that content creators can specify this preference. The first method is used only for items in Kitely Market: such items have an explicit “Export” flag, which determines whether they can be taken out of Kitely. This method hasn’t changed, and will not be discussed in this blog post. For any objects not acquired from Kitely Market, we use the following rule: if the object has Copy + Transfer (CT) permissions then it may be exported out of Kitely. Otherwise, it may not leave Kitely.

If an item isn’t allowed to be exported then users may not:

  • Wear it while teleporting to other grids
  • Store it in their “My Suitcase” folder while teleporting to other grids
  • Have it included in exported OAR files

But what happens if a Kitely user, while visiting another grid, picks up an item that doesn’t have CT permissions? Since that item clearly came from another grid, there’s no reason to prevent it from leaving Kitely. For this reason, we added the “Foreign Grid” flag: if an object came to Kitely from another grid then we turn this flag on, and that allows the object to be exported from Kitely even if it doesn’t have CT permissions.

And now we get to the problem that today’s update fixes. Until today, we had an exception to the “Foreign Grid” rule: if the item already existed in Kitely before the user picked it up in the foreign grid, then we wouldn’t turn on the “Foreign Grid” flag. This meant that the user still couldn’t export the item out of Kitely (e.g., by wearing it), despite the fact that we had already seen the item in a different grid.

The idea behind this logic was that even if the item already exists in one foreign grid, perhaps we shouldn’t allow it to proliferate any further. But this turned out to be a mistake. In the vast majority of cases, it prevented users from taking legitimate free content out of Kitely. It came down to randomness: if a certain common item without CT permissions (e.g., a Linda Kellie item) was first imported directly into Kitely by any Kitely user (e.g., using Load OAR), then we would never allow it to leave. But if the same item first came into Kitely from another grid, then it would be allowed to leave. This made no sense. It also didn’t add much to security, since we still couldn’t prevent items from being taken out using Copybots.

After consulting with our users we decided to change this logic, by removing the exception described above. Now, if we see an item in a foreign grid, then we always enable the “Foreign Grid” flag on the item, even if it already exists in Kitely. This change will make it much easier to pick up items in other grids and be sure that they will be allowed to enter and leave Kitely freely.

Please note that this change won’t affect existing items in your inventory, so if you had any items that suffered from this problem (you couldn’t leave Kitely with them) then you should pick up a new copy of the item from the foreign grid. We’re sorry for this inconvenience, but this will only need to be done once.

A note to Kitely Market merchants: this change doesn’t affect the exportability of products that were bought from Kitely Market. The explicit “Export” flag on such items takes precedence over everything else, so No-Export items won’t be allowed to leave Kitely even if they have CT permissions, and even if they have the “Foreign Grid” flag.

OSSL Permissions

When we recently updated to OpenSim 0.8.2 Dev we changed the permissions of a few OSSL functions, allowing fewer people to use them (e.g., only World Managers vs. Everyone). These changes were originally made in the core version of OpenSim, because the developers have come to consider some functions to be more dangerous than previously thought. We chose to accept these changes in order to maintain security and compatibility with other grids that are using the latest version of OpenSim. We’ve updated the list of Supported OSSL Functions to reflect the new functions and permissions.

Bug Fixes

This release also includes a number of bug fixes:

There was a bug that prevented Transfer Stations from working for users that came in from other grids. This meant that if users on other grids tried to visit a Kitely world, and that world was offline, then the teleport failed. Now the teleport will succeed, and the user will be sent to the Transfer Station while the world is being started. (This is how Kitely had worked up until we upgraded to OpenSim 0.8.2 earlier this month; that’s when this bug started.)

Kitely allows restricting access to Kitely worlds to users who belong to a certain OpenSim Group. Until today, such restrictions only worked for Kitely users. While you could add Hypergrid users to your Groups, they still weren’t allowed to enter restricted worlds. This bug has been fixed, so now Hypergrid users who belong to Groups will be allowed to visit worlds that are restricted to members of those Groups.

It is now possible to visit Kitely from other grids by entering kitely.com:8002 in the World Map. The correct address for Kitely is actually grid.kitely.com:8002, so until today if anyone tried to visit by entering just “kitely.com:8002” then they received an error. But now we allow this address to work. However, we still recommend entering the full address (grid.kitely.com:8002), because foreign grids may cache these addresses and we prefer that they cache the correct address.

Updated to OpenSim 0.8.2 Dev

We updated the system today, bringing in updates from OpenSim 0.8.1 and 0.8.2 (Dev).

You can see the full list of changes in OpenSim 0.8.1 here: http://opensimulator.org/wiki/0.8.1_Release

Since OpenSim 0.8.2 hasn’t been officially released yet, there’s no comparable page that shows which changes it contains. However, we’ve noted some of the important changes in this release below (changes in both OpenSim 0.8.1 and 0.8.2).

All of the Scripts Need to Be Recompiled

Scripts in OpenSim are written in the LSL programming language, but before they can be used they need to be compiled into a DLL. Compiling scripts is a slow operation, so we compile each script only once and from then on we reuse the compiled DLL.

The new version of OpenSim has changed the format of compiled scripts. (This was done to make scripts more reliable if they need to be terminated; this is called setting “ScriptStopStrategy” to “co-op”.) Therefore, all of the scripts in Kitely now need to be recompiled. The first time any world is started after this update it will spend some time recompiling its scripts. During this time the world will perform slower than usual, and scripts will be slow to start. This will take a few minutes, and it will only happen once.

Scripting Changes

This release contains a couple of new OSSL functions:

There are also some new and improved LSL functions:

Other Notable Changes

In order to make it easier to change terrain, terrain updates are now sent first for the area the user is near. This makes terrain editing faster. However, it means that far away terrain changes may not be displayed as quickly.

The algorithm used to calculate performance metrics such as frame time, fps, etc. has changed. If you’re used to the old performance metrics then the new metrics will look very different. The performance of OpenSim hasn’t actually changed (well, except for improving a bit): only the numbers shown have changed, to be more accurate. If you would like more technical information about this change then see this post: http://opensimulator.org/pipermail/opensim-dev/2015-April/025621.html.

World managers can now Kick a user using the Estate Management dialog.

You can now “Grab” objects: use Ctrl+Drag to move them, and Ctrl+Shift+Drag to rotate them.

And finally, there have been numerous changes to many aspects of OpenSim that are too small to mention here, but together can have a big impact. Please let us know if you encounter any problems.