👩‍💻 Scripting changes coming soon

News from the Second Life Team – January 2024 Edition

 

Happy New Year! We’re off to a great start to the year at the Lab and happy to share more Second Life updates with you. You’ll find news on scripting additions, PBR Materials, Project Viewers, and an update on the Second Life Mobile Private Alpha program. Enjoy!

A handful of new, useful scripting features will be getting released in the coming weeks:

llComputeHash

LSL’s old llMD5 function has a significant flaw: it always adds a “:” character to the input string. This makes it useless for most hashing purposes. Enter: llComputeHash! This new function can generate a hash of an input string using any of the following hashing algorithms: md5, md5_sha1, sha1, sha224, sha256, sha384, and sha512.

 
default {
touch_start(integer count) {
string message = your-test-message-here;
 
list algorithms = [md5, md5_sha1, sha1, sha224, sha256, sha384, sha512];
 
integer algorithmCount = llGetListLength(algorithms);
llOwnerSay(message=’ + message + );
 
integer i = 0;
for (i = 0; i < algorithmCount; ++i) {
string algorithm = llList2String(algorithms, i);
string hash = llComputeHash(message, algorithm);
llOwnerSay(algorithm + = + hash);
}
}

llGetNotecardLineSync

You know how it takes an incredible amount of time for your furniture to boot up after resetting its scripts? Argh! Yeah, it’s annoying, and likely due to your sofa/throne/maypole reading configuration from one or more notecards in its inventory.

The new llGetNotecardLineSync function makes loading data from notecards in object inventory much faster by providing a synchronous access method with the caveat that the notecard must be in the region’s asset cache.

 
string NOTECARD_NAME = notecard;
key gLineCountId;
 
default {
state_entry() {
// Request number of notecard lines.
gLineCountId = llGetNumberOfNotecardLines(NOTECARD_NAME);
}
 
dataserver(key id, string data) {
if (id != gLineCountId) { return; }
 
integer count = (integer)data;
integer i;
for (i = 0; i < count; ++i) {
string line = llGetNotecardLineSync(NOTECARD_NAME, i);
if (line == EOF) {
llOwnerSay(—EOF—);
}
else if (line == NAK) {
llOwnerSay(—NAK—);
}
else {
llOwnerSay(line);
}
}
}

BTW, if you’re interested in knowing more about the scripts that power a huge amount of Second Life’s furniture, vehicles and more check out the open source AVsitter project. 🪑

llGetCameraAspect, llGetCameraFOV, and llWorldPosToHUD

Several functions have been added to help content creators position HUDs:

  • llGetCameraAspect – Returns the aspect ratio of the wearer’s screen as a float (width/height)
  • llGetCameraFOV – Returns a float value for the current camera’s field of view
  • llWorldPosToHUD – Returns HUD position of an in-world object
 
integer gHasPerms = FALSE;
 
function printCameraInfo() {
float aspect = llGetCameraAspect();
float fov = llGetCameraFOV();
llOwnerSay(aspect = + (string)aspect + FOV = + (string)fov);
}
 
default {
on_rez(integer a) {
llResetScript();
}
 
state_entry() {
llRequestPermissions(llGetOwner(), PERMISSION_TRACK_CAMERA);
}
 
run_time_permissions(integer perms) {
if (perms & PERMISSION_TRACK_CAMERA) {
gHasPerms = TRUE;
printCameraInfo();
}
}
 
touch_start(integer count)
{
if (gHasPerms) {
printCameraInfo();
} else {
llRequestPermissions(llGetOwner(), PERMISSION_TRACK_CAMERA);
}
}

Scripting roadmap

Status of these upcoming changes and more are visible on Second Life’s new public road visible at feedback.secondlife.com. If you have ideas or feedback on the scripting system check out the Scripting Features and Scripting Bugs boards.

🧪 Project Viewers

😀 Emoji

This viewer is also in RC and is based on a contribution by Kitty Barnett, and adds the ability to insert emojis in text chat.

Maintenance W

This Viewer brings many fixes (see list here), including a fix to a long standing issue with voice failing after quickly restarting your viewer

Maintenance X

This Viewer brings many usability improvements, including:

  • Saving you some clicks by allowing the deletion of folders containing worn items. 
  • In case you only wish to detach, Alt+Shift+R will now detach selected attachments so you can remove those less fashionable items at rapid speed.
  • The time format has been changed to show the more superior SLT instead of PDT.
  • The group join fee will be shown when leaving a group so you can be extra sure you want to leave it.
  • Shift+Alt+N will now open the Notifications floater 
  • Group notices can now be accessed directly from the People floaters Groups tab. Hover that mouse cursor over the group name for access.
  • Group notices will now default as being sorted by date with the newest first 

Maintenance Y

With this Viewer, you can now preview your outfit photos when hovering your cursor over outfits in the Outfit floater. You can also now remove locations from history via the context menu located in the Places floaters Visited tab.

image4.png

See the list of additional fixes here.

Default Viewer

🎨 GLTF PBR Materials

At the end of November, we announced in this blog post that PBR became available grid wide! The PBR Materials project brings increased realism and enables bringing GLTF content into Second Life with expected results. Now you can create scenes with real reflections which mimic how our eyes have learned to identify that a surface is metal, plastic, or some other material. Whether you create objects in Second Life or simply enjoy seeing and wearing them, PBR Materials will provide a big step up in the appearance of the Second Life world.

Individually faceted disco ball reflections
image1.png

As of January 8th, 2024, the PBR Materials Maintenance 1 viewer became the default viewer for Second Life. See Release Notes here. There are 17 new Materials available in the Library so you can start building with PBR today!

📱 Mobile Update

On December 12th, we announced our Mobile Private Alpha, bringing the richness of the Second Life virtual world to your Android or iOS mobile device. Qualifying Premium Plus members can apply now for the Private Alpha. If you are Premium Plus, you can learn more at this link.

Check out this video if you haven’t already!

We’ve had an incredible amount of interest, so if you’ve applied but haven’t been added yet, you’re still on our list. Future testers will be added and notified as the Private Alpha continues to expand. Thanks again for your patience as we process the ongoing demand and we look forward to your participation!

Have A Great Weekend From All Of Us At Zoha Islands/Fruit Islands

Moving From JIRA

Moving From Jira, Pt. 1


image4.png

This is the first installment of a series of posts on moving Second Life issues from Jira to a new community engagement portal, feedback.secondlife.com as well as Github Issues.

jira.secondlife.com is Second Life’s venerable bug reporting repository, development tracker and feature request system. It is used by thousands of users and the entire SL development team to envision, fix and build the future of Second Life.

Unfortunately, Jira Server, the software and license agreement we use to host Second Life’s jira.secondlife.com site, is being discontinued and its official replacement cannot handle the number of users (over 300,000) that Second Life needs. Long story short: we need to move off of Jira before support ends in early February, 2024.

As part of this migration effort, we’re excited to announce that we are opening up a new community feedback portal for early preview: feedback.secondlife.com. This site will host feature requests, bug reports and ultimately replace the public BUG project on jira.secondlife.com.

Support issues should still be reported to support.secondlife.com. We will keep using Freshdesk for all personal and content-sensitive tickets.

Where are my issues going?!

Your issues will be preserved and will not be deleted. Second Life has a 20 year history, and Jira represents one of its best sources for documentation. Jira will remain in operation until we migrate all issues to a new home on Github. We will share more information about working with the issue archive in a future blog post.

Feedback Portal

Second Life has a long history of collaboration with its residents. Rather than be bummed out by needing to leave Jira, we wanted to take this opportunity to select a community site that offers a better experience to both users and staff.

You can check out the new engagement portal at feedback.secondlife.com. This new site uses canny.io, a platform designed for receiving and responding to community feedback. We believe it will be a demonstrably better experience for residents due to features such as:

A public roadmap

image2.png

We will be providing a public roadmap of user-suggested features which have been accepted and will be implemented. This will provide greater transparency into the future of Second Life and drive accountability for us, so that we deliver what we say we would. 😜

Multiple boards

image4.png

The new feedback portal provides boards for different areas of Second Life: general feature requests and bugs, website bugs and features, scripting, etc. This will allow users to easily read up on bugs and feature requests pertaining to their area of interest, and allows triagers on our side to more easily figure out who should review new information.

Board features

  • Markdown – Text can be formatted using a simplified version of Markdown
  • Issue merging – Staff can merge issues instead of marking them as duplicate
  • Trending Posts – Boards may be sorted by trending posts, which combines freshness and popularity

Better Process

We have come to realize that the effects of some of our Jira workflows were, intentionally or otherwise, rather adversarial to engagement (read: unfriendly.) We are fixing this by acknowledging the following problems and resolving them with different behavior on the new feedback site:

Conversations remain open
One of the most detrimental features of our public Jira workflow was how it locked conversations (comments, etc.) after tickets were marked as accepted. This is not the default behavior in the new portal: comments will be allowed throughout the entire lifecycle of the request!

Know when your idea ships
The “clone issue” process on Jira resulted in a large portion of user-submitted issues never being marked as completed when their respective issues were shipped. This will be much less of an issue on feedback.secondlife.com because issues will be directly tied to their internal development tickets and automatically closed when the change ships.

Voting is Encouraged!
Vote to your heart’s content. We want to hear from you which issues are most important.

Behind the Scenes

Part of the rationale for moving to Canny, the software behind feedback.secondlife.com, as opposed to alternative issue tracking solutions is that it is a very focused product that is tailor made for responding to user feedback and prioritizing ideas. In addition, the platform fit the bill by providing the following necessary requirements:

  • Single sign-on (SSO) – Users can log in using their Second Life account
  • Github Integration – Posts can be linked to Github Issues, the platform we are adopting for software development, and automatically marked as completed when the Github issue is finished.
  • Triage Tools – Canny provides a fast, unified view for triaging issues, prioritizing work, and getting it onto a roadmap.

image1.png

 

Public issues are not the only thing moving off of Jira –internal tickets will be migrating to Github Issues. Canny provides easy ways to create and link issues on Github, providing a better workflow than the previous “Clone” system we used on Jira.

image5.png

 

Open Source Collaboration

On the topic of Github, we will be making it easier for open source contributors to engage with Second Life project maintainers and our OSS projects through Github and Github Issues. Canny provides convenient integration with Github Issues, and we will be exploring ways of opening up Second Life development to open source contributors by more directly working in the open.

😖 Differences from Jira

Not everything is perfect. Both staff and residents have developed a lot of well established mental wiring, process and infrastructure around Jira. Canny is also not a Jira replacement: it’s a community engagement tool which may require changes to behavior:

  • Limited attachment support – Canny only supports image attachments. All other media types will need to be linked to.
  • No private posts – If your report contains sensitive information then please redact/censor private information. If this is not possible, because it is material to the issue being filed, then please file a support ticket if it is personal in nature or security report if it represents a vulnerability.

Timeline and migration details

Jira access will end in early February. In the time leading up to that date we will be performing backups, migrating existing issues to their new home on Github, and allowing residents to use and provide feedback on the new engagement portal.

image3.png

Details about the issue migration process, such as how to find Jira issues post jira.secondlife.com shutdown will be talked about in a future post. Until then, we are excited to see new feature requests and reports over at feedback.secondlife.com.

Conclusion

Making a significant change like this is no small task. Staff and residents alike have grown deeply familiar with jira.secondlife.com through countless hours spent using the site. We hope you will have patience as we migrate data, build documentation, develop new muscle memory and smooth out wrinkles in tools and processes. These updates, along with changes like moving our engineering organization to Github and Github Actions, are part of a larger initiative to modernize Second Life development. The future is exciting, and we hope you can bear with us as we drive down the path to get there.

Have A Great Rest Of Your Week And Weekend From All Of Us At Zoha Islands/Fruit Islands

Help Firestorm Save ‘Restore To Last Position’

Firestorm needs your help!

Here is a copy of the post on Firestorm’s blog regarding helping them convince Linden Lab that blocking the “Restore to Last Position” functionality is not a good idea, and that does more good than harm.

“In a recent meeting, LL mentioned that they are considering blocking the “Restore to Last Position” functionality at the server level. This is because it results in permanent content loss if it fails when using it on no copy items. Since version 4.6.7 Firestorm prevents the feature from being used on no copy items as a simple measure to prevent loss, but the underlying issue here is that LL doesn’t understand the feature’s value to residents who use or rely on it.

“Kicking, screaming and calling foul will not save this feature, nor will criticizing LL or anyone else for not understanding the feature. In fact actions like that will speed up its demise. What WILL save it however is a well structured set of use cases that demonstrate clearly and concisely how useful and valuable this feature is to you.

“If you use this feature and would like to see it stick around please leave a comment on this post detailing how you use it and why it is valuable to you. In a week’s time we will extract the best use cases and formulate an email to LL that will demonstrate both the feature’s value and its usefulness.

“Please be civil in your comments and with each other!”

You can go the blog post and leave your comments with your good experience with “Restore to Last Position” and they will select the best cases to take to LL to try and save that feature. Click on the link here: Restore To Last Position Needs You!

I remain respectfully yours,
~ Suzanne Piers, ZI Social Media

Firestorm’s Tool Tip: Clean Install the Easy Way

Here’s Firestorm’s Tool Tip Tuesday video. We all know how frustrating it is when a new version of Firestorm comes out, because as exciting as the new features are, we all dread doing the dreaded “clean reinstall.” Even if you follow the rather intimidating instructions on the Firestorm Wiki, we all worry about losing chat logs, preference settings, etc. It is probably my least favorite thing to do.

In this video, Jessica Lyon breaks down a clean install into simple, easy to follow steps. Enjoy!

Here is the link to the Firestorm Website: Firestorm Viewer
I remain respectfully yours,
~ Suzanne Piers, ZI Social Media

Firestorm Viewer Contact Sets

Did you know you can sort, list, categorize, organize and colorize your friend list, and even non-friend lists? This is especially helpful for business and region owners, group moderators, people with big friend lists, or just folks with lots of friends! The folks at Firestorm posted this video for their Tool Tip Tuesday this week. The video covers the basics but if you would like to learn more, Firestorm offers a contact sets class! Click on this link for more information on their in-world classes: Firestorm Viewer Classes

I remain respectfully yours,
~ Suzanne Piers, ZI Social Media

Linden Lab’s Improvements to Second Life

LL Logo
Linden Lab announced today in their latest blog post that they are on the cusp of launching improvements to Second Life, and detailed some of the new things you’ll soon be able to enjoy. These changes include improving the way your avatar interacts with surfaces inworld, giving you more tools for managing your preferences for notifications and graphics settings, as well as improvements to make life easier for mesh creators and merchants. They offer links to download Project Viewers that will let you get an early look at some of these improvements.

Hover Height
As we all have experienced, sometimes our avatar doesn’t interact quite right in a virtual environment. Sometimes your body parts stick through furniture, your feet hover over or sink into the ground. Fixing this can be computationally very expensive, so Linden Lab has been working hard to find a workable solution, and the result is the Project HoverHeight Viewer. (Anything in orange is a clickable link). Between the introduction of this viewer plus some server changes, this new viewer will improve things in two ways: the order in which adjustments are made to your vertical position has been made more stable, and even if it’s not perfect, it will at least be predictable. Linden Lab also introduces a new final adjustment that is directly under your control: a new avatar right-click selection allows you to tweak your vertical position. Linden Lab states “This final adjustment is shared with everyone around you so that they too will see you correctly, and is saved locally by your viewer so that it persists between sessions. This new feature was inspired by a proposal from the Firestorm viewer team, and they’ve been helping with testing it.”

Notifications
One of the ongoing complaints and suggestions received through the JIRA by residents to Linden Lab was the need to have better ways to control and organize the many notices they receive: inventory offers, group notices, event invites, and money transactions all result in the same kind of pop-ups and notice chiclets and are all listed together. The blog states: “An upcoming Viewer release will add a new floater that provides separate displays for different notice types, and the ability to sort them. You can prioritize and organize what’s important to you.”

Mesh Import
Important to content creators, Linden Lab is upgrading the support for mesh import. An upcoming Viewer update will allow uploading models that have more than eight unique faces, and improved association of physics representations and LODs by name.

Viewer Managed Marketplace
Merchants will be delighted to hear that you’ll be able to manage the inventory in your Second Life Marketplace store directly from the viewer. Items no longer need to be loaded into the Merchant Outbox or a Magic Box; instead you’ll designate items to be sold directly from your personal inventory.

Graphics Settings
Linden Lab is introducing an open source contribution that allows you to save named sets of graphics settings, with a drop-down menu that allows you to quickly change between them. For instance, when you attend a performance in your favorite club, you can save settings optimized for rich display of your companions and environment, and you can save a set for exploring that trades off longer draw distances and better lighting effects for simpler rendering of details – whatever you think is important.

You can click on the following link for the blog post in its entirety: Check Out The Latest Improvements to Second Life.

Hopefully all of these changes and improvements will make for a better Second Life experience. It shows that Linden Lab is still invested in the technology for Second Life. And it is encouraging to know that the folks at Firestorm are continuing to work hand in hand with Linden Lab, which should result in the same improvements to the Firestorm Viewer, as well.

I remain respectfully yours,
~ Suzanne Piers, ZI Social Media