Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Threads: Launch Plan #19270

Closed
Tracked by #9
daniellekirkwood opened this issue Oct 4, 2021 · 5 comments · Fixed by matrix-org/matrix-react-sdk#9736
Closed
Tracked by #9

Threads: Launch Plan #19270

daniellekirkwood opened this issue Oct 4, 2021 · 5 comments · Fixed by matrix-org/matrix-react-sdk#9736
Assignees
Labels
A-Threads T-Task Tasks for the team like planning X-Needs-Product More input needed from the Product team Z-Labs

Comments

@daniellekirkwood
Copy link
Contributor

daniellekirkwood commented Oct 4, 2021

This issue considers the launch plan for Threads.

  • We intend to launch Threads with m.threads implemented
  • We will launch on different platforms at different times
    • All clients should be Threads aware before the first launch (web)
  • 3 rounds of testing will take place on each platform before launch: Smoke testing, User testing, & Acceptance testing

Until we're using m.threads we will not launch or default Threads to 'on' in any environment. More info in comments


Rollout plan for Threads

Beta is opt-in for the first release to stable environments.
Why? We are confident in our solution but given the known limitations of our implementation at this time we want to continue to allow users to chose to use Threads. The biggest piece of this is the outstanding work on Notifications.

Step 1: Opt-in Beta

  • On Mobile, Threads remains available in Labs as they are today
  • On Web, we want to promote Threads out of Labs but disabled by default

Step 2: Opt-out Beta

  • Once we have read receipts, notifications, sort ordering of the thread list, and confidence in the stability and reliability of threads we will move the Beta to opt-out (Fast follow issue complete)

Step 3: Out of Beta

  • Polish and stability of Threads improved we’ll remove the Beta/Labs flags and promote Threads
@daniellekirkwood daniellekirkwood added T-Task Tasks for the team like planning X-Needs-Product More input needed from the Product team A-Threads labels Oct 4, 2021
@daniellekirkwood daniellekirkwood self-assigned this Oct 4, 2021
@germain-gg
Copy link
Contributor

Having a room level setting to toggle threads brings some a few questions from the tech point of view.

Historically all events were received by the SyncApi and dispatched to a room's timeline. Threads slightly changes that assumption and now create one timeline per thread and attaches it to the room. Which means that upon changing that room setting, all room members that currently have Element Web running, will need to re-parse all their event history for that room so that we can ensure that each event ends up being on the correct timeline.

When toggle the threads lab flag we are using the ReloadOnChangeController. It was first introduced by Spaces, as they needed to parse the rooms differently in the SyncApi

I can see two approaches to solve this problem

  1. We need to put in some effort to reliably reparse the history of a room without refreshing the application.
  2. We display a toast, prompting room members to restart their application. Failing to do so means that they will keep seeing threads as replies until they do restart Element

The former can easily become a mess and I would be worried forgetting to remove an event listener which could cause some oddities after the flip of that switch. Whereas the latter could become annoying if a lot of rooms change that setting in a quick succession

@clokep
Copy link

clokep commented Oct 4, 2021

From a bit of discussion with @daniellekirkwood it seems that the hope of this is that a room admin is able to enable/disable threads for all users in a room.

I think the obvious way to do this is with some sort of state event, but I'm not sure if that's the plan? What happens to threaded events when it is disabled? (Or is it only a one-way flag?)

An alternative (which is much more involved to implement, but could be more useful long-term) would be to augment the power-levels system to include who can send relations (and what sort of relations they can send). This could allow for, e.g. disabling reactions in a room and such too. This wouldn't be something we'd want to do quickly and rip out though (it would require a room version upgrade, etc.) So I don't think it fits the bill, but is interesting to ponder!

@germain-gg
Copy link
Contributor

I think the obvious way to do this is with some sort of state event, but I'm not sure if that's the plan? What happens to threaded events when it is disabled? (Or is it only a one-way flag?)

Given that we're building threads in a backwards compatible way, a client can still request all events for a room, and display those as replies.
All of this currently happens in the SyncApi in the js-sdk. All incoming events are analysed and they are partitioned between events that belong to a thread and those who don't

When doing that analysis we can read the room settings and decide on how those events should be triaged

@daniellekirkwood daniellekirkwood modified the milestone: Threads P0 Oct 15, 2021
@daniellekirkwood daniellekirkwood changed the title Threads: Opt-in by room Threads: Launch Plan Oct 27, 2021
@daniellekirkwood
Copy link
Contributor Author

Launching with or without the stable prefix

Threads is currently using an unstable prefix. When we turn off support for that all messages sent with it will be moved from Threads to the timeline. While no messages will be lost (a principle for the Threads project), messages will not be where users ‘left’ them. Threads team think that it’s important to ship Threads to production when we have a version of Thread’s that will endure - when the thread messages will always live in a thread view.

It’s also been suggested that we default Threads to “on” in Develop environments which we are less reluctant to do but we at least want to wait until the Notifications bug has been fixed. When we know the timeline between the MSC landing and the fixed notification bug we might have negated the need to make a decision about defaulting Threads to “on” in Develop. TBD.

@novocaine
Copy link
Contributor

Launch plan: https://docs.google.com/document/d/1AxbVXguZqJIRQGd6jYYKDrlt5148ZMqgLxBzt2CO_Ag/edit

We will not be implementing a room-level setting for launch as we believe the reply-chain fallback mechanism provides a good enough experience for bridged users.

su-ex added a commit to SchildiChat/element-desktop that referenced this issue Jan 15, 2023
* This allows the update server to be entirely static, such as a CDN or object store, as defined at https ([\element-hq#461](element-hq#461)).
* Enable threads by default ([\#9736](matrix-org/matrix-react-sdk#9736)). Fixes element-hq/element-web#19270 element-hq/element-web#21910 and element-hq/element-web#23946.
* Add inline code formatting to rich text editor ([\#9720](matrix-org/matrix-react-sdk#9720)).
* Add emoji handling for plain text mode of the new rich text editor ([\#9727](matrix-org/matrix-react-sdk#9727)).
* Overlay virtual room call events into main timeline ([\#9626](matrix-org/matrix-react-sdk#9626)). Fixes element-hq/element-web#22929.
* Adds a new section under "Room Settings" > "Roles & Permissions" which adds the possibility to multiselect users from this room and grant them more permissions. ([\#9596](matrix-org/matrix-react-sdk#9596)). Contributed by @GoodGuyMarco.
* Add emoji handling for rich text mode ([\#9661](matrix-org/matrix-react-sdk#9661)).
* Add setting to hide bold notifications ([\#9705](matrix-org/matrix-react-sdk#9705)).
* Further password reset flow enhancements ([\#9662](matrix-org/matrix-react-sdk#9662)).
* Snooze the bulk unverified sessions reminder on dismiss ([\#9706](matrix-org/matrix-react-sdk#9706)).
* Honor advanced audio processing settings when recording voice messages ([\#9610](matrix-org/matrix-react-sdk#9610)). Contributed by @MrAnno.
* Improve the visual balance of bubble layout ([\#9704](matrix-org/matrix-react-sdk#9704)).
* Add config setting to disable bulk unverified sessions nag ([\#9657](matrix-org/matrix-react-sdk#9657)).
* Only display bulk unverified sessions nag when current sessions is verified ([\#9656](matrix-org/matrix-react-sdk#9656)).
* Separate labs and betas more clearly ([\#8969](matrix-org/matrix-react-sdk#8969)). Fixes element-hq/element-web#22706.
* Show user an error if we fail to create a DM for verification. ([\#9624](matrix-org/matrix-react-sdk#9624)).
* Prevent unnecessary m.direct updates ([\#9805](matrix-org/matrix-react-sdk#9805)). Fixes element-hq/element-web#24059.
* Fix checkForPreJoinUISI for thread roots ([\#9803](matrix-org/matrix-react-sdk#9803)). Fixes element-hq/element-web#24054.
* Load RTE components only when RTE labs is enabled ([\#9804](matrix-org/matrix-react-sdk#9804)).
* Fix issue where thread panel did not update correctly ([\#9746](matrix-org/matrix-react-sdk#9746)). Fixes element-hq/element-web#23971.
* Remove async call to get virtual room from room load ([\#9743](matrix-org/matrix-react-sdk#9743)). Fixes element-hq/element-web#23968.
* Check each thread for unread messages. ([\#9723](matrix-org/matrix-react-sdk#9723)).
* Device manage - handle sessions that don't support encryption ([\#9717](matrix-org/matrix-react-sdk#9717)). Fixes element-hq/element-web#23722.
* Fix hover state for formatting buttons (Rich text editor) (fix element-hq/element-web/issues/23832) ([\#9715](matrix-org/matrix-react-sdk#9715)).
* Don't allow group calls to be unterminated ([\#9710](matrix-org/matrix-react-sdk#9710)).
* Fix replies to emotes not showing as inline ([\#9707](matrix-org/matrix-react-sdk#9707)). Fixes element-hq/element-web#23903.
* Update copy of 'Change layout' button to match Element Call ([\#9703](matrix-org/matrix-react-sdk#9703)).
* Fix call splitbrains when switching between rooms ([\#9692](matrix-org/matrix-react-sdk#9692)).
* bugfix: fix an issue where the Notifier would incorrectly fire for non-timeline events ([\#9664](matrix-org/matrix-react-sdk#9664)). Fixes element-hq/element-web#17263.
* Fix power selector being wrongly disabled for admins themselves ([\#9681](matrix-org/matrix-react-sdk#9681)). Fixes element-hq/element-web#23882.
* Show day counts in call durations ([\#9641](matrix-org/matrix-react-sdk#9641)).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Threads T-Task Tasks for the team like planning X-Needs-Product More input needed from the Product team Z-Labs
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants