👩‍💻 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

Linden Lab Announces 2D Side Scrolling Project Viewer

April 1, 2015: Second Life’s Official Blog posted about a new Project Viewer! They are introducing 2DSS Mode — or 2D Side Scrolling Mode. Think Mario Brothers in Second Life.

Screenshot of 2DSS Viewer

Screenshot of 2DSS Viewer


Linden Lab states:

“There’s been a lot of excitement recently around our integration of the Oculus Rift with Second Life. The addition of HMD (head-mounted display) mode offers a new level of immersion for 3D experiences, but what about people who want less immersion?

“Today, we’re happy to announce a new way to explore the wide variety of community-created experiences in Second Life, without the complexity of the third dimension: 2D side-scrolling (2DSS) mode. Without the third dimension, you can enjoy Second Life just like your favorite 8-bit games from the past!

“Note: while this new mode is compatible with HMD mode, we do not recommend trying both simultaneously. If you were to turn your head 90 degrees while doing so, the world may simply disappear from view – causing a rather jarring experience that might make you feel a bit foolish.

“The new 2DSS mode is available as of April 1, 2015, and you can now download the Project Viewer to start enjoying some retro-future fun in Second Life!”

Download the Project Viewer here: 2DSS Project Viewer

Hurry! This viewer will not be available after April 1st!

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

Project Viewer: Group Bans

Editor’s Note: Thank you to the blog “Living in a Modemworld” which provided the basis for this post.

One of the peskiest problems that businesses, clubs and other public groups have are griefers and other pests who join groups, spam the group and then leave or are kicked out only to return over and over again. Or a disgruntled former employee or customer decides to use the group as a venue for airing their grievances. Either way, having a “click here to join” open group means that you are also opening yourself up to problems.

So how to solve this? Other than simply chasing out each person as they cause trouble, and watching them come back over and over again, or they create alts to wreck havoc and spam your group, there has not been a viable solution until now.

As of June 18, 2014, Linden Labs has released a project viewer that allows for group ban. This viewer was actually released on June 17th, but wasn’t active on all servers until June 18th. This viewer (version 3.7.8.290887), as its name suggests, allows group owners (and those they nominate by role) to ban individuals from their group.

These group bans are enforced on the server side, similar to the way that parcel and estate bans work, and provides a viable way to remove pests from a group and keep them from re-joining. Eventually this will be part of the release viewer, but this project viewer allows users to get a taste of the features of this viewer. This will make SL group chat a lot more peaceful for most residents.

In the blog Living in a Modemworld, the author noted the following:

• By default, only a group’s Owners role has the Manage Ban List ability for banning other avatars from a group /removing avatars from the ban list

• The ability can be granted to other roles, if required

• Roles which are granted this ability are also granted the Eject Members from this Group and Remove Members from Roles abilities

• The ban list for a group can store a maximum of 500 entries. When this limit is reached, some avatars must be removed before others can be added

• Group Owners cannot be banned from a group (just as they cannot be ejected)

• When a group member is banned from the group, they are automatically ejected and will receive the usual ejection notification, but will not receive any notice that they have also been banned

• A user who is banned from a group cannot join it either directly or through an invitation

• If a group member is banned while using group chat, they may be able to continue using it until they close the group chat window (this problem also exists when ejecting someone from a group when they have the group chat window open)

• Any attempt to invite one or more banned avatars into a group, whether individually or as a part of a list, will generate the message: “Some residents have not been sent an invite due to being banned from the group.”

Obviously, it is not without it’s limitations, as if the avatar causing a problem has group chat open when they are banned, they can continue to continue to post even after being banned, and if someone is serious about spamming your group, or airing their grievances, if they leave the group chat window open indefinitely and don’t log out, they would be able to continue to cause a problem. However, hopefully eventually they will tire of their silly behavior and move on.

In the Release Notes from the project viewer wiki, it answers some important questions for group owners:

How do I ban somebody from my group?

1. Login with a viewer that supports group ban
2. Ensure that you have “Manage ban list” ability
• This information is found in the group info floater, under ‘Roles’ -> ‘ROLES’ -> ‘Allowed Abilities’ panel -> ‘Group Ban’ section
3. To ban via the group member list,
• Open the group info floater’
• Open ‘Roles’ -> ‘MEMBERS’, and select the group members you wish to ban
• Hit the ‘Ban Member(s)’ button
• The selected group members will be ejected from the group and added to the ban list
4. To ban any user from your group (a member or not)
• Open the group info floater
• Open ‘Roles’ -> ‘BANNNED AGENTS’
• Hit the ‘Ban Resident(s)’ button
• Using the people picker floater, find the avatars you wish to ban
• Hit the ‘Ban Residents’ button
• The avatars will be added to the ban list. If they were group members, they will also be ejected from the group.

Conversely, the wiki discusses how to unban someone:

How do I unban somebody from my group?

1. Login with a viewer that supports group ban
2. Ensure that you have “Manage ban list” ability
3. Open the group info floater
4. Open ‘Roles’ -> ‘BANNNED AGENTS’
5. Select the banned agents you wish to unbar
6. Hit the ‘Remove Ban(s)’ button

This group ban viewer is compatible with Windows, iOS and Linux.

Please visit the Modemworld blog; Inara Pey has some awesome pics and more information.

This viewer is a huge step forward in giving group owners a tool for removing and permanently dealing with disruptive avatars.

Related links:

Living in a Modemworld
Release Notes/Second Life Project Group Ban

I remain respectfully yours,
~ Suzanne Piers, ZoHa Islands Social Media Manager