Copy World and Export World Respect Permissions

Backend Improvements

We rolled out a major system upgrade today, improving security and robustness amongst many other backend enhancements. We’re always making such improvements, but now they’re a particular priority as we’re getting closer to turning on billing.

Copy World and Export World now Respect Permissions

One user-visible change that we’ve made is an improvement to Copy World and Export World. To recap: Copy World lets you create multiple copies of a world in your Kitely account. Export World converts the world into an OAR file, which you can then download from Kitely and upload into other OpenSim grids.

Both of these features now respect object permissions: they will only copy or export objects (prims) that you are allowed to copy. Objects for which you have insufficient permissions will not be copied/exported. This change makes Kitely a better platform for content creators to sell their work, because it’s now much harder to create unauthorized copies of other people’s content.

These are the object permissions we check for when someone attempts to copy or export a world:

  • If they don’t own the object then the object must have the “Everyone Copy” permission in order for it to be copied into the new world.
  • If they own the object then it must have the “Owner Copy” permission in order for it to be copied. If the world is being Exported then the object must also have the “Owner Transfer” permission, because exported worlds can be given to other people.

When dealing with linked prims, we use the same logic as Second Life does: if any of the prims in the linkset have insufficient permissions then we don’t copy/export the entire linkset. We believe this behavior provides the strongest security for content creators. However, we did consider other alternatives, such as removing only the individual prims that lack permissions, and perhaps replacing them with placeholders (simple boxes). If you have thoughts about how this should work then please let us know in the comments.

This feature works on the level of objects, not individual assets. If someone is allowed to copy an object then they’re automatically allowed to copy all the assets used in that object as well. And conversely, if someone isn’t allowed to copy an object then that object’s assets will not be included in the copied/exported world.

For example, here’s a world with a few test objects. The screenshot doesn’t show the permissions of the objects, so I’ll describe them. The closer row (short cylinders) contains objects that are owned by the current user. The objects contain various combinations of Move, Copy and Transfer permissions. The farther row (tall cylinders) contains objects that aren’t owned by the current user. These objects all have the “Everyone Copy” permissions, except for the left-most cylinder.

Permissions Test - Original

Here are the results of a Copy World operation. A few of the objects have not been copied:

Permissions Test - Copy

Here are the results of an Export World operation. A few more objects have not been copied. Export World is more restrictive than Copy World, because we require objects to have the Transfer permission as well (in addition to the Copy permission).

Permissions Test - Exported

That’s it! If you have comments about how this feature works, or you find bugs, then please let us know. After we get some feedback, we will contribute this feature to OpenSim so more content creators will feel comfortable offering their wares to the OpenSim community.

Published by

Oren Hurvitz

Oren Hurvitz is the Co-Founder and VP R&D of Kitely.