Notifications Redesign

From Second Life Wiki

Jump to: navigation, search

< Viewer Roadmap, User Interface Roadmap

Contents

Overview

Notifications and Alerts are the boxes that pop up on external events, from the temporary ones in the lower right corner to the things that warn you when someone wants to take money from you. They have several problems that need a redesign and reimplementation.

Priority

This project is high priority for two reasons: 1. The existing code is unstable and difficult to maintain 2. Many of our current bugs are related to notifications in one way or the other; improving the system will fix some and make fixing others significantly easier.

Objectives

This is a project to redesign the way that notifications and alerts work in the Second Life client. Issues being addressed include:

  • Code shortcomings:
    • Group notifications (LLGroupNotify) and Notifications (LLNotify) are two separate code paths for very similar behavior
      • there's some awkward code to make them more similar
      • they fight with each other for priority display, and in certain weird instances could cause viewer to crash
      • Alerts can't take server-side parameters and still be translatable
  • UI shortcomings:
    • The way alerts and notifications stack up is highly confusing, especially for new residents
    • Too many different places on screen to look for messages
    • They could use a new graphical appearance, particularly to be compatible with Dazzle
    • Too much detail up front for new users -- would be nice to allow summary / detail levels
    • Reduce the potential for griefing through scripted object notifications
    • No differentiation between system (Linden)-created notifications and resident created/initiated notifications
    • The discoverability is low on how to scroll through Active Notifications; or dismiss Passive ones early (Did you know you can?)
  • Functionality shortcomings:
    • No history- so if a notification is missed it can not be recovered
      • If the client is exited or crashes with active notifications they are lost along with attached inventory
      • No way to get additional information from a passive notification
      • No hyperlinks in notifications

Tasks

Phase 1

  • Redesign the API for notifications and alerts.
    • Unify the call structure so that all notifications and alerts go through a single unified call.
      • This first pass will simply unify the call structure and the input XML files so that all notifications go through this path.
      • There will be essentially no user-visible changes from that change.

Phase 2

  • Unify the rendering process so as to eliminate the old LLNotifyBox, LLGroupNotifyBox, and LLAlertDialog classes
  • Change the rendering so that we'll only render the "top" notification(s) in the queue, rather than rendering them all
    • This will also give us an improved ability to scroll back and forth through the list of pending notifications.
    • There will be some user-visible changes at this point to bring out some new features in the API and make the existing notifications fit with the evolving look and feel of the UI, but these visible changes will be relatively minor and noncontroversial.

Phase 3

  • Design new user interaction model for Notifications, improving the usability of different types, priority, temporal nature
  • A full revisit of the rendering code for notifications


Categories of Current Notifications

  • Notifications at Login
    • Terms of Service has changed
    • Your Caps key is on
  • System Notifications
    • a) Critical Messages
    • b) Client Help/"First Use" blue dialogs
    • c) System Messages Requiring an interaction/response to proceed
    • d) Script Driven Messages
      • llDialog
      • llLoadURL
      • llGiveInventory
      • llRequestPermissions
    • e) Script Errors
  • Other Notifications
    • a) Alerts/Confirmations - generally the items in notify.xml and alerts.xml
    • b) Any alerts considered more "Important" or "Cautionary"
    • c) Teleport Offer
    • d) Friend is Online/Friend is Offline
    • e) Status Messages, e.g...
      • "You Paid L$..."
      • "Someone Paid You L$..."
      • Action Failed / Cancelled
      • Action Succeeded / Completed
    • f) Upload Status
    • g) Region crossings
    • h) Parcel-based states (icons in the menu bar)
      • No-Build
      • No-Fly
      • No-Script
      • No-Voice
      • No-Push
      • Unsafe
    • i) Avatar-based states (buttons appearing in lower left)
      • Stand Up
      • Release Keys
      • "IM Received"
  • Group Communication
    • a) Group Messages which can include object attachments, scrollbars, render an insignia
    • b) Group Voting
  • A Person Has Offered You...
    • a) Inventory Transfer
    • b) Responses to an Offer
      • Friendship Offer Accepted / Declined
      • Inventory Offer Accepted / Declined
      • Calling Card Accepted / Declined
  • Help Windows (explanation dialog when clicking '?' help)
Personal tools