Monthly Archives: September 2013

Changes to Kitely Market Permissions

We updated Kitely today with a few improvements to Kitely Market. We also fixed a longstanding OpenSim bug and contributed the patch to OpenSim.

Changes to Kitely Market Permissions

We made a change to the way we set item permissions when a merchant adds an item to the market. This is a subtle change, so it won’t affect most products, and in fact you may choose to skip reading this section… The change has to do with folded permissions. What are folded permissions? Well, every object in an inventory has two sets of permissions. The main permissions are what you usually see and set: Modify/Copy/Transfer, for Everyone/Next Owner. The folded permissions are a combination of the main permissions and the permissions of the items inside the object (if any).

For example, suppose you create a box with permissions Copy and Transfer (CT), and put inside it a script with just Transfer (T) permission. In this case, the box’s main permissions are CT, and its folded permissions are T. (Since the script is No-Copy, the object is made No-Copy as well in order to prevent making copies of the script by copying the object that contains it.)

The problem we found is that sometimes OpenSim doesn’t set the folded permissions correctly. For example, we’ve seen cases where OpenSim had set the folded permissions for an object lower than the permissions of the items it contained, and this caused the entire object to have fewer permissions than it should.

We decided to fix this problem by calculating the folded permissions ourselves, ignoring whatever OpenSim has done. We can do this because we know which items are contained in each object, so we know what the folded permissions should be.

We chose to deal with this problem in Kitely Market and not in OpenSim for two reasons. First, the permissions calculations in OpenSim are extremely complicated and we’re not sure we could fix them without creating other bugs in the process. Second, by moving this responsibility to Kitely Market we gain a measure of protection against future bugs as well; not just currently-known bugs.

This change won’t affect most products because in most cases OpenSim does calculate the folded permissions correctly. In cases where it didn’t, this change might add permissions to the parent object. For example, suppose you had created a box with permissions MCT, that contains items that are also MCT, but OpenSim had mistakenly set the box’s folded permissions to MT instead of MCT. This caused the box itself to get MT permissions as well, i.e. it became No-Copy. Today’s update will change the folded permissions to MCT, and therefore the box itself will also change to MCT, i.e. it becomes Copyable (as it should be).

Other Changes to Kitely Market

We fixed a problem that prevented some users from trying out the demo versions of products.

To protect brand names, we don’t allow creating a store with the same name as an existing store.

Some users have told us that when they finish editing a product they sometimes forget to Accept the changes, so the product isn’t actually updated in the market. To help merchants remember to Accept the changes, we added the yellow “Accept changes” panel to the bottom of the edit page (in addition to the top of the page, where it’s always been).

Fixed a Coalesced Objects Bug

We fixed a longstanding bug in OpenSim: when rezzing a coalesced object from a prim’s inventory, only the first sub-object was rezzed. For example, if you had a coalesced object that contains three boxes, and you rezzed it from a prim, then only the first box was rezzed. We fixed this bug, and contributed it to OpenSim; let’s hope it makes it into OpenSim 0.7.6.

In case you encounter this bug on a grid outside Kitely, you can use the following workaround: copy the coalesced object into your avatar’s inventory, and rez it from there. Of course this workaround requires people to actually know about it, so it’s better to just fix the bug.

Easier Attachment Creation and Kitely Market Improvements

We updated Kitely today with several bug fixes to OpenSim that will make it easier to build attachments. We also made several improvements to Kitely Market, and added a couple of features that had been requested by our users.

Bug Fixes in OpenSim

If an attachment was rezzed and then taken back into the inventory then it forgot its attach point and position, which forced you to set them from scratch. This affected mostly creators of attachments, because other people rarely rez their attachments on the ground. This bug has been fixed.

In addition to the in-world fix, the attach point and position are now also saved in exported OAR files. However, currently only Kitely recognizes these fields because this bug fix isn’t a part of OpenSim yet (see Mantis 4905). Therefore, export and import of such OAR files in Kitely will retain this information, but loading the OAR in a different grid will lose the data.

When editing an attachment while it’s attached to the avatar, if you moved the root prim by itself then all the other prims disappeared. (Actually they still existed, but were moved far away so they could no longer be seen.) This bug has been fixed.

When editing an attachment, other people couldn’t see the changes you made until the attachment was detached and reattached. Now other people will see the changes the moment you stop editing (technically, once the attachment is no longer selected).

We fixed a bug that prevented you from being able to resize objects to be larger than 10m.

We fixed a bug that prevented resizer scripts from being able to resize objects below 0.01m. (It was possible to resize below 0.01m by dragging the object directly, but not when using a script.)

We’ll contribute these bug fixes to OpenSim, where relevant (Mantis 4905 already contains the bug fix for one of the attachment bugs; it just hasn’t been accepted into OpenSim yet).

How to Use Multiple Attributes in Kitely Market

In Kitely Market, merchants use Attributes to help people find their products. For example, a merchant might assign the attribute “Color: Blue” to a dress, so that when people search for blue items they will see that dress.


We allow merchants to assign multiple values to the same attribute. However, this capability should only be used when those values are equally dominant. For example, suppose the blue dress also contains yellow polka dots: it should still have only the Blue attribute, but not the Yellow attribute. That’s because when people search for yellow items they want to see items that are mostly yellow; not items that are mostly some other color (blue).

All of this was background; now we’ll describe the change that we’ve made. In order to make it easier for people to find the items they want, when searching for an attribute type we now show items that have only one attribute value of that type before items that have multiple attribute values. For example, if you search for Blue items then we’ll show the search results in the following order:

  1. Items that have only one color: blue.
  2. Items that have two colors, one of which is blue.
  3. Items that have three or more colors, one of which is blue.

This helps you when you’re looking for blue items because it makes the “bluest” items appear first.

Note that this change only affects the use of multiple values for a single attribute type, such as Color. This doesn’t affect the use of multiple attribute types for the product, such as Color, Theme, Movement, etc. It’s perfectly valid to assign as many different attributes types to the product as are relevant for it.

In addition, this change doesn’t affect search results where the attribute with multiple values isn’t one of the search criteria. In other words, if you’re not filtering items using their color then the number of colors that the item has doesn’t affect where it appears in the search results.

So, given all of this, should multiple attribute values ever be used? Yes, there are still some valid use cases. One valid use of two Color values would be for items that have colors that are both equally dominant, e.g. a blue and yellow striped shirt. This way the item will be included in search results for both Blue items and Yellow items. However, it will appear after items that have only one of these colors.

Another good use of multiple attribute values is for Bundles. If you create a bundle that contains several colors then it makes sense to assign many different Color attributes to it. But what about the problem that the bundle will appear lower in the search results? Our recommended solution is that in addition to the bundle, you also create one variation for each individual item. Each of these variations will have only one Color attribute, corresponding to the item’s color, and a picture that shows the item in that color. These single-color variations serve to promote the product: people are more likely to click on them than on the bundle variation because they show up higher in the search results (because they have only one color), and they have a picture that shows the product in exactly the color that the buyer is searching for. Once the buyer has clicked on the product they will be able to see that you also offer a bundle variation, and may choose to buy the bundle instead of just one color.

Other Kitely Market Improvements

We added a few attributes that our users have requested. These attributes can be used to better describe products in the market:

  • Colors: Gold, Silver, Bronze
  • Movement: Rigged

We’ve made it easier to find products using text search: when you search for a word that appears in a category or attribute we’ll automatically show products that belong to that category or attribute. (Previously it was necessary to click on the actual category or attribute link on the left side of the screen.) For example, if you search for the word “blue” then you’ll see all blue-colored products, even if the word “blue” doesn’t appear in their description (as long as the merchant has set the “Color: Blue” attribute on the product).

We’ve made a few improvements to the way we show errors when adding items to a product (if any errors are found, that is…). First, we now show different icons for Errors and Warnings. Second, when searching for asset UUIDs in scripts and notecards we now ignore comments: any UUID that appears after the characters “//” is ignored. Third, when showing warnings in scripts we specify the line number where the warning was found. And finally, we no longer show warnings for the standard textures that are built into viewers, such as the Invisiprim texture (e97cf410-8e61-7005-ec06-629eba4cd1fb).

We fixed a bug with the way we handle the Modify permission. Previously, if an object contained any No-Copy, No-Transfer or No-Modify items then we made the object itself also No-Copy, No-Transfer or No-Modify. But this behavior was only correct for the Copy and Transfer permissions, and not Modify, because it should be possible for Modify objects to contain No-Modify items. So now we allow that.

We don’t allow Demo items to be exported, even if the demo belongs to a product that can normally be exported. (Demo items are created when you click “Try demo” in the shopping cart. Demos are only available if the merchant has created a demo version of the product.)

Other Improvements

We added a checkbox in the Settings page that allows you to disable all the animations in the Kitely site, in case you prefer a more static user experience.

We added a checkbox in the Settings page that controls whether to send emails when you receive an Offline IM, and we made this setting On by default. Previously this setting was Off by default, and could only be changed in the viewer, so most people never enabled it and therefore they didn’t know when they received Offline IMs.

New Kitely Welcome Center

We are proud to announce that Kitely has a new central world: the Kitely Welcome Center. This beautiful always-on world will be used for several purposes. First, it contains helpful information about Kitely, so when new users join Kitely we invite them to visit the Kitely Welcome Center. Second, this world will be used for community activities such as the weekly Kitely Mentors group meeting.

Kitely Welcome Center

Our previous welcome center, Kitely Plaza, was an interesting and good looking world. However, due to its size and complexity it had performance problems that couldn’t be resolved without substantial optimization work. We have therefore decided along with the Kitely Mentors group to work together to replace Kitely Plaza, and the Kitely Welcome Center is the result of that project.

Kitely Plaza is still available on Kitely as an on-demand world. Please note that Kitely Plaza is a complex world, so if you attempt to visit it then you may need to wait a few minutes inside a Kitely Transfer Station until it starts (you’ll be teleported to the plaza automatically once it’s online).

It Takes a Village

The Kitely Welcome Center was a community project that involved many people who generously contributed their time:

  • Concept, layout and landscaping: Paislee Myrtle and Dot Matrix
  • Landing area and gateways: Dundridge Dreadlow and Sierra Jakob
  • Kitely information area: Allen Partridge and Rosa SLGardner
  • Hall of Merchants and Kitely Worlds Showcase: Paislee Myrtle, with display boards and infrastructure by Dundridge Dreadlow
  • Meeting and hangout areas: Paislee Myrtle and Min Tigerpaw
  • Avatar changing area: Paislee Myrtle; free avatars by Linda Kellie
  • Kites and water sounds: Sierra Jakob
  • Swing: Sherrie Melody
  • Bird sounds: KatiJack Studio
  • Trees from Kitely Market by: Brayla Sana, Cordts Baxton
  • Other trees and plants: Paislee Myrtle, Daniel Hoffman, Ruby O’Degee, Dot Matrix, Sifan Shan, Shenn Tao, Leah Auxifur, Avia Dezigns
  • World showcase photos: Dot Matrix, Sherrie Melody, Graham Mills, Danko Whitfield, Ruby O’Degee, Caitanya Rupa
  • Miscellaneous licensed items from generous individuals throughout the OpenSim hypergrid

We want to give special thanks to Dot Matrix who organized this community project. She did a phenomenal job of getting everything and everyone in order. This project wouldn’t have been completed this fast and wouldn’t have come out this great without her outstanding project management skills.

Thank you all who’ve helped built this wonderful new Kitely Welcome Center. We welcome everyone to come and visit!

Kitely Market Presented in OpenSim Community Conference 2013

Kitely Market is a virtual goods marketplace that is designed to help join all Hypergrid-connected OpenSim grids into one viable ecosystem. Its mission is to help the Metaverse evolve from a collection of standalones and small grids to a unified market that can attract more merchants, buyers, money, activity, and interest for everyone.

I presented the Kitely Market in the Business and Enterprise track of the OpenSim Community Conference 2013.

Here is the video:

Here are my slides:

Tools For Finding and Fixing Problems in Products

Wow, we are floored! The response to our launch of Kitely Market has been overwhelming. In the week since it opened many people have used it to purchase items, and many more have visited the market and talked about it. There have also been some misconceptions about the market, and Ilan is busy correcting them throughout the internet… But in this post we want to introduce a new feature that we’re very proud of: a way to easily find and fix problems in products.

Fixing Problems in Products

Items sometimes contain errors. For example, a prim might be using a texture that doesn’t actually exist, because it was uploaded as a Local Texture. Kitely Market now detects such problems and helps the merchant fix them, to ensure that buyers get a problem-free item.

To demonstrate these capabilities we’ll use a real-world item that we found in the Diva Objects Library: Nebs Sculpted CampFire v1.2. As it turns out, this item contains two problems. We’ll use Kitely Market to find and fix these problems.

When you add items to a product, we now show if they contain any errors. We show the total number of errors and warnings, as well as an icon next to each specific item that has a problem. Here’s what you get when you add “Nebs Sculpted CampFire” to a product:

Items Table with Errors

In this example the problems are just Warnings (and not Errors), but the procedure to fix errors and warnings is the same. Click on the error icons to get more information about the errors. For example:

Items Table with Error Popup

This tells you that the problem lies in the object “Nebs Sculpted CampFire v1.2”; in a prim called “Primitive” (yes, we know that this name is unhelpful); and within that prim, in the inventory item called “particle smoke for campfire”, which contains a reference to a nonexistent asset.

The next step is to rez the item and find the prim that contains the problem. Here’s what the rezzed item looks like:

Sculpted Fire - Original

But how to find the correct prim? There are quite a few prims, and some of them are hidden deep inside the object. The prim name, “Primitive”, tells us nothing (use meaningful prim names, people!). The prim number (Prim #11) doesn’t help us either because we can’t see prim numbers in the viewer.

This is where we introduce a very nifty feature: the Debug Version. Click on Deliver debug version to get a special version of the product added to your inventory. This version contains several changes compared to the original item, that make it easy to find the problems:

  • Prims that contain problems are highlighted in red.
  • Prims are numbered. E.g., the prim that was formerly called “Primitive” is now called “Primitive (Prim #11)”.

Let’s rez the debug version next to the original version, and compare them side-by-side:

Sculpted Fire - Side by Side

We can now easily see that the two problematic prims are the round base, and an invisible prim that stands perpendicular to the base.

Using the debug version as a guide, we locate the corresponding prims in the original item and click on them. Now we see the problem: the particle-system script contains a hard-coded texture UUID. That UUID was probably valid on whichever grid the item was originally created on, but it doesn’t work on other grids.

Sculpted Fire - Show Error in Script

This problem wasn’t obvious because the default texture is white, and white is a pretty good color for smoke. We’ll never know what the smoke was actually supposed to look like. The solution to this problem is to add the smoke texture to the prim’s inventory, and change the script to load the texture from the inventory instead of by hard-coding a UUID. This is not shown here.

The other problem in this object is similar: another script refers to a Sound asset using a hard-coded UUID, but that asset doesn’t exist on any grid except the one where the object was created.

After fixing the problems, take the item back into your inventory and then add the fixed item to the product. The result: no more errors!

Redeliver Products

We made one more change today, to the Redeliver feature. Merchants can choose to redeliver purchased items to the buyer. For example, this feature is used if the original item had problems, which the merchant has fixed. Previously the Redeliver feature sent the buyer the same version that was originally bought, but this was unhelpful because it didn’t include the new fixes. Now Redeliver sends the latest version of the item instead.