Database Storage System Upgrade

We upgraded our infrastructure today with a faster storage device for the main system database. Until now, this database was stored on a regular (magnetic) hard disk. This hard disk was sufficient for our needs until a couple of days ago, when it started limiting the speed in which our system could handle database requests. We have therefore decided to upgrade our database to run on an SSD (a fast flash-memory-based hard disk) to help us keep up with the increasing usage of Kitely worlds.

By the way, the world nodes (the servers that run OpenSim) have been using SSDs since 2014.

A Minute of Your Time Can Help Bring More People to Kitely

The website Hypergrid Business is now holding its seventh annual OpenSim grid survey, and we need your help to be able to attract additional people to our growing community. If you’re willing to spend a few minutes to help spread the word about Kitely then please answer this short multiple choice survey.

Last year many of you participated in the survey and your endorsement helped convince more content creators to list their items in Kitely Market and more people to join our community. Your continued support this year is crucial for our continued growth.

Please take the time to complete this survey. Thank you!

Automatic World Optimization and Other Improvements

We updated Kitely today with several features that improve the in-world experience, including a system that automatically optimizes Kitely worlds so they’ll start faster.

Automatic World Optimization

A common problem in OpenSim is that objects that have complex physics meshes can cause the world to start slowly. A physics mesh is the part of the object that determines where it’s solid, and where avatars can walk through it. For example, suppose you have a large arch in your world. The object’s physics mesh would also be in the shape of an arch: this is what allows users to walk back and forth under the arch.

Most physics meshes are simple and don’t cause a problem. However, if these physics meshes are very complex (i.e., they contain many triangles), then it takes OpenSim a long time to parse them. This makes the world start slower, because this parsing is performed when the world starts. In some cases we’ve seen worlds that take an extra 10 minutes (!) to start, just because of the time that they have to spend parsing complex physics meshes.

Note that all objects have a physics mesh; not only mesh objects. However, in practice, usually only mesh objects (and some sculpties) can have a physics mesh that’s complex enough to cause a problem.

In the past, when we’ve seen this problem we used to contact world owners and ask them to fix their objects: either by simplifying the physics mesh, or by making the objects phantom (since a phantom object’s physics mesh isn’t used, and therefore it doesn’t take any time to parse during startup). But this took a lot of work both on our part, and on the world owner’s part, who had to track down all of the objects and fix them.

Therefore, in today’s update we added a feature that automatically handles this problem. When Kitely worlds start, any object that takes 1.5 seconds or more to parse is automatically made phantom. Because this is done automatically, world owners no longer need to track down the objects themselves. We also send an email with a detailed list of all the objects that we had made phantom, so if the world owner prefers to optimize their physics meshes and make the objects non-Phantom then they can easily locate the objects in-world.

Here’s an example of part of such an email:

Dear Oren,

Your Kitely world Bridges contains some objects with complex physics meshes. These
meshes were causing the world to start slowly, because of the time that it takes
OpenSim to process them.

[...]

Slow mesh: 4266 ms
    Object:
        Name: Tennis Racket High
        UUID: af322f3d-e937-4876-b060-c908762f8e5f
        Location: (402.1, 249.4, 20.9)

This feature is now live in all Kitely worlds.

Enabled llRequestURL in the Same Region

Before today’s update, there was a problem with llRequestURL: the URL that it returned only worked when it was called from other regions. However, when it was called from a prim in the same region, it didn’t work. This happened due to a security feature in OpenSim whose details are too technical to explain here. If you’re interested, see this forum thread for more information.

We’ve now fixed this problem, by having llRequestURL provide URLs that contain an IP instead of a hostname.

More Offline IMs

Some of our users have said that they often reach the limit on Offline IMs (which was 25), causing them to miss some IMs. Therefore, we’ve increased the number of Offline IMs that are saved for each avatar from 25 to 50. This is the same limit that Premium Account users in Second Life get.

New and Improved Kitely Welcome Center

An important part of the Kitely experience is the Kitely Welcome Center. This world is the main entry point to our grid, and it serves to introduce new users to the wide range of services and destinations available in Kitely.

We are happy to announce that today we rolled out a new and improved version of the Kitely Welcome Center. This updated version was created from scratch, with the goal of retaining the spirit of the previous welcome center while improving its usability and performance.

Kitely Welcome Center

Acknowledgements

The Kitely Welcome Center is the result of an ongoing community project that was first launched in 2013. The current redesign was made by the following people who generously contributed their time:

  • Ozwell Wayfarer: designed and built the new Kitely Welcome Center, using as inspiration the design that Paislee Myrtle created for the original welcome center. Most of the items in the new welcome center were contributed by Ozwell from his Kitely Market store, Worlds End Landscaping & Roleplay.
  • Dot Matrix: was the project coordinator and created the information signs.
  • Serene Jewell: provided usability feedback early on, and was later joined by more than a dozen other Kitely community members in testing the new world.
  • Tocy Sweet: was not directly involved with this project, but she deserves credit for the graphical design of the signs in this world (which were created by Dot), since they’re based on her design for the Kitely Market advertising campaign. Tocy’s Kitely Market store is Sweet Distractions.
  • Dundridge Dreadlow: was not directly involved with this project, but he deserves credit for creating some of the scripts that were taken from previous versions of the Kitely Welcome Center. Dundridge’s Kitely Market store is Dundridge Dreadlow Developments.

Update Your Landmarks Now

If you have any existing landmarks for Kitely Welcome Center then they will no longer work, because this new world replaced the previous one. Please visit the new Kitely Welcome Center by using its world page or its Hypergrid address (grid.kitely.com:8002:Kitely Welcome Center), and create new landmarks to replace your outdated ones.

Likewise, if you’ve previously set the Kitely Welcome Center as your Home in the viewer, then enter the new Kitely Welcome Center and reset your Home to the new world.

Thank You Again

We want to give special thanks, yet again, to Ozwell Wayfarer who spent hundreds of hours creating this new world. While many other people played a part in creating the new welcome center and the ones that preceded it, Ozwell did the lion’s share of the work in making this new iteration possible.

Thank you to all past and current contributors who’ve helped build this wonderful virtual world. We welcome everyone to come and visit!

Events System and Other Improvements

We updated the system today with a feature that makes Events in Kitely much easier to find and attend. This update also includes several other bug fixes and improvements.

Events

Events are a great way to meet other people and have a good time. In this update we’ve made it much easier to see the list of active and upcoming events. The list of events in Kitely is now shown in the viewer’s login page:

Events List

Click on an event to see its details. Then, click on the event’s location to enter the world where the event is taking place.

Event Details

The Kitely Events Calendar is maintained by the Kitely community. If you’d like to add your own events to the calendar then see How to Add Events.

New Design for the Viewer Login Page

We redesigned the viewer’s login page in order to make more information visible, while taking up less screen space. We heard from our users that the previous design (where the panels appeared one below the other) was too tall, so some users didn’t see the lower panels because they appeared below the bottom of their monitor.

Therefore, we’ve changed the design. The four main panels now appear in a 2×2 square. Each panel only shows part of its information. To see the full panel, simply move the mouse into the panel: it will immediately expand to show more information.

Viewer Login Page - 2x2

By the way, you can view this page from a regular browser if you want (not just from a viewer). The URL is: http://www.kitely.com/viewer_login.

Email Notifications for Group Notices

Kitely has an option to send emails when a user receives IMs or Group Notices while offline. In today’s update, we’ve split this option into two parts:

  • Send me an email if I receive an Instant Message from a person while offline  (Default: on)
  • Send me an email if I receive a Notice from one of my groups while offline (Default: off)

Offline IM Settings

The reason for this change is that some users want to receive email notifications only when someone sends them an IM, but not when one of their groups sends a Notice, because Notices aren’t directed personally at them.

We’ve made the new option (send email on Notice) set to Off by default. So if you do want to receive emails on Group Notices then go to your Settings page and turn this option on.

Other Improvements

We fixed a bug that sometimes caused IM’s to stop working after a user teleported to another world.

In a previous update we added the ability to redirect a Kitely Market order from a Kitely avatar to a Hypergrid avatar. We’ve now improved this feature so that even if the order contained some No-Export items (which can never be delivered to a Hypergrid avatar), we’ll still redeliver all of the Exportable items that are in the order, instead of refusing to redeliver anything.

Some products in Kitely Market have demo versions. We don’t allow sending Demos to Hypergrid avatars; they can only be sent to Kitely avatars. Previously, if you had selected a Hypergrid avatar then we silently ignored your choice and sent the items to your Kitely avatar instead. But this wasn’t clear: people were left wondering why the Demo items weren’t delivered to their Hypergrid avatar’s inventory. So now we show an error message if you attempt to deliver Demo items to a Hypergrid avatar.

Try Demo

We created a server-side workaround for a viewer bug that causes viewers to fail to load the avatar’s inventory when some of the inventory items contain unusual characters in their name or description.

We fixed a rare problem in Kitely Market Analytics that could cause some Views and Impressions to be double-counted.

We updated the version of the Facebook API that we use to version 2.6. This shouldn’t have any visible effect, but if you have a Facebook-connected Kitely account and do notice a problem then please let us know.

Improved Viewer Login Page

We updated our system today with an all-new Viewer Login Page. We also added a way to report Kitely Market products if they violate the Terms of Service.

New Viewer Login Page

The Viewer Login Page is the page that appears in viewers (Firestorm, etc.) when the Kitely grid has been selected, before you press the “Log In” button. Until today, this page just displayed a screenshot of the Kitely Welcome Center. But now it shows constantly-updating information that is useful to people visiting the Kitely grid.

Viewer Login Page

The Grid Info table shows the number of users, worlds and regions in the Kitely grid. It also shows how these numbers have changed in the last 24 hours, and in the last 30 days.

The Destinations panel includes several publicly-accessible worlds that may be currently interesting to visit (because they are popular or currently have other people inside them). You can click on a world to select it as the destination. Then, press the “Log In” button to enter that world.

The New in Kitely Market panel shows some of the newest products that have been added to Kitely Market.

The New Forum Posts panel shows some forum threads that have recently had new posts added to them.

The bottom of the page contains several useful links.

The grid statistics in this page are updated once per hour and the rest of the information is updated every five minutes.

Report Kitely Market Products

Sometimes, products that have been added to Kitely Market might not follow all of the market’s rules. E.g., the products might have the wrong Maturity Rating, or they don’t use Variations correctly. In such cases, users can now report these problems to us by clicking the Report product link in the product page:

Report Product

We’ll investigate these reports and take appropriate action if necessary. In most cases we’ll just contact the merchant and ask him or her to fix whatever needs to be changed. But in more serious cases (e.g., copyright infringement) we may suspend the product, which means that it will no longer be visible in Kitely Market.

Resend Items to Other Avatars

When you purchase items in Kitely Market, you can choose which avatar will get these items using the Deliver To setting in the shopping cart. Unfortunately, sometimes people mistakenly deliver their purchases to the wrong avatar. We’ve repeatedly tweaked how the Deliver To setting works in order to try and minimize these mistakes, but occasionally people still forget to change this setting. When this happens they often approach us about their mistake and ask us to redeliver the items to the avatar that they had intended to buy them for.

Until today, our only recourse was to refund their purchase, instruct them how to properly configure the Deliver To setting for their desired avatar, and then hope that they’ll reorder the items with the correct configuration. However, as this process can be cumbersome, sometimes people didn’t reorder after they’ve received the refund, so they ended up without the items that they wanted, and the merchant lost out on a sale. Therefore, we’ve added a feature that allows us to fix these problems by redelivering the items directly to the desired avatar, without refunding the original transaction or requiring the buyer to reorder. This streamlined process makes fixing these problems quick and easy.

Other Improvements

When you search Kitely Market, we make sure to show you only products that match your account’s Maturity Rating. E.g., for a user whose maturity rating is set to “Moderate”, we show only products with a maturity rating of “General” or “Moderate”, but not products whose maturity rating is “Adult”. In addition, users can choose a maturity filter in their Kitely Market search. For example, a user with an account maturity rating of “Moderate” might select to search only for products whose maturity rating is “General”. In that case, we only show “General” products.

However, until now this filter didn’t apply to the ads that we show at the top of Kitely Market searches. So in the example above, the user could still see ads for products with a maturity rating of “Moderate”. But starting today, we also limit the ads to the maturity rating that was selected in the search filter.

And finally, we’ve updated the default viewer that we offer to new users to Firestorm 4.7.7.

Kitely Market Revenue Splitting

We added a new feature to Kitely Market today: Revenue Splits. Revenue Splits enable merchants to share the revenue that they get from selling a product with other merchants who contributed to the creation of that product.

How to Create a Revenue Split

Here’s the part of the Edit Product page where you can create a Revenue Split:

Create a Revenue Split

To create a revenue split:

  • Edit the product
  • Under “Product Revenue Split”, click on the Plus sign to add a merchant
  • Type in the merchant’s name
  • Select what percent of the product’s revenue they’ll get

The Product Revenue Split applies to all of the product’s variations. However, if you wish, you can also set a revenue split that applies only to a single variation. To do so, click on Override the product revenue split, and then enter a revenue split that applies only to the current variation.

The portion of the product’s revenue that is assigned to a merchant is called their Revenue Share. E.g., “Oren’s revenue share is 30%.” All of the merchants that have a Revenue Share in a product (including the store owner) are called Revenue Participants.

Only users that have a Kitely Market store can become Revenue Participants. But their store doesn’t have to include any products; it can be empty.

It’s possible to assign a revenue share of 0% to a user. In that case the user is just an observer: they don’t get any revenue from sales of the product, but they’ll be informed whenever the product is sold.

What Happens after a Sale

When a product is sold, all of the product’s Revenue Participants get their share of the revenue added to their balance.

In addition, all of the Revenue Participants can see the sale in the following places:

  • They get an email notification about the sale
  • The Sales History page
  • Sales Reports (in CSV format)
  • Order details page
  • Analytics
  • Payouts (only if the product sold for USD)

This means that Revenue Participants can see products from other stores appear in tables that normally show only their own products. To make it clear that these products belong to other stores, the store name is shown below the product, and the merchant’s Revenue Share is shown below the Received amount. For example, the following screenshot shows a Sales History page with two items: one that belongs to the merchant’s own store (“Beach Chair”), and one that belongs to a different store (“Parrots [Solo]”). Note that the other store’s name (“Caldwell’s Curiosities”) appears below the product name.

Sales History with a Revenue Share

Refunds

The Refund and Redeliver options are only available to the owner of the store from which the product was bought; other Revenue Participants are not allowed to initiate these actions. When a product is refunded all the Revenue Participants have their share of the revenue removed from their balance, and they get an email notification informing them of the refund.

Showing Partial Revenue

Throughout Kitely Market, wherever Revenues are shown, the amount shown is just the amount that the merchant received through their Revenue Share. For example, in the screenshot above, this merchant received $0.36 for the product “Parrots”, which is 30% of the total amount received by all the Revenue Participants (which was $1.20). If you were to look at the other merchant’s Sales History page (the merchant that got a 70% Revenue Share), you would see that their “Received” column shows $0.84 (that’s 70% of $1.20).

There are two exceptions, where the Full Revenue is shown instead of Partial Revenue: the Sales Campaigns page and the Ads page. These pages are only visible to the merchant that owns the Sales Campaign or Ad; they’re not visible to other Revenue Participants. Therefore, the merchant is shown the full revenue that was generated through each Sales Campaign or Ad (even though the amount that they personally received was smaller than that).

Analytics

All of the Revenue Participants in a product can see the product in their Analytics pages. They can see the full data about users’ interactions with the product, such as how many Impressions and Views it got. However, the Sales information that they see is different for each merchant: each one only sees information about their own Revenue Share.

If a Revenue Participant is removed from a product then they stop getting sales information about the product. However, they can continue to see the product in their Analytics pages, because Analytics shows historical information and they used to have a revenue share in the product.

New World Template: Kitely Evergreen Island

We are happy to announce that Kitely has a new world template option: Kitely Evergreen Island. Now whenever you create a new Kitely world you’ll have the option to start off with your own free copy of this beautiful Alpine island. Kitely Evergreen Island includes optimized mesh content from some of Kitely Market’s top selling merchants.

Introducing Kitely Evergreen Island

Whenever you create a new Kitely world, you select a template that determines the initial contents of the world. Two of these options are to start off with just some empty land, or to upload your own OAR (OpenSim Archive) file. In addition, we provide a couple of options for fully-functional worlds. Before today’s update, these world templates were Universal Campus and OpenVCE. These templates are based on freebie content that is quite dated, and also widely available in many other OpenSim grids.

We felt that you deserve more. We wanted to be able to offer you a pre-configured world full of high quality mesh content that is professionally laid out and optimized. We wanted it to be comfortable enough for you to feel at home immediately, but with enough possibilities that you could tweak it and make it your own. We wanted you to be able to change everything in that world and reuse it in other Kitely worlds. And we wanted to be able to offer you all of that content for free.

Several Kitely community members have stepped up and created Kitely Evergreen Island to address these needs (see the next section for acknowledgments). The result is a world that contains premium content from some of Kitley Market’s top selling merchants, which you can reuse in all of your Kitely worlds.

Kitely Evergreen Island

All of this professional content is licensed for use for free anywhere in Kitely. It has Copy/Modify permissions, so you can simply pick up pieces in your copy of this world and use them in other Kitely worlds. However, this content can’t be exported to other grids, using either the Hypergrid or the Export World option (which creates OAR files). You can get exportable versions of these items by buying them in Kitely Market from their creators (see the list of stores below).

Kitely Evergreen Island is an example of how a great looking world can also be highly optimized. This world starts up in seconds, and requires very little CPU resources to run.

This new world template replaces the OpenVCE template, which we are no longer offering. We still offer the Universal Campus template, however, as it’s still the best starter option for a large world that can host many people.

Acknowledgements

The creation of Kitely Evergreen Island was a community project that involved several people who generously contributed both their time and items from their Kitely Market stores:

  • Ozwell Wayfarer: designed and built Kitely Evergreen Island. Almost everything included in this world is a contribution from his Kitely Market store Worlds End Landscaping & Roleplay.
  • Zuza Ritt: contributed a cabin from her Kitely Market store 21strom.
  • Dot Matrix: was the project coordinator and created the information signs in the cabin and the landing point.
  • Tocy Sweet: was not directly involved with this project, but she deserves credit for the graphical design of the signs in this world (which were created by Dot), since they’re based on her design for the Kitely Market advertising campaign. Tocy’s Kitely Market store is Sweet Distractions.

Updated New World Dialog

The New World dialog now shows a screenshot of each world template option. This makes it easier to understand what you’ll get with each option, especially for new users.

New World Dialog

Final Words

We want to reiterate our gratitude to Ozwell, Zuza, Dot and Tocy. Their generous contributions of time, skill, and content made it possible for Kitely to offer you this great new world template free of charge.

To get your own Kitely-hosted copy of Kitely Evergreen Island, with Copy/Modify permissions for everything in that world, go to your My Worlds page and create a new world using the Kitely Evergreen Island template.

Unified Passwords and a Login Fallback Option

We updated our system today with several improvements that make it easier to login to the Kitely grid.

Unified Passwords

Some Kitely users have two passwords: a Grid password, used to login from the viewer; and a Website password, used to login to the Kitely website. (If you signed up to Kitely using your Facebook or Twitter account then you don’t have two passwords, so this section isn’t relevant to you.)

Keeping track of two passwords can be confusing, and quite a few people had problems logging into the grid because they changed their website password when they had intended to change their grid password. We’ve therefore decided to unify these two passwords: now the same password will be used to login to both the Kitely grid and to the Kitely website.

This change will only affect future passwords; not existing passwords. This means that for existing users, your passwords have not changed; you can keep using Kitely as you usually do. This change will only make a difference if you decide to change your password in the future: at that time, the new password that you choose will be set as both your Grid password and your Website password.

Login Fallback Option

When you try to login to the Kitely grid from the viewer, sometimes the world that you want to enter isn’t available. This can happen if the world was deleted; or if its permissions don’t allow you to visit it; or if the world has been suspended.

Until now, when such problems occurred we showed you an error message in the  viewer’s main screen and prevented you from logging into the Kitely grid. You therefore never got to enter the grid, which is annoying. Today’s update solves this problem: now, when you enter valid login credentials (username and password), we always let you log into the Kitely grid. If you can’t log into your desired destination then we send your avatar to the Kitely Welcome Center instead. Once you’re there you can teleport to other worlds, talk to people, etc.

Other Changes

Based on user requests, we fixed the LSL function llGetWallclock to return the current time in the PST timezone.

Performance Improvements and Bug Fixes

We updated the system today with several performance improvements, and fixed some OpenSim bugs that were reported by our users.

We’ve updated Kitely to OpenSim 0.8.2.1. This is a minor change, after last week’s update to OpenSim 0.8.2.

We improved the performance of our cloud-based inventory system for users with very large inventories. Your avatar’s inventory should now load faster in the viewer.

We fixed a bug that caused regions in big worlds to appear Offline in the World Map. Those regions weren’t really offline; they just looked that way on the map. Now they are properly displayed as being online.

We fixed a bug that, on rare occasions, caused teleports to high coordinates of a big world to result in the avatar being teleported to location (128,128).

One of the most advanced LSL functions is llCastRay. OpenSim now supports two versions of llCastRay: v1 and v3. We’re currently using v1, which is the default. However, we’re considering switching to llCastRay v3. If you’re currently using llCastRay then please join this forum thread and let us know what you think. If you’re a world owner then we can selectively switch your world to use llCastRay v3, if you’d like to test it.

When evaluating the alternatives to llCastRay, please test two aspects: 1) Is v3 faster or slower than v1? 2) Is v3 more or less correct than v1 (i.e., does it identify the hit objects correctly)?