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.

Modified OpenSim to Improve World Startup Time

We made another improvement to OpenSim to make worlds start faster. When a world starts, OpenSim begins loading its assets. Some assets, e.g. textures or scripts, may be used in many prims. When that happens, OpenSim requests the asset multiple times from the assets service. In normal use this isn’t a problem because the asset is in the local cache so these requests are instantaneous. However, when the world starts the asset isn’t in the cache yet, so OpenSim downloads it multiple times. This is wasteful and slows down the world startup.

To fix this, we modified OpenSim so that additional requests for an asset are delayed until the first request has finished. This means the additional requests will be fulfilled from the local cache, which is very fast.

Faster Startup for Worlds with Many Assets

We updated our system today with various performance improvements, compatibility upgrades and requested features. The following updates may enhance your user experience:

Faster Startup for Worlds with Many Assets

We improved OpenSim to allow worlds with many assets to start faster. One of the things OpenSim does when a world starts is to update the world’s map image. Usually this is very fast (less than a second). However, it can take much longer for worlds that include many assets. We’ve seen delays of 20-100 seconds for complex worlds such as Xhyra’s Place, Chakryn Forest and Universal Campus.

We fixed this by moving the updating of the map image out of the main flow and into a separate thread. This means it no longer affects the time it takes the world to start. Thus, the startup time is reduced by up to 100 seconds!

LinkedIn Button

We added a button that allows you to share the Kitely homepage, or an individual world, with your LinkedIn contacts. This means that you can now easily spread the word about your Kitely worlds to four major social media sites: Facebook, Twitter, LinkedIn and Google+.

Improved Internet Explorer 9 Support

We now support Internet Explorer 9 natively. We did support IE9 previously, but this was done by setting it to use IE8 compatibility mode. Now we run in native IE9 mode.

Improved Support for Non-English Names

We updated Kitely today to address several recently discovered issues. While most of them were backend-related, we also fixed two user-visible problems:

Improved Support for Non-English Names

We automatically create avatars based on users’ names in Facebook. This is not always straightforward because Facebook allows names that contain non-English characters, but OpenSim does not. To bridge this gap, we convert such names into the closest possible English approximation.

This process was not as robust as it could have been, but now we’ve improved it significantly. Users who haven’t been able to login to virtual worlds previously, because their names contain non-English characters (including characters with accents), should find that they can now login successfully.

Improved “Enter World” Reliability

There was a problem that was encountered by a few users, where clicking “Enter World” didn’t succeed in logging in to the world at first. Clicking “Enter World” a second time did work. This problem occurred mainly with large and complicated worlds, and it has now been fixed. It should now be possible to log into all worlds on the first try.

Backend and OpenSim Improvements

We’ve updated Kitely today. Most of the updates are on the backend, e.g. to improve stability and create some of the infrastructure that we’ll need in order to implement billing. We’ve also added some user requested features and made some improvements to OpenSim:

Faster script loading

We’ve added script caching. When a region starts, OpenSim normally compiles all of the scripts used in the region. If the region has many scripts then this can take a long time. To make this process faster, we now save the compiled scripts and reuse them whenever the region is started. This can produce significant improvements! For example, one script-heavy world (containing about 900 scripts, 500 of which are unique) takes 10:42 minutes to compile the scripts initially. But from then on, each time the world starts it takes only 2:46 minutes to load the scripts. It should be noted that the world becomes usable even before the scripts are all ready. These timings only indicate when all of the scripts become ready, but people can enter and start using the world even before the first one is compiled.

Exported OAR files include creator information

When we export a world, we now include additional creator information. Previously, only the Creator UUID was saved. Now we also save the creator’s name. So if you export your world, and someone else imports it, you will still be listed as the creator of the objects in the world and the asset permissions you set will be retained.

Direct URL for downloading Kitely Plugin

We’ve added a permanent URL that can be used to download the latest version of Kitely Plugin: Most users don’t need to use this URL, because the World Page automatically downloads the plugin. However, in some cases it’s useful to have a direct URL, so we made it available.

Kitely Plugin 1.2.0 and Export World

We’ve made many updates and added two of the most commonly requested features: the ability to select which virtual world viewer to use, and exporting worlds to OAR files! Read on for the details.

Choose which virtual world viewer to use

We’ve updated Kitely Plugin to version 1.2.0. You can now choose which virtual world viewer will be launched when you click “Enter World” in a world page. Normally, the default viewer is launched; that is usually the last viewer that was installed. However, it is now possible to override this setting by entering the full path to the viewer in the file kitely-config.txt.

For details, see How can I choose which virtual world viewer to use? in our support site.

This feature is currently intended for advanced users, as they are the only ones likely to have more than one viewer installed. In the future we will make this feature accessible using a GUI instead of requiring you to edit a file manually.

Digitally signed plugin

The Windows version of Kitely Plugin is now digitally signed. This provides peace of mind when downloading the plugin. In addition, some anti-virus programs wouldn’t allow you to install the plugin because it didn’t have a digital signature (we’re looking at you, Norton AntiVirus). That should no longer be a problem.

Safari on Mac OS X

Kitely Plugin now supports the Safari browser on Mac OS X so you’ll be able to use your Mac’s default browser with Kitely.

Get notified when a newer version of the plugin is available

We’ve added notifications to the World Page so that you’ll know when a newer version of the plugin is available even if you missed our blog announcements and Tweets.

Export World

We’ve given you the ability to export worlds. Exporting a world creates an OAR file (OpenSim Archive) that contains the complete state of the world. You can download this file to your computer for backup.

To export a world, click on the “Export” link that appears next to its name in the My Worlds tab in your account. This can take a while (up to 15 minutes for large worlds) and you’ll be notified once the OAR file is ready.

Exporting and copying worlds can require a lot of server resources for a significant amount of time. We’ve therefore decided to set the price for both these actions to 10 KC.

Better World Descriptions

In Kitely, virtual worlds have a name and a description. The description used to be limited to simple text, but we’ve received numerous requests to allow richer descriptions. This is now possible! World descriptions can now include hyperlinks, images, separators and various text formatting options. You can easily take advantage of these options using the rich text editor in the New World and Edit World dialogs.

Today’s update also upgrades our system to the recently released OpenSim

OpenSim 0.7.1 and More

Hi everyone,

We’ve updated our servers today with various backend stability improvements and made some changes that should help improve your user experience as well. Here’s what’s new:

OpenSim 0.7.1

Kitely is now using the release version of OpenSim 0.7.1. This version includes many bug fixes and features, such as Shared Media (a.k.a. Media on a Prim). For more information, see the OpenSim release notes.

Please note that in order to take advantage of Shared Media you’ll need a V2 viewer.

Email Required

We’re now asking for peoples’ email addresses when they open a Kitely account. If you already have a Kitely account, then the next time you login you’ll be asked to allow us to access the email address that you entered in your Facebook account.

The reason for this change is that we need a reliable way to be able to contact you. For example, there might be a problem with your account; or someone might have lodged a copyright-infringement complaint about some content that is associated with your account. Previously, we had intended to rely on Facebook Messages for contacting people, but we’ve found that this solution isn’t good enough, for several reasons. First, some people have disabled the ability to contact them via Facebook Messages. Second, if we need to contact multiple people then using Facebook Messages is extremely slow; emails work much better. Third, having your email address will enable us to communicate with you even if you can’t access Facebook for some reason. And finally, we intend to support additional signup methods in the near future (besides Facebook), so some people won’t even have a Facebook account at all.

We will only use this email address in accordance with our Privacy Policy and Terms of Service. We will not use it to send spam, or share your email with a third party without your consent.

World Templates

We currently offer two stock worlds that can be used as a starting point when creating a new world. We’ve made small changes to these worlds.

First, we replaced the “Empty Island” world with a world called “Empty Land”, which is a 256m x 256m square of flat terrain located just above sea-level. This is more useful as a starting point than the island, which was quite small.

Second, both of our world templates (“Empty Land” and “Virtual Collaboration Environment”) now have the sun fixed at the noon position. We’ve made this change to make these worlds more friendly to people who aren’t familiar with changing light conditions. We’ve been told that when new users enter a world, and see that everything is dark, they can sometimes become frustrated with the user experience.

Since this environment setting (“Fixed Sun”) can be changed, you can easily modify it if you wish.

Imprudence 1.3.2

We’ve updated the default viewer that we provide to people who don’t already have a viewer installed to the latest stable version of Imprudence (version 1.3.2).

Welcome to Kitely

Hi! My name is Oren Hurvitz, and I’m the Co-Founder and VP R&D of Kitely. My Co-Founder and CEO Ilan Tochner and myself have launched the service just under 4 weeks ago, but we only got around to creating this blog now. It’s been hectic.

We’ve released a major update to the service today. Our focus in this update (and in the near future) is on making the service more robust and manageable. This means most of the changes aren’t visible on the surface, but that doesn’t make them less important! Here’s what we’ve been working on:

Improved Communications

We’ve added this blog. Until now our main channels of communication with the community have been our support site [Edit: in Jan 2013 we moved support to our self-hosted user forums], Twitter account and commenting on other people’s blogs. While we’ll continue to use these options, a blog is a better way to communicate some things — such as this post, which describes what’s new in Kitely.

We’ve added a Contact Us page so you can get in touch with us more easily.

We now have the ability to post short announcements that appear at the top of the website. This will enable us to let you know about important updates: e.g., if we release a new version of the Kitely Plugin.

We can also broadcast messages to every user that is currently connected to any of the Kitely virtual worlds. We’ll use this feature to warn you before we update the system, so that you and the other people visiting your worlds can exit our service cleanly. Until now we’ve used Twitter for these announcements, but sadly not everyone follows our account.

Content Protection

We’ve added two online forms to allow you to lodge complaints about other users:

  • You can now use the Abuse Report form to report a violation of our Terms of Service.
  • You now have easy access to a DMCA Takedown Notice to report cases of copyright infringement.

When these forms are submitted we receive an email, and we’ll quickly follow up to determine the appropriate way to respond to what you reported.

If we decide that a violation has indeed taken place, then we’ll first contact the offending user and ask them to fix the violation without delay. If they don’t do so quickly, then we now have the ability to suspend their account in several ways, depending on the severity of the violation:

  • We can suspend access to a world. The World Page will still appear, but it will not be possible to enter the world. In the specific case of a copyright violation, we do allow the world’s owner (and only the owner) to enter the world for a short period of time. This is necessary so that the world owner can remove the offending material.
  • We can hide the world page entirely. This sanction may be required if the World Page itself contains copyrighted material or violates our Terms of Service.
  • Finally we can suspend access to the user’s entire account so they will not be able to login.

User-Visible Features

In addition to the management features, we’ve also added a few features that should now be visible to you:

You can now set the access control of a world to “My Friends” so that only your Facebook friends will be able to enter that world. This feature saves you the hassle of managing a Facebook group when all you want is just to have a private place that you and your friends can access.

The site now works with Internet Explorer 9 so you can use Microsoft’s latest browser with Kitely if you wish.

Bug Fixes

We fixed many bugs, and improved performance in several areas.

Here’s one specific problem that we fixed, which is more user-visible than other problems: in the past, you may have seen messages in the browser status bar such as: “Waiting for…”. These messages were a side effect of the mechanism that we used to update the site dynamically (e.g., have the number of Active Users change immediately when users enter or exit a world). We are now implementing this feature in a different way, so these messages will no longer appear.

We found and fixed a major bug that unfortunately caused a few worlds to be deleted. This happened when a networking error temporarily prevented the OpenSim server from communicating with the main server. Here’s what happened: when a world becomes idle, we save the world state to a file in the cloud (in the Amazon S3 service). This networking error caused the OpenSim server to tell the main server to save the file to the cloud twice. The first request was handled correctly, but the second request, which was unexpected, caused the file to be deleted. We fixed the problem by having the server recognize when it’s getting duplicate requests and ignore them.

This problem only occurred in a very small number of worlds, but that is no comfort to the users who were affected. To them, we offer our humblest apologies! Unfortunately, as a one-month-old service which is still in the testing phase, some bugs are inevitable. We take this extremely seriously, we have fixed the problem, and we will continue to focus on robustness ahead of other features.

Although this particular bug has been fixed, we recommend using the “Copy” button to create backup copies of any worlds which you’ve invested a lot of work in. When you create a copy of a world, the copy is entirely separate from the original world, and is not affected by anything that happens to it. This is also useful for keeping different versions of the world, e.g. in order to try out new things, but be able to revert to the previous version if desired.

Coming Soon

We (or rather, our lawyers) have been working on finishing the Terms of Service. We now have a draft that is very close to being complete, so we expect to be able to post the TOS soon.

Some users have had problems using the Kitely Plugin because it isn’t digitally signed. We are in the process of getting a digital certificate from Thawte, which will allow us to sign the plugin. Thawte are very assiduous about verifying that we’re a real company (good for them), but we expect this to be finished soon.

That’s it for now. Please continue using Kitely, and let us know what works for you, and what doesn’t. May all your virtual worlds bloom!