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.
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 collected: key texture_id = (key)("12345678-abcd-abcd-" + "abcd-123456789012");
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.
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, v4coloru 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 storted 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:
Croquet http://www.croquetconsortium.org/index.php/Main_Page OSMP http://metaverse.sourceforge.net/ There http://www.there.com/ Active Worlds http://www.activeworlds.com/ HiPiHi http://www.youtube.com/results?search_query=HiPiHi
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
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.
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.
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 firstname.lastname@example.org -Contact me directly at email@example.com. 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) http://slurl.com/secondlife/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.