SLDev-Traffic 3
sldev-traffic no 3
sldev discussions through March 16, 2007
Proprietary Voice Middleware
Gigs Taggart inquired as to why Linden Lab was choosing a closed-source solution for voice support. This resulted in extended discussions in all venues.
There was some discussion as to the CODECs in use. Siren14 (G.722.1(C) -- Soft) was named as one CODEC and Tom Callaway inquired with the Free Software Foundation about whether Polycom's implementation was Free or GPL-compatible. The FSF stated that it was not, noting that Polycom required reproduction of their trademark and held the ability to revoke the usage license at any point.
Joe Linden listed the CODECs in use, naming them as standard:
the codecs in use for voice are standard. We're using G.711 and G.722.1 (annex C) both of which are described in relevant ITU specifications. We use RTP as media transport - the standard payload type is used for G.711 and a custom tag for G.722.1(C). The control protocol is SIP (RFC 3261).
Callum Lerwick questioned the choice of G.711 and proposed building something around the speex CODEC. He pointed to the bandwidth required by G.711 and patent and license issues for G.722.1(C), as identified by Tom Callaway. Callum further pointed out Ekiga, which may be the open source project closest to what Linden Lab are trying to implement with Vivox: http://www.gnomemeeting.org/
The Vivox code is acknowledged as closed. Joe and Rob Linden both noted that LL are pursuing an avenue for avoiding GPL licensing issues. List members were reminded as well that development on voice support precedes the open source release, with a variety of strong reactions.
Linden Lab and Open Source
A large thread spun off from the voice middleware discussion, wherein list and IRC users criticized or questioned Linden Lab's commitment to open source. Boroondas Gupte and Callum Lerwick called for Linden Lab to explicitly define their position on open source, as between the cathedral or the bazaar, as in Eric S Raymond's noted essay. (10,000ft summary: both models are open source, but the cathedral model makes public releases while the bazaar model makes the full development process public -- Soft)
For reference:
http://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar
http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar
Callum Lerwick went on to name using the same SCM and JIRA as two steps Linden Lab could take toward the bazaar position. He characterized the cathedral model as treating non-Linden Lab developers as second class citizens.
Dave Parks (Dave Linden?) emphasized that Linden Lab is not a monolithic entity, and had no position as a whole. Individual developers within Linden Lab choose their level of participation, and Dave notes that for each developer he knows, the decision will be made based on what gets the job done, not control, respect, or ideological issues. Dave noted that this philosophy will extend to the choice of third party libraries at times, where open standards would be used, but closed source was not ruled out. He encouraged developers to speak up whenever they could identify or offer a solution rivaling closed source, and promised they had his support and attention in this.
In response to questions about Linden Lab's level of commitment, Rob Linden laid out the fact that Linden Lab opened the Viewer source at a time when Second Life wasn't hurting for publicity or trying to regain a market position. He contrasted this with the more usual case where a company turns to open source as a last ditch effort in recapturing attention. He also explained that while he agreed that Linden Lab should be increasingly stringent about licensing concerns, going all out on every point at once and attempting to disrupt Second Life as a business was a good way to end up ignored and ineffective.
Boroondas Gupte called for Linden Lab to communicate the open source implications of new feature additions further in advance. He noted that Linden Lab already communicates much about new features in advance, and that adding this level of detail would help the development community better offer free solutions.
License and Policy in JIRA
As the open source discussion consumed much of the list traffic this week, there was discussion about splitting the list into development and policy lists. A JIRA issue was created for discussing this, and it was further discussed during Rob Linden's Friday office hours. https://jira.secondlife.com/browse/MISC-44 (no internal JIRA)
In the end, there was concern about a second list reducing visibility of issues as developers might not take the step of joining the additional list and would therefore miss out on parts of the discussion. Instead, Rob proposed creating JIRA issues for issues like these, as well as the creation of a discussion/policy JIRA category. Those present during Rob's office hours agreed that this made sense.
Unofficial SL License FAQ
Gigs Taggart created an unofficial Second Life license FAQ, available here: https://wiki.secondlife.com/wiki/Unofficial_Licensing_FAQ
As with everything on the wiki, feedback and additions are encouraged.
There's another spin-off licensing discussion that's still very much alive and unresolved, and so it will be covered in SLDev-Traffic4.
Object Extrusion Explained
Joel Riedesel was trying to understand how prims are represented and created in Second Life. John Hurliman explained the method by which two dimensional profiles are extruded along a three-dimensional path.
https://lists.secondlife.com/pipermail/sldev/2007-March/000940.html
Faster Viewer Builds
Tobias Lang asked whether it were possible to speed up the build. With 1 gigabyte of memory, Callum Lerwick reported build times measured in hours, which were alleviated by adding a second gig of memory and using ccache.
Dzonatas Sol offered a patch that builds newview as a library before performing the final link, and said it made the difference between hitting swap for about 1.5 gigabytes and no swap activity at all: https://jira.secondlife.com/browse/VWR-225 (no internal JIRA)
Dale Glass mentioned the benefits of using a RAMdisk given the amount of /tmp traffic. Specifically, mounting /tmp as a tmpfs can be most beneficial here.
Kelly Linden produced an excerpt showing the amount of time saved by building on a drive other than the main OS drive, and by moving to a faster 10,000RPM drive, as opposed to the 7,200RPM base. The times were 2m15s for a build on the Windows drive, 2m00s on a spare 7,200 drive, and 1m30s on a faster spare drive. Kelly also noted that getting rid of unnecessary includes can help link times, not just build times. Replacing #includes with class declarations was the example given. (class LLFoo;) Kelly Linden also noted Zero link for Mac users, and Soft Noel noted that it helps considerably, but that it may defer some link errors until missing functions are called.
Jesse Nesbitt suggested IncrediBuild, but noted that it's not Free or cheap. Soft Noel noted that Incredibuild doesn't help much on link times, only build times, but mentioned that Visual Studio 2005's linker was far faster than Visual Studio 2003's and that the 2005 linker was usable with 2003 for projects not yet migrated to the newer compiler. Also of note, Visual Studio 2005 builds projects within a solution in parallel on multiprocessor machines.
Soft inquired as to whether the Linux build had parallel-friendly dependencies. Dzonatas confirmed that they were for those not using distcc.
Precision Avatar Positioning
Ettore Pasquini is looking for a way to move avatars with fine precision for a high resolution input device. John Hurliman noted that the libsecondlife team had accomplished this with crafted AgentUpdate packets and hoped he could dig up some code soon. Callum Lerwick suggested a teledash script. To date, no solution has been presented.
More Unit Testing
Deepak Jain posted the third drop of the unit testing additions. There was no feedback on the list. Please consider reviewing the patch if you're curious to learn more about unit testing, or if you want to provide some guidance on what systems need the most protection going forward.
Deepak's March 13 message was not archived by the listserv, but the patch is still there:
https://lists.secondlife.com/pipermail/sldev/2007-March/000916.html
The original message contained this note on coming progress:
Next up: A. Unit tests for the following: i) llcommon - llevent ii) llmessage - llcipher, llnullcipher, llxorcipher, llbuffer iii)llmath - llquaternion, v4math iv) llcharacter - lljoint (requested by community member - John) B. Fix llnamevalue for the failed unit tests
Cross-Compiling the Viewer
Dzonatas Sol posted progress on cross-compiling the SL Viewer. It relies on using Wine to install the Boost, DirectX and QuickTime SDKs, as well as the Minimalist GNU for Windows compiler, and has been tested under Debian and Debian derivatives. The project page is linked below. Progress is facilitated by a patch currently attached to VWR-187.
http://wiki.secondlife.com/wiki/User:Dzonatas_Sol/OSLCC https://jira.secondlife.com/browse/VWR-187 (SL-37031 internally)
Line Endings
SLDev users use a wide variety of OSes, editors, compilers and tools. One difference between the platforms is the use of CRLF (Windows) versus LF alone (Mac, Linux). An increasing number of files have been showing up with wrong or mixed endings. SpacedOut Fry's original report of 14 files is in VWR-157. A subsequent source drop had 9 more files with bad endings.
https://jira.secondlife.com/browse/VWR-157 (SL-36821 internally)
The line endings seem like a small detail, but it's worth noting that some editors don't handle mixed or foreign endings properly. Additionally, some diff utilities and SCMs misunderstand foreign line endings and may mark entire files as "changed," masking real changes.
To date, two sources of wrong line endings have been uncovered. The first was a utility applying the GPL license to files with LF only endings under Windows. The second was the use of tortoise svn, which Phoenix Linden identified as not setting eol-style on add. The first reported as fixed by Rob Linden. Phoenix Linden notified internal developers about the tortoise svn problem internally.
Peekay Semyorka noted that users installing cygwin in UNIX line ending mode instead of DOS mode can inhibit some automatic conversions from taking place as well. The preferred behavior is the default installation option, no matter how sacrilegious a CR-producing vim may feel.^M ^M If you see more line ending troubles, please keep reporting them in JIRA. Every pair of eyes helps.^M ^M ^M ^M ^M
Zero Linden's Office Hours
Many of you know about Rob Linden's office hours. SLDev-Traffic already makes mention of Rob's hours when list issues come up there, and will expand coverage in the future. Zero Linden introduced himself to the list and noted his office hours as well.
I thought I'd introduce myself: I'm Mark Lentczner, a.k.a. Zero Linden. I'm the Director of Studio Icehouse at Linden Lab. I'm focused on messaging between systems and the architectural underpinnings of Second Life. I hold office hours in world twice a week: Grasmere 165,109 Tuesdays, 1pm Thursdays, 7:30am These are geeky-techy-nerdo office hours. Come talk about the technology that runs Second Life.
Zero Linden regularly posts office hour transcripts to his wiki, and offers the March 1 transcript as a teaser: https://wiki.secondlife.com/wiki/User:Zero_Linden https://wiki.secondlife.com/wiki/ZeroTranscript2007Mar01
Can't go a weekday without a Linden? Subscribe to the Linden Office Hour calendar. It currently covers Rob, Jeska, Torley, Zero and Robin Linden: http://www.google.com/calendar/embed?src=mvktahmo6mjpvpkkkdnmabmghg%40group.calendar.google.com
Message_Template.msg Ordering and Packing
John Plevyak believed he had found some bugs when investigating message_template.msg and its binary layout. The bugs revolved around ordering issues, apparent dependencies on STL and hash implementations, and a bug and an inefficiency in the hash function.
Zero Linden noted that there wasn't an STL dependency as the order of std::map guarantees a sort on the key, and said the error in the ordering in message_template.msg would be fixed in a coming release.
The bug noted in the hash function was that it ignored the first character of the material being hashed. This potentially results in single-character labels all being matched as the same string, as well as would be the case with strings identical save in the first position. This bug was not resolved in SLDev.
Zero Linden thanked the list, as it had indeed brough attention to an unknown problem. John Plevyak offered him a beer.
Second Life User Experience
Bane Darrow kicked off a lengthy usability discussion when he wrote about a number of frustrating aspects of the Second Life UI, including character and camera movement during appearance editing, some non-resizable screen areas, and menu and inventory floater issues. Ben Glenn (Linden) took the opportunity to introduce himself as the new User Experience Designer at Linden Lab. Ben eagerly encouraged users to file bugs about usability issues as well as engaging him in discussion on list. Users followed up with many more issues and a pointer to a feature wanted from There.
Ben acknowledged that many residents express frustration about some of the same issues mentioned. He's looking for help in identifying and fixing them, and encouraged direct mail for people who want to "join forces."
The pool of JIRA suggestions begins here:
https://jira.secondlife.com/browse/VWR-221 (Virtual Folders, Labels)
https://jira.secondlife.com/browse/VWR-222 (Moving camera and/or avatar when using edit appearance)
https://jira.secondlife.com/browse/VWR-223 (Avatar turning to face object you are trying to edit)
https://jira.secondlife.com/browse/VWR-224 (Console windows immovable)
Kelly Linden points to his page on Inventory UI Design and encourages additions:
https://wiki.secondlife.com/wiki/Inventory_UI_Design
Note that the discussion child page is active on this entry.
Discussion about the camera continued on-list, and Richard Nelson (Linden) noted one of the underlying reasons for an annoying inventory window behavior.
Web Issues
When logging into JIRA, it's often necessary to visit the front page before the login is fully recognized. At current, it's possible to be in a half-logged-in state, where the username is displayed, but appropriate permissions are not given for adding comments or voting on issues. Many list users, including a few Lindens, confirmed the issue. Rob Linden is jabbing at the vendor for help. Seg Baphomet JIRAd the issue:
https://jira.secondlife.com/browse/WEB-47 (SL-32040 internally)
Automated SVN Imports
Running your own SVN? Dale Glass posted a script for automating source drop imports: http://daleglass.net/load_sl_archive
$ load_sl_archive <directory> where the <directory> is the directory containing the required files ONLY (art and source). Current version won't work if you add the libraries but that can be fixed. It will: * Find the version based on the filenames * Run svn up on the checked out source * Find the repository's URL from a checked out copy * Check that the source hasn't been imported already * Extract the files * Fix the unicode.ttf (svn_load_dirs doesn't like broken symlinks) * use svn_load_dirs to load the source, creating a tag with the release's name. No interaction needed.
Second Life Developer Directory
Rob Linden noted the current in-world developer directory, which gets more than two thousand views per week, and announced that a similar directory was being created for Viewer developers. The directory will be for individuals who have a signed contribution agreement with Linden Lab, accepted Viewer patches, and a valid business license.
Interested developers should visit this link and select the Software Developer category: http://secondlife.com/developers/submission.php
Rob anticipates the page going public after five developers are ready to be listed.
Rob Linden at Virtual Worlds 2007
Going to Virtual Worlds 2007? Meet Rob Linden: http://www.virtualworlds2007.com
Victory For OpenJPEG Day
The past two issues of SLDev-Traffic have mentioned ongoing frustrations with the Viewer and OpenJPEG. The patch has landed. On March 16th, Tofu Linden acknowledged that the fix had passed testing.
https://jira.secondlife.com/browse/VWR-123#action_11102
Yay! :)
Just For Fun
Scott (Gutherey?) contributed an SL maze generation program. It appears to be Windows only so far, but it's fun seeing projects not exclusively tied to the Viewer. Look in the Second Life Maze Generator directory at Scott's link:
That's It
Busy week. My fingers are worn to painful nubs. But it's a good kind of hurt.