SLDev-Traffic 7

From Second Life Wiki
Jump to navigation Jump to search

SLDev Traffic

sldev-traffic no 7

sldev discussions through April 13, 2007

Documenting the Second Life Protocol

Dzonatas Sol inquired about documentation for the Second Life protocol. Rob Lanphier (Linden) pointed to Protocol, noting that the protocol was still in flux. Jesse Nesbitt reminds users about Lib SecondLife, as well as the message template, which includes some useful comments.

More OpenJPEG Progress

Dzonatas Sol continues optimizing OpenJPEG. This week, Dzonatas published a patch facilitating vectorization throughout dwt.c. The details of some of this are non-trivial, but the upshot: "Actual speed-up will vary overall, but it ranges from 2x to 20x in just DWT time." There is some more detailed discussion on the list about how different compilers handle automatic vectorization, as well as floating point versus fixed point performance in this context.

Garbage Collection

A discussion about destroying textures lead to the question of whether unreferenced textures were ever recycled. James Cook (Linden) confirmed that there is garbage collection, but that it's very slow:

  There is garbage collection, but as you noted it is very slow.
  Basically we scan the entire world dataset, including inventory items,
  region state files (textures on objects, textures as inventory items
  inside objects) and assets (notecards and script text).  Anything that
  looks like a texture UUID is added to a list, then textures (well, all
  assets really) that aren't on the list are deleted.
  So if you have a raw key reference to a texture inside a script the
  texture will not be garbage collected.  If it is, then our garbage
  collector is broken.  (It has broken in the past.  We don't immediately
  delete the garbage -- we keep it around for a few days just in case we
  screwed something up so we can put it back.)

And the gotcha:

  If you do something silly like this, though, the texture will be garbage
  key texture_id = (key)("12345678-abcd-abcd-" + "abcd-123456789012");

UUID Generation

The garbage collection discussion opened the question of whether UUIDs could be reused, and how they were generated. John Hurliman points to lluuid.cpp, where the current time and seed are MD5ed (verbing nouns weirds language -- Calvin) to generate the UUID. The time component lowers the chance of UUID reuse within our lifetimes. James Cook points out that the seed is the ethernet MAC address.

Plugin Licensing

Discussion continued about plugin licensing. To rehash previous discussions, the big question is whether Linden Lab will cooperate with developers who wish to create closed source extensions to the viewer. There has been discussion of what obligations exist for code used by, but not directly linked against, GPL code. There has also been discussion about architecting plugins in ways to work around any imposed licensing, or subverting the viewer altogether by operating directly on the network stream.

The number of people pushing these discussions is small but not trivial, and it remains a contentious topic with widespread discussion every time it's revisited. There is no plugin system in the short term, and Rob Lanphier encourages developers to focus on the architecture and implementation of a plugin system in advance of LL being able to answer the question.

Unit Test Harnes - Patch 5

Gaurav Sharma from Adroit posted the fifth unit testing patch.

  1.Unit Tests:
     Completed: llinventory, llpermission, llsaleinfo, v3color, v4color,
     In progress: llevent.h
  2.Fixed llinventory.cpp and llsaleinfo.cpp:
     i) Added a ref to fix a crasher bug
     ii) Fixed incosistance in exportFileXML and importXML in how "flags" get
     iii) Fixed inconsistancy in exportFileXML for some properties that did not
     get exported correctly(uuid, parent_uuid, type, price, creation date)
  Next up:
     Unit Tests for the following:
     i) llcommon - llevent
     ii) llmath - lltreenode, llocttree
     iii) Determine classes that uses LLSD serialization/deserialization and
     write unit tests for the same
     iv) Start spending more time in SL using debug build to repro potential
     crashes and apply fixes.

(As is the usual case, there was no on-list follow-up to the unit test harness patch. If anyone is running these tests, it could be useful to document the process so that other sldev members can contribute or confirm the tests. -- Soft)

SL Competitors' Best Features

Plugin licensing discussions kicked off a discussion about what other virtual worlds are close to Second Life. Callum Lerwick provided an initial list, and John Hurliman and Tim Shephard narrowed the ones with user-created content to:

  Active Worlds

Thomas Rowland believes that Entropia is moving toward participant content as well.

John Hurliman asked what the best features of each competitor are, and whether SL is lacking in any of them. He began by noting that OSMP has an offline sandbox, as well as a portal system. He took the occasion to suggest that this could be approximated with some clever building and allowing LSL scripts to teleport users between sims.

Farallon likes that in There, inventory placed in the world can be recalled from afar and a placeholder exists in inventory for this action. In There, inventory can also be marked as transitory, allowing users to demo objects for a period of time before the inventory vanishes. Farallon also notes that he believes There's vehicle physics are better than SLs, even if There is lacking in a great number of other ways he listed. Lastly, Farallon notes that There bump shields are 100% effective.

Callum Lerwick observed that on There, it's possible to travel over miles of seamless terrain without SL's sim-crossing glitchiness. Several list members mentioned the overall interface on There as being smoother than SL's, despite some odd Internet Explorer dependencies.

Ben Glenn (Linden) User Experience Office Hours

Ben Glenn notes that Tuesdays and Thursdays, he's holding office hours to talk about UI design, usability, upcoming features, the sky's the limit.

When: Tuesdays and Thursdays, 10:00-11:00 AM
Where: [Benjamin Linden's office]

Inventory System Patch

Jason Giglio uploaded a substantial bit of work on the inventory system, attached to VWR-326:

  This patch:
  1. Implements VWR-326 by adding a "5 items in 10 seconds" throttle.
     Throttled items are still accepted, just not displayed.
     This prevents the DoS attack described in VWR-326.
  2. Adds a debug menu toggle to disable auto-opening of new inventory
  completely. This menu option persists between sessions.
  3. Refactors the way new inventory items are opened/highlighted to
  remove the old hacky way.
  4. Fixes a leaking observer in the inventory system related to 3
  5. Fixes a rare crash by removing a null pointer dereference.

Jason has been adored by Lindens and external contributors alike. :)

Cameras in Non-Adjacent Sims

John Hurliman inquired as to whether it was possible to place cameras in non-adjacent sims. He noted that the "child camera" can leapfrog across sims by peering from one sim into another, but wondered if it were possible to move the camera to an arbitrary sim without regard for nearness or continental connectivity. There was no discussion past John's question and a subsequent clarification of the question.

Japanese Input

Matsuu Takuto inquired about using Japanese symbols in chat under Linux. To this end, Alissa Sabre has released [a patch] against SDL. Tofu Linden hopes to bundle the matching SDL version with the viewer by default if Alissa's patch is accepted by the SDL project.

Teleportation Disconnections

John Hurliman has been investigating disconnections when teleporting. He notes that, using some bot code, he found that the client receives TeleportStart, TeleportProgress, TeleportProgress, and the connection to the current simulator times out before the teleportation completes. He wonders if this could be handled more gracefully, if the current simulator is always assuming a successful teleport from TeleportStart onward.

Liana Holmberg Introduces Herself On-List

Liana introduced herself on sldev, noting that her first order of business is to clear out the backlog in the licensing mailbox and to address current questions in the wiki and JIRA. Liana appreciates patience while catching up. For new questions:

  please use the following protocol:
  -Announce an issue or ask a question in SLDev
  -Take conversations to the wiki (noting the link in SLDev)
  -Make jira requests for actionable items and post constructive comments and design recommendations there.
  You can also:
  -Email specific or private requests for license info to
  -Contact me directly at
  Currently, I hold office hours on Tuesdays and Thursdays from 8:30-9:30 am PDT. Feel free to stop by:
  Liana Linden Living Room in Ambleside (132, 14, 29)


  You all have my thanks and admiration for the work you've done on OpenSL

Liana was openly welcomed by the list.

Friday Bug Triage

Rob Lanphier (Linden) used his Friday office hours to triage bugs. There was discussion in advance about how to identify the most important bugs, how to differentiate between bugs and feature requests, and whether Linden-created and resident support issues would ever be pushed to the public JIRA. Rob indicated that Linden-created bugs may be pushed to the public JIRA, but that it was too soon to look at floods of in-world support issues.

(Unfortunately I couldn't schedule time for this Friday's office hours so I couldn't make it. I'll endeavor to get a log and read some of the follow-up on-list this week so next week I can tell you how it went. In the mean-time, Rob indicates that it went exceptionally well, and has even scheduled another for Monday at 3! -- Soft)

Discussion continues on-list about how to make these triage sessions even more useful, as does discussion about specific bugs and bug categories that should be sooner addressed.

Triage notes: