Open Bug 1901797 Opened 5 months ago Updated 4 hours ago

Make !activeNotifications the default in Messaging System

Categories

(Firefox :: Messaging System, defect, P1)

defect
Points:
2

Tracking

()

Iteration:
134.2 - Nov 11 - Nov 22

People

(Reporter: rfambro, Assigned: jprickett)

References

(Blocks 2 open bugs)

Details

(Whiteboard: [omc])

Attachments

(2 files)

Attached image image (27).png
No description provided.

We've recently observed a few instances where in-product messages are clashing/overlapping (see attached screenshots). This results in a major user experience concern.

We think that most of these scenarios could be resolved if we make !activeNotifications the default in Messaging System. This deserves further discussion as there might be some nuances to this that haven't yet been fully considered (eg might want to allow background notifications at the same time as about:welcome for (eg) set to default).

Whiteboard: [omc]

I think (but haven't verified) that three of the four messages in the examples are not FxMS messages, which is part of the problem.

We think that most of these scenarios could be resolved

Yes, but mostly (only?) for messages that are part of the messaging system, so we need to make sure that as we talk about this, we're setting expectations correctly.

A big part of this enhancement is that once we do this, if you decide to build your new message in FxMS, by default, it won't conflict with any other message in FxMS. This accelerates compounding FxMS user value by getting more new messages built into the system from the start.

Iteration: --- → 129.1 - Jun 10 - Jun 21
Priority: -- → P1
Iteration: 129.1 - Jun 10 - Jun 21 → 129.2 - Jun 24 - Jul 5

The severity field is not set for this bug.
:mviar, could you have a look please?

For more information, please visit BugBot documentation.

Flags: needinfo?(mviar)
Severity: -- → S3
Flags: needinfo?(mviar)

How do we make it so that, if you forget to specify !activeNotifications in your message, and there is an active notification, the message will not show? If my targeting is just source == 'newtab', and FxMS treats that expression as if it includes && !activeNotifications, then how do I make a message do the opposite, i.e. make it allow collisions? We could make it so FxMS leaves the expression alone if it already contains the string activeNotifications. But I can't add the opposite (activeNotifications) to my targeting expression, since that doesn't mean "ignore active notifications", it means "only show if there are active notifications." I could put activeNotifications || !activeNotifications in the targeting to deal with that issue, but that's really awkward and a likely footgun.

This is fundamentally a difficult thing to handle in targeting, because a targeting expression is a series of conditions for when not to show the message, not for when to show the message.

If instead of targeting this was just a new property like this:

allow_collisions?: boolean

Then you'd be able to specify true to override the default behavior, or just leave it undefined to disallow collisions. And of course you'd need to add some code in ASRouterTargeting to check message.allow_collisions || !this.activeNotifications. This is no harder than any other approach to implementation we could take, no more lines of code at least and cuts past all the confusion from the first paragraph.

The main problem I can see is that we'd effectively be changing EVERY message that already exists. The only way to know this won't break something is to consider everything. The work here isn't so much writing code, but checking at least every type of message to see if it's supposed to be able to show while the urlbar or an infobar is showing. For the bigger ones, it's obvious. But what about ToastNotification? Moments Pages? Private Browsing Newtab? I think this could also be problematic for non-doorhanger CFRs. Probably others I'm not thinking of. Thankfully it won't create future work for us, since we'll see during development that a message isn't showing when we think it's supposed to, and we'll catch that we need to add allow_collisions to that message (or specify a rule for specific templates).

Iteration: 129.2 - Jun 24 - Jul 5 → 130.1 - Jul 8 - Jul 19
Iteration: 130.1 - Jul 8 - Jul 19 → 130.2 - Jul 22 - Aug 2
Points: --- → 3
Iteration: 130.2 - Jul 22 - Aug 2 → 131.1 - Aug 5 - Aug 16
Iteration: 131.1 - Aug 5 - Aug 16 → 131.2 - Aug 19 - Aug 30
See Also: → 1913431
Iteration: 131.2 - Aug 19 - Aug 30 → 132.1 - Sep 2 - Sep 13
Iteration: 132.1 - Sep 2 - Sep 13 → 132.2 - Sep 16 - Sep 27
Iteration: 132.2 - Sep 16 - Sep 27 → ---
Assignee: nobody → jprickett
Iteration: --- → 133.2 - Oct 14 - Oct 25
Iteration: 133.2 - Oct 14 - Oct 25 → 134.1 - Oct 28 - Nov 8
Points: 3 → 2
Iteration: 134.1 - Oct 28 - Nov 8 → 134.2 - Nov 11 - Nov 22
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: