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

MSC4036: Room organization by promoting threads #4036

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

C0ffeeCode
Copy link

@C0ffeeCode C0ffeeCode commented Jul 13, 2023

Rendered

This MSC proposes standardization of a room state key to request clients to promote threads
for the purpose of organizing room discussions using threads.

@C0ffeeCode C0ffeeCode changed the title MSC0000: Room organization by promoting threads MSC4036: Room organization by promoting threads Jul 13, 2023
@turt2live turt2live added proposal A matrix spec change proposal client-server Client-Server API kind:feature MSC for not-core and not-maintenance stuff needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. labels Jul 13, 2023
@turt2live
Copy link
Member

@C0ffeeCode please sign off on your changes so it is eligible for acceptance later in the process.

@@ -0,0 +1,86 @@
# MSC436: Room organization by promoting threads

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think a good addition to this would be a power level rule regulating who can post messages in the main thread. The use case would be an announcement kind of room where regular users would only be allowed to comment in threads to reduce noise.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great idea.
But I think it would make more sense to propose it in a separate MSC as the ideas do not depend on each other.

@InezMc
Copy link

InezMc commented Jul 17, 2023

@C0ffeeCode please sign off on your changes so it is eligible for acceptance later in the process.

Private sign off has been recieved.

@C0ffeeCode C0ffeeCode force-pushed the room-organization-by-promoting-threads branch from d3339b9 to 1f0c1c4 Compare August 1, 2023 12:00
@C0ffeeCode C0ffeeCode force-pushed the room-organization-by-promoting-threads branch from 1f0c1c4 to cb34d5f Compare August 1, 2023 12:21
@C0ffeeCode C0ffeeCode marked this pull request as ready for review August 19, 2023 21:24
Comment on lines +13 to +17
Standardize a room state `m.promote_threads` (`dev.coffeeco.MSC4036.promote_threads` for non-finalized implementations of this MSC) with a Boolean value or an object, defaulting to `false`.

The value SHOULD NOT be set to an object
but clients MUST consider an object as implicating a value of `true` (possibly with additional behavior changes)
for the purpose of forwards compatibility.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Event content must be an object. Even if it didn't have to be, varying types like this are not nice for statically typed languages, and should usually be avoided.

Also, the MSC doesn't explicitly say what it's proposing. This section talks about "a room state" and the unstable prefix says "state key", which is not the same as an event type. You should probably use "room state event" and "event type" respectively, assuming you're proposing a new state event with type m.promote_threads. State keys are a different thing, they're used for having multiple events of the same type.

## Unstable prefix

For the proposed `m.promote_threads` state key,
the unstable `dev.coffeeco.MSC4036.promote_threads` shall be used.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Identifiers like this should be lowercase

Suggested change
the unstable `dev.coffeeco.MSC4036.promote_threads` shall be used.
the unstable `dev.coffeeco.msc4036.promote_threads` shall be used.

(needs to be fixed in a few other places in the MSC too, but you could also just remove them: mentioning unstable prefixes in the main MSC text is not necessary)

for example to specify the label of the button to access the message input box outside the scope of a thread
(e.g. "Ask a new question", "Open a new issue").

[MSC3088: room-subtyping](https://github.com/matrix-org/matrix-spec-proposals/blob/travis/msc/mutable-subtypes/proposals/3088-room-subtyping.md)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
[MSC3088: room-subtyping](https://github.com/matrix-org/matrix-spec-proposals/blob/travis/msc/mutable-subtypes/proposals/3088-room-subtyping.md)
[MSC3088: room-subtyping](https://github.com/matrix-org/matrix-spec-proposals/pull/3088)


## Proposal

Standardize a room state `m.promote_threads` (`dev.coffeeco.MSC4036.promote_threads` for non-finalized implementations of this MSC) with a Boolean value or an object, defaulting to `false`.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sounds more like a use case for msc3088 (room subtyping) than making a new state event.

Also, it may be considered to add the possibility to select specific behavior changes specified above.
However, this might cause a too broad variation of the user interface, making it harder to understand and less predictable.

## Alternatives
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stumbled across this again, I think it would be a good idea to turn this from "promote threads" to "thread only rooms", and introduce a new room type. A big problem in rooms is when some clients support threads and some don't. Having a separate room type would be semantically better and could cause clients that don't support threads to not show thread-only rooms in the ui.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So the thought is to specify clients not supporting threads not to show the room?
A possible concern is that as of now, many clients (and homeserver implementations?) still do not support threads, reducing the usefulness of rooms of such type.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
client-server Client-Server API kind:feature MSC for not-core and not-maintenance stuff needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. proposal A matrix spec change proposal
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants