Jump to content

Tools and Technology

  • entries
    86
  • comments
    916
  • views
    93,056

Contributors to this blog

About this blog

Entries in this blog

Jack.Linden

At Linden Lab, we recognize that SL Search is an aspect of the Second Life experience that is a top “back to basics,” priority to improve. So, over the last few months, the SL Search team has been working hard to make Search results more accurate and prepare for the Teen Second Life migration to the Main Grid. Here's a brief overview:

 

New Filters for Search with General or Moderate Ratings

Until now, we've had both land and language filtering in search results. However, there was no real difference between General and Moderate content filters. We're tweaking the content filters, both by defining a "Moderate" set of keywords and by altering some of the teen-related language in the adult filters. If your parcel or profile does not appear at the maturity level you expect it to, then edit your text. You will usually see your edits reflected in Search within six hours.

 

Classified Ads Now Get Extra Level of Rating Validation

Classifieds have always allowed Residents listing a Classified to self-declare the maturity rating of their ad. With teens gaining access to the Main Grid, we've added content filtering to provide another level of rating validation. If you list an ad and don't see the maturity level you're optimizing for in search results, then just edit your text. You should see the edits reflected in Search in about an hour.

 

New Functionality Automatically Builds in Keyword Variations

We’ve also added new functionality (stemming and stop words, for all the industry professionals out there) into Classifieds, which means that advertisers don’t have to stuff their descriptions with every variation of a keyword. For example, a search for “Dance” will return descriptions with “dancing,” “dances,” and “danced."

 

More Sophisticated Filters to Identify Spam and Optimize Search Results

We've moved from the more rigid "past this point and you get dinged" method of calculating boost to one that balances several features of your page. These aspects include how often words are repeated, the nature of the objects on your parcel, the size of the parcel, unique descriptors, and the use of symbols and ALL CAPS. It is important to note that the filter takes into consideration many things. Depending on the combination used, your score could be impacted negatively or not at all.

A note about the perceived "size boost": We want to promote all relevant locations in Second Life -- big or small. Larger stores, with bigger inventories, are more likely to be mistakenly downgraded in Search for repetition in their descriptions and objects. So, we give larger parcels a minor buffer to allow for that. We’ve also adjusted this buffer so that it should be less noticeable. In addition, we now apply a negative boost for parcels that are below the minimum size permitted in search.

All of these factors are now rolled into the one visible spam boost rating on each parcel. It’s worth checking it over the next two weeks as we roll out changes and make the appropriate updates to your information. Edits are typically reflected on the World page in a few minutes and up to six hours in Search.

 

Destination Guide

Finally, we’ve made some changes to the Destination Guide to reflect each listing’s parcel maturity. This will ensure that teens have access to all of the Destination Guide listings they see in the Find window and all Residents will now see Destination Guide entries filtered by maturity level.

 

Let Us Know What You Think

We hope that these changes benefit everyone in Second Life -- inworld businesses and Residents alike. Keep an eye on Search release notes for ongoing updates. Try it out and let us know if you notice the improvements. We look forward to your feedback in comments below!

Note: Edited to fix spacing and headings on new platform. - Sea

Jack.Linden

Today, we are excited to launch the latest version of Viewer 2 -- Viewer 2.3 Beta -- that makes it even easier to connect to friends and relevant experiences in Second Life. We’ve come a long way since we first launched the first Viewer 2 Beta in February. We’ve dramatically increased performance and stability while adding cool new features like Shared Media. We’ve also made many usability improvements, based on your feedback, that make it easier for content creators and developers to build in Second Life.

With the Version 2.3 Beta, Viewer 2 takes another big leap forward. This Beta not only includes many performance enhancements and bug fixes, but it also allows you to more freely express your inworld identity with Display Names, introduces helpful pop-up hints to make it easier to learn Viewer 2, and gives group owners more control of SL Events.

Display Names Arrives on the Main Grid

Display Names, as you know, gives all Residents two names: a unique username and an optional Display Name that you can change on a weekly basis. Display Names gives you the ability to use Unicode characters and multiple words so you can use your current SL Name, your real name, a pseudonym, or a gamer tag. It’s your choice!

Since we originally blogged about Display Names, and subsequently launched the Display Names Project Viewer on the test grid, we’ve made a range of changes to the feature that address the Resident concerns and feedback we received around impersonation and griefing. If you want to learn more, there’s a video below showcasing the enhancements and a full list detailing each change. We have also compiled a Frequently Asked Questions wiki page and two Knowledge Base articles, one on Display Names and another on usernames, complete with video tutorials from Torley that show you how to use this new feature.

Check out this video to see Display Names in action:


 

Because we need to ensure that Display Names operates correctly, we will not enable Display Names for the entire grid immediately. Today, it will work in a few thousand regions; once we see how it performs,  we will dial that up over the next few weeks until the whole grid is enabled. If you want to try using Display Names, then head to Blake Sea and Bay City, as those areas will be enabled first.

Group Owners Can Now Control Event Scheduling

The Viewer 2.3 Beta now allows group owners to control events scheduling on group-owned land. Please read more and see our step-by-step instructions on the SL Events wiki pages.

Viewer Hints Make the Switch to Viewer 2 Easy

We understand that there’s a bit of a learning curve when you make the switch from Viewer 1.23 to Viewer 2. So, we have added helpful pop-up hints for newer users around commonly used features, such as walk and chat. These disappear when the user takes the appropriate action, or dismisses the hint, and then you’ll never see them again.

Download the Viewer 2.3 Beta today, try it out, and Twitter your thoughts using the #slviewer2 hashtag.

Helpful Links

Esbee Linden

Viewer 2 (Version 2.2.0) has been released today as the main Second Life Viewer! This is an important release for us because it marks the first big release using the Snowstorm process. A few months ago, we formed the Snowstorm Team as a dedicated Viewer team who works with the open source community and entirely in the open to make user experience improvements to the Viewer. We've been holding almost all our meetings in public, working with open source developers to integrate their work, sharing our backlog with the community, and releasing daily development Viewers which are available for anyone to download.

Over the last few months, we've improved the velocity of our teams and shortened the release cycle. The Version 2.2.0 release today comes after a three-week beta cycle during which we released Betas weekly and focused on stabilization and crash fixes on the Beta Viewer. Your feedback, crash, and bug reports during our beta cycles are crucial - so thank you to all who participated in that process.

Version 2.2.0 introduces some new features, usability enhancements, and crash fixes. Here are a few highlights:

  • Sidebar Panels can now be undocked and turned into regular floating windows: Simply click on a Sidebar Tab and drag it away from the Sidebar to undock it. You can also click the undock icon in the top right of a panel. To redock a sidebar panel, click the redock icon in the top right of the panel. Once sidebar panels are undocked, they behave like any other floating window in the Viewer.

  • Buttons on the Bottom Bar can now be reordered: In the last Viewer release, we added a few optional buttons to the Bottom Bar. In the 2.2.0 release, you can now reorder buttons on the Bottom Bar, so they’re arranged just the way you like them.

  • Right-click on your avatar and select “Sit Down” to sit anywhere: A great feature that came to the Viewer, by way of Snowglobe, allows you to right-click on yourself and select “Sit Down” from the context menu to make your avatar sit anywhere. To stand back up, just click the “Stand Up” button or right-click on yourself again and select “Stand Up” from the context menu.

  • Parcel Property Icons are now on by default: Parcel property icons indicate what users can, or can’t, do on a particular parcel. The icons can be found in the Location Bar and are now on by default. If you’d like to turn them off, you can do so by right-clicking the Location Bar and unchecking “Show Parcel Properties” from the context menu.

  • Selection Beams are working again: In Viewer 2, there was a bug that hid selection beams. This made it hard for people to see when you were building or the object you were currently editing. This has been corrected!

  • Language translations in local chat (via Google Translate API): Another great feature that came to the Viewer via Snowglobe is local chat translation. Simply click the “Translate chat” check box in the upper left hand corner of the local chat window. Language preferences can be set at the bottom of the Chat tab in the Preference window.

  • Group permissions now work in Snapshots: This corrected a bug in Snapshots which prevented you from sharing a Snapshot texture with a Group.

  • Turn off scripted particles and lights: This feature allows photographers and machinemists to turn off scripted lights by accessing the Debug Setting, “EffectScriptChatParticles” and setting it to FALSE. To turn scripted particles and lights back on, simply go to the Debug Setting window again and set “EffectScriptChatParticles” to TRUE.

  • Builders can more easily align textures across linked prims using planar mapping: This feature allows builders to align textures across faces so that several prims can look like a single prim. Simply select the faces of a set of linked prims, then open the Textures tab of the Build tool, make sure your Mapping setting is set to “Planar”, then click the checkbox labeled “Align planar faces.”

  • View profile inspectors via the Mini Map: When you hover over the little dots (people indicators) on the Mini-Map, you’ll see the familiar “i” icon pop open with a user’s name. Clicking the inspector allows you to view that user’s Mini Profile.

  • Pan the Mini-Map with shift-drag: If you hold down the <SHIFT> key and then click and drag on the Mini-map, you can now pan the map to view other areas.

As I mentioned in the blog post announcing the Version 2.2 beta, many of the features included in this release come directly from Resident contributions - via the Snowstorm process, as well as through past contributions to the Snowglobe project. Thank you to all of you who have contributed code, testing, and commentary. Please keep it up!

The Viewer 2 (Version 2.2.0) release is not a mandatory upgrade at this time, but will be the default download for the Second Life Viewer on the downloads page.

You can view the full release notes for Viewer 2 (Version 2.2.0) here.

Download Viewer 2 (Version 2.2.0)
Win | Mac | Linux

FJ Linden

As  we head into the fourth quarter, I wanted to share some of the progress  that we’ve made since we realigned engineering and created our Platform  team. The team is comprised of simulator, services, and viewer  developers and testers (Platform Development), as well as our  operations, IT, data warehouse and customer support teams (Platform  Operations). The focus of the teams will be to drive “back to basics”  improvements across the grid and evolve our current architecture into a  scalable set of services and APIs. Let’s take a look at our progress  over the last few months, delivering against the goals that Philip set  at the Second Life Community Convention (SLCC), in August.

I’m  happy to report that we have already delivered on a number of those,  and are making good progress toward the rest. A few of them may take  longer than we’d originally anticipated, but we plan on completing all  of them.

Below  you’ll find a list of projects and initiatives we’ve delivered on in  the two months since SLCC, as well as some back-up performance data. A  number of these projects will have a major impact on the Second Life  experience, as we currently know it. Expect to see further posts from  some of the Platform team, focused on how we are improving Second Life  in terms of faster performance, increased stability, and a generally  smoother experience for all.

Reduced Lag
Here’s  an interesting factoid: there are about two million teleports in Second  Life every day. Previous to our recent release of Server 1.42, when an avatar teleported or crossed into a new region, everyone on the  destination sim would experience a “lag” event as the simulator stalled  while processing the incoming avatar. This was often experienced as  “jitter” on the sim, especially evident when many avatars arrived at the  same time, such as for a live event. In the new simulation code, this  slow point has been moved to a separate thread. Our simulator  performance profiling tools show that this lag pain point is almost  entirely gone, greatly improving performance for highly trafficked  regions.

Faster Texture Loading
In August, we made some changes that improve the speed with which textures are loaded in a scene. Our release of HTTP Textures changed the way textures are delivered to, and loaded in, Viewer 2,  resulting in less waiting around for the scene in front of you to come  into focus. This change will also serve as the foundation for a series  of bigger improvements, including the deployment of a new asset system,  which will improve texture loading and object rez times even more. For  the real techies, here’s the back story: Last month, we moved away from  the Isilon storage clusters, as our primary storage for assets. Most  assets are now stored on Amazon’s S3 platform, and we have deployed a  “middle-layer” caching service, which is where most asset calls will be  served from. The time to complete asset “puts” and “gets” (the times  that the viewer requests assets and times those assets are delivered)  has improved significantly. We reduced the average PUT latency by over  60%, from 1.3 seconds to 0.6 seconds, and our GET latency by 20%, from  0.25 seconds to 0.20 seconds. What does this really mean? Well, when you  add up the cumulative time saved in asset latency across the millions  of requests a day, there is a net savings of over 4,000 hours of time  shaved off of asset latency per day! That translates into less load on  the simulator processes and better rez times in Viewer 2.

The next step here is to get the simulator out of this process,  and that will happen in early 2011. At that point, we’ll have extended  our asset services and can begin enabling a content delivery network  (CDN), bringing latency-sensitive assets (objects and textures) closer  to Residents for even faster rez times.

New Chat Service Coming Soon
We’re  finally going to tackle the group chat problem that has been a Resident  complaint for a long time. Group chat can often be confusing, with  “chat lag” causing responses to appear late, or sometimes not at all.  You should start to see real improvements in this early next year. Over  the last few months, we’ve completed a number of development sprints to  prototype an XMPP service and have decided to move forward with an ejabberd deployment.  We’re targeting to have a test deployment of the new group chat service  by the end of this year, and full production deployment in early 2011.

Group Limits Will be Raised to 40
Another  big pain point for Residents is the current limit that lets you be a  member of only 25 groups. We plan to raise this limit to 40 by the end  of this year. In the past, our biggest concern about raising group  limits was potential performance degradation, with additional stress  placed on our central database. After completing some internal analysis,  we now feel comfortable enough to extend group limits up to 40. I’ll  put a qualifier on the group limits increase, however, and state that if  we see a decrease in performance (i.e., more lag), then we may decide  to roll back to the 25 limit again.

Snowstorm Driving Viewer 2 Improvements
At SLCC, we announced Project Snowstorm,  our new open development program for Second Life’s Viewer 2 client  software. Snowstorm is already incorporating Resident input,  particularly around a more customizable user interface, has produced a  number of beta releases, and is deploying daily open-source code  releases. You’ll see the first fruits of their efforts in production  very shortly, with the release of Viewer 2.2.

New Main Grid Deployment Process
It  was pretty clear that if we were going to make velocity improvements,  then we needed to be able to update our server software more than three  to four times per year.  As Lil Linden discussed last month,  we have significantly changed our deploy process and are now deploying  code on a weekly basis to the main grid (Agni). This means that bug  fixes will be deployed faster and new features and functionality don’t  have to pile up and wait for the next major “release train.”  It also  means that if we do encounter problems, then we are able to quickly back  out the changes, without affecting other code that is working properly.  This process also works much better with the agile development  practices that we have formalized internally over the last three months.

Display Names and Mesh Public Betas Available Today
While  we’re focusing our resources for the moment on platform improvements  designed to make Second Life faster, easier to use, and more fun for all  Residents, we are also testing two new features that had been in  development for some time before SLCC. The new Display Names feature is in public beta, and will enable more freedom of expression in Second Life. We have also just launched the public beta of Mesh Import,  which will revolutionize content creation in Second Life. So I  encourage you to download the Project Viewers and share your feedback.

I’ll  share more with you on our “back to basics” technology projects in  coming weeks and months. In the meantime, I’m looking forward to hearing  your thoughts on our recent progress in the comments below. And, as  always, thanks for all of your passion and participation.

Jack.Linden

As previously blogged, I’m very excited to announce that the Beta for Mesh Import is now open to all Residents. Mesh Import allows you to bring models into Second Life from the many popular 3D tools such as Blender or Maya(t), using the COLLADA file format. We see this as an important step to empower content creators to make the inworld experience an even richer and more creative one than it is today. You can read more about Mesh Import here and in my last blog post.

Join the Mesh Import Beta

In order to take part, you will need to first download the Project Viewer for Mesh Import, based on the Viewer 2 code base, available below. This special Mesh viewer will take you to the test grid that we call Aditi. This is a separate grid from the one you normally use for Second Life -- so any changes you make there will not be preserved nor transferred to the main grid. Whilst the Mesh Beta is open to all Residents, it is possible that accounts created within the last few weeks may have trouble logging into the test grid as they won’t have been migrated across yet; so if you have trouble, then here are instructions for updating your account info on Aditi.

Getting Started with Meshes

So that you can get started straight away, we have prepared a few simple walkthroughs for you to follow once you’ve logged in. You can find them on the main Mesh wiki page along with various other pieces of information. They should give you a good idea of how the Mesh Import tool works before you import your own meshes. Remember that we are using the COLLADA file format, so you’ll need to use a tool that can create COLLADA files such as the free, cross-platform Blender. Over the coming weeks, we will continue to add information to the Mesh wiki page, so do check back often.

Please note, that the Second Life Terms of Service applies on the Aditi test grid, as it does on the main grid. That means that you should not import any content for which you do not have the appropriate rights. But, For more information, see our Intellectual Property Policy and if you’re in doubt over a specific object, then it’s probably best not to import it.

What to Expect on the Beta Grid

Although the base technology that drives mesh is in good shape, we still have some way to go before this is production ready. We wanted to get it into your hands sooner, versus later, to get your feedback. You should only take part if you’re comfortable with beta software that may crash or cause content that you’re working on to break in unexpected ways. In addition, the product design piece -- the user interface -- still needs some work so you can expect that the interface for mesh will change and improve over time. The Mesh Project Viewer will auto-update as we ship updated versions, so when there’s a new version, then you’ll be prompted to install it.

Another change, that many of you will notice right away for this beta test, is that we have changed the maximum size of a prim, for both normal prims and mesh prims. The maximum for each dimension is up from 10m to 64m. Our hope is that this change will also be available on the main grid as well once Mesh Import ships. But, we need to assess how these larger prims perform during the beta period to ensure that they will integrate seamlessly into the main grid environment.

Releasing the Viewer Code for Mesh

To give our third party viewer developers as much time as possible to work with the Mesh code base, and so that we can get additional feedback and support from the opensource community, the code base for the Mesh Project Viewer will be released by the end of this week. It will be made available on the Snowstorm wiki page.

Giving Feedback on Mesh Import

If you believe that you’ve found a bug, or have a suggestion for how to improve the feature, then please use our public Jira issue tracker to let us know. Before you file an issue there, please do search to ensure that someone hasn’t already filed the same issue before you. If they have, then by all means add your comments there.

Anticipating a Few of Your Questions

Yes, you have questions. Let me anticipate a few. Feel free to ask more in comments and we’ll answer what we can.

  • Q: How will Mesh objects look if you’re viewing them from an older viewer, such as those based on Viewer 1.23?
  • A: They will look like flat shapes and will not resemble the real mesh objects. See the Mesh wiki page for examples.

 

  • Q: What are the prim costs for importing Meshes?
  • A: Aspects of this are still being worked out, but the latest info is on the Mesh wiki page.

 

  • Q: Will you be charging upload fee for meshes?
  • A: Yes we will charge an upload fee in L$ when mesh launches into production. For the beta test on the test grid, there will be no fees.

 

  • Q: Will you have Mesh office hours?
  • A: We are holding Mesh Import office hours tomorrow, October 14, at 3pm PDT (6pm EDT) at the four corners of Mesh Headquarters on Aditi (SLurl: secondlife://Aditi/secondlife/MeshHQ 1/238/238/26). We will have more office hours in the future, so keep checking the Mesh wiki page as they are scheduled.


Finally, I’d like to thank you all in advance for taking part. We’re looking forward to seeing the amazing mesh creations and hearing your feedback.

Resources:

  • Download the Mesh Import Project Viewer   
  • Read the last blog post on Mesh Import
  • Read more at our Mesh Wiki Page
  • Share your thoughts on the Mesh Forum or the Mesh section of SL Answers
  • Log bugs on the public Jira
  • Twitter your feedback on #slviewer2
  • Please upload pictures of your mesh creations to Flickr with the #slmesh tag. You'll be able to view the resulting collection here.
Sea Linden

Search Update: Feeds

This morning, we had a small release that we believe will make a big impact on the quality and consistancy of Search. We have moved from a crawl system to a feed system. In our previous crawl mode, the GSAs handled discovery and indexing inworld data with its own schedule and rules. With the new feed system, we generate and push content to the GSAs for indexing and have more control over when it is updated.

Please see our release notes!

Expect that ranking will be changing, and will settle by end of day. We have also published an update to the Search FAQ.

Esbee Linden

Today, we’re releasing Viewer 2 (Version 2.2.0 Beta) on our Beta release channel. This is an exciting release for us for two reasons. First, this release marks the first Viewer download since we announced the Snowstorm Team at SLCC in August. The Snowstorm Team has been working in the open to share our design and development process and directly engage with open source developers. Second, this beta release also marks the beginning of a new approach to our release process. Since we kicked off Project Snowstorm, we’ve made the latest Development Viewer available to Residents nightly so they can see our day to day progress and try out new things as soon as they’re in a build.

In our Beta and Release channels, we will make Viewers available to you more frequently. Our plan is to update Betas weekly with new official releases happening every 3-4 weeks. This lets us get new ideas and features into your hands faster and it gives us the ability to react to your feedback more quickly.

This latest beta release of Viewer 2 (Version 2.2.0 Beta), is mostly focused on bug fixes, but also includes some great user interface customization options. Here’s a quick run-down of what you’ll find in this release:

  • Sidebar Tabs can now be undocked and turned into regular floating windows.
  • The buttons on the Bottom Bar can be reordered.
  • Right-click on your avatar and select “Sit Down” to sit anywhere.
  • Parcel property icons (found in the Location Bar) are now on by default.
  • Selection beams are working again.
  • Language translations in local chat (via Google Translate API).
  • Group permissions now work via the Snapshot tool.
  • Turn off scripted particles and lights.
  • Builders can more easily align textures across linked prims using planar mapping.
  • View profile inspectors via the Mini-map.
  • Pan the mini-map with shift-drag.

Many of these features came to the official Viewer through resident contributions, both directly by way of the Snowstorm team, as well as indirectly through past contributions to the Snowglobe project. Thank you to all of you who have contributed code, testing, and commentary. Please keep it up!

To view a full list of changes, see the Release Notes.

Download the Beta Viewer : Windows | Mac | Linux

Please note that, as always on the beta channel, we only support one beta viewer at a time. If you’re using an older Beta Viewer, then you will be asked to upgrade on your next login.

Thank you!

Yoz Linden

As we described a little while ago, we're taking some major steps to improve our bug-tracker, jira.secondlife.com. We're making it faster and easier to use, more revealing of our ongoing engineering work, and - most importantly - better at helping us find and fix bugs.

Today we completed the largest single milestone on our bug-tracking roadmap: the upgrade to JIRA 4.1. This was more than just a simple upgrade: as well as all the improvements that JIRA 4.1 brings, we've moved to new, more powerful hosting infrastructure. We've integrated the same login system used by the rest of secondlife.com. And we've installed the Greenhopper project management plugin so that open projects, such as Snowstorm, can expose far more of their roadmaps and schedules. It'll take a few days for the first projects to make their Greenhopper pages available, but once a project has one, you can get to it through the "Agile" item on the navigation bar.

If you're interested in our bug-tracking process or already contribute to it, please go take a look. We hope you'll find it significantly better than what we had before. However, there are still tweaks to be done and problems to be fixed. If you find anything in the new setup that doesn't work as it should, you can file an issue about the bug-tracker in the bug-tracker, specifically in the WEB project, jira.secondlife.com component. (Using the bug-tracker to report on itself may seem dangerously recursive, but don't worry; we've hardly ever caused any wormholes in the space-time continuum.)

One more thing, for JIRA regulars: As mentioned previously, we're also making changes to some of the workflows with which we categorise and process issues. Some of those changes were made two weeks ago. With this upgrade, we're moving towards another little tweak: renaming the Priority field to Severity and using it to describe the seriousness of effect that an issue has. This is for a couple of reasons: firstly, to reduce edit-war arguments by making the field topic a little more objective. (You can read the descriptions and criteria for the Severity field values on this wiki page.)  Secondly, because Priority is meaningless as an attribute of a single issue; rather, an issue's Priority is its relative position amongst its peers, which is decided during project backlog review. The renaming of the field hasn't happened yet, since it requires tweaking of the underpinnings to be done after dust has settled on the upgrade, but in the meantime we've renamed the values that the field takes.

Once again, we'd like to thank everyone who works with us through the bug-tracker to report and fix problems. With these and future JIRA improvements, we aim to give you a clearer view of how your contributions make Second Life better for everyone.

Edited to add: Our screencast wizard, Torley, has created a couple of video tutorials which show off some new features that make JIRA use considerably quicker. Check out How to search the bug tracker and How to report a bug.

Oz Linden

As part of launching our new more open viewer development process, we changed the open source license for the new viewer code base from the GPL with an exception to allow use with certain other open source licenses (the "FLOSS Exception") to the LGPL.  Some people have been asking about what this change means, and what our intentions are in making it.  In particular, the LGPL requires that the code first be compiled into a library and then may be used in an application.  Since the open source we make available does not directly provide for building this way, some people have speculated that the new license may actually be a barrier to other viewer developers.  I'll try to answer this as clearly as I can.

At Linden Lab, our intent is to enable the development of third party viewers and the improvement of our own viewer through mutual sharing of the requisite common technology.  We think that LGPL is a better license to accomplish that sharing. Even though it was originally written to apply only to libraries, there is significant room for interpretation when using it.

Our interpretation is this: modifying the build procedures provided in the source code to produce a library containing a subset of the licensed code is a minor programming exercise.  The result of linking that library (which may be either a static library or a shared one, and either is allowed) with whatever other code is used to build a viewer is again a minor problem. The results are essentially indistinguishable from those in which the developer just modified the build procedures in place to produce an executable application.  Essentially, the details of the linkage procedures used are a matter of packaging and have no end user effect.  In practical programming terms, a library is just a convenient package - the requirement in the LGPL is like requiring that a grocery store sell a product only if it is first placed into a shopping cart while inside the store.  Essentially a library is just that - a shopping cart full of individually compiled modules, so there's no real difference between using a library and just using the modules separately (one could build a library containing exactly one module, or build an application that had only one module and one library).

It is our intent that developers be able to use the components that we have licensed under the LGPL to produce viewer applications, regardless of the linkage procedures used, so long as they make available any changes to those components as specified in the license.

Q Linden

In the Snowstorm Product Backlog Office Hour Wednesday, I commented that "I think options are bad for users and bad for code quality". If you read that whole transcript, you can probably see that it was interpreted badly. The most extreme variant, reported by someone who was watching in-world chat afterward, held that Linden Lab wanted to remove all options from the Viewer. Let me start by saying that is not the case and never would be, nor is it something that I or anyone at Linden Lab has ever seriously contemplated.

However, I still stand by my original comment -- options are problematic for lots of reasons.

Let's see why:

First, every option has to have a way to control it. In many cases, you have to have multiple ways to control it. From a user interface design point of view, that means creating option interfaces. For the SL Viewer, those are a) the preferences dialog, b) the debug settings, c) checkable menu items, and d) options within dialogs that control other features.

You'd normally like to put options with the things they affect, but screen space is always at a premium and many options are only changed infrequently. So instead, we group options together in a preferences dialog. But there are enough of them that it becomes necessary to create some means of organizing prefs into a hierarchical structure, such as tabs.

But as soon as you do that, you find that you have trouble because not everyone agrees on what the hierarchy should be. What tabs should you have? Where does each option go? When you get too many options for one tab, how should you split them up?

There's no one answer and there's rarely a right answer.

And then, once you have a place to put them, you have to decide what to call each option and what the default is. And if those decisions were easy there wouldn't be a need for an option!

Second, options add complexity to the interface. Every time you add an option, you add a decision for the user to make. In many cases, someone might not even know what the option controls or whether it's important. Too many options might leave someone feeling that the product is too complex to use.

Third, options add complexity to the code. Every option requires code to support all of the branches of the decision tree. If there are multiple options affecting the same feature, all of the combinations must be supported, and tested. Option code is often one of the biggest sources of bugs in a product. The number of options in the Second Life Viewer renderer, which interact not only with each other but with device drivers and different computers, make it literally impossible for us to exhaustively test the renderer. We have to do a probability-based sampling test.

You could say that it's our problem to deal with that complexity, and you'd be right, but every additional bit of complexity slows down development and testing and makes it harder for us to deliver meaningful functionality.

Fourth, options that are 50-50 probably do need to exist. Options that are 90-10 are addressing an advanced (and possibly important) use case. Having them in the preferences interface promotes them to a primacy they probably don't deserve.

Finally, adding options has a snowball effect. Having a small number of options is good, but having too many options is definitely bad for the product and for the customers trying to use it. Sure, advanced uses need advanced features, but we don't have to make everyone confront all of the complexity.

Add all of this up, and I think it becomes clearer why I said I didn't like options and would prefer to find alternatives.

So why have options at all, then? Because different people legitimately have different needs. Advanced users vs novices, or landowners vs shoppers. We get it. But it's also often an indication of a design that needs work.

There are alternatives to putting more checkboxes on the preferences screen:

a) Allow entire user interfaces to be "plugged in". This requires a major architectural change to the software. Although we've talked about it, it's going to be a while yet before we get there.
b) Allow options to be controlled close to the point of use. As I said above, this can clutter the interface but can be effective.
c) Make an interface that covers all use cases. This is the hardest of all, requiring real understanding and design, but is usually the right answer.

In short, I often consider adding a preference to the prefs panel to be the wrong answer to a real question. It's not that we don't consider different use cases, it's that we're trying to cover them in a better way.

So this has been my attempt to explain the thinking behind a statement like "options bad". I hope it's helped -- has it? Tell me in the comments.

×
×
  • Create New...