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

MSC4221: Room Banners #4221

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions proposals/4221-room-banners.md
Copy link
Member

Choose a reason for hiding this comment

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

Implementation requirements:

  • Client

Choose a reason for hiding this comment

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

:)

Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# MSC4221: Room Banners

This proposal adds room banners to Matrix, similar to the way Discord has guild banners.
Copy link
Contributor

Choose a reason for hiding this comment

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

I wonder how this would render in a Matrix client today. Discord has banners for it's guilds but they only really show up on invite to the guild and in the top right of the client when viewing the guild. They're not really tied to individual channels.

For Matrix rooms, where would this go? Obviously I don't expect the spec to start designing the client but I fear there isn't enough information about how this should be presented to the user.

Would this be displayed on invite? (in which case there needs to be recommendations for m.room.banner to appear in stripped state (https://spec.matrix.org/latest/client-server-api/#stripped-state).

Copy link
Author

Choose a reason for hiding this comment

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

I would think that banners should be above room info.


## Proposal

Matrix has ways to add room avatars, but those are limited to a 1:1 aspect ratio. This proposal adds banners to rooms, which are a 16:9 aspect ratio.
A banner state event should have the type `m.room.banner` and the content should contain the `url` in `mxc://` format.
Example event:
```json
{
"type": "m.room.banner",
"sender": "@everypizza:chat.blahaj.zone",
"content": {
"info": {
"mimetype": "image/jpeg"
},
"url": "mxc://…/…"
},
}
Comment on lines +11 to +21
Copy link
Member

Choose a reason for hiding this comment

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

New events should consider how they fit in with extensible events. For example, #3765 turns room topics into extensible events

Copy link
Author

Choose a reason for hiding this comment

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

Should it become m.banner instead of m.room.banner?

```
## Potential issues

A malicious user could upload a banner with explicit or illegal content. A future MSC may provide a way to mark room pictures or banners as sensitive using [MSC4193](http://github.com/matrix-org/matrix-spec-proposals/pull/4193).
Copy link
Contributor

Choose a reason for hiding this comment

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

Some concerns about having reasonable fallbacks here. Not every client would be able to display a banner (and I'm not sure every user is going to want to be confronted with a banner in their client), so I think there should be some way to fallback to textual representation of the banner.

I don't know how common it is for banners to contain actual information, usually they seem to be more decorative?

Copy link
Author

Choose a reason for hiding this comment

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

By "sensitive content", I mean things that would commonly have a content warning on platforms like the Fediverse such as food, lewd stuff, politics, etc.

Copy link
Contributor

Choose a reason for hiding this comment

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

Sorry, I commented a line below where I meant to :). This was a separate concern.

Choose a reason for hiding this comment

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

By "sensitive content", I mean things that would commonly have a content warning on platforms like the Fediverse such as food, lewd stuff, politics, etc.

sorry for offtopic, but why food is sensitive content?

Copy link

Choose a reason for hiding this comment

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

sorry for offtopic, but why food is sensitive content?

@officialdakari Propably because Eating Disorder. It shouldn't be required, but some people on Fediverse go overboard with it. /offtopic


## Alternatives

Pinned messages and room topics are in similar areas of the UI in some clients.

## Security considerations

None I can think of.

## Unstable prefix

While this MSC is unstable, clients wanting to implement this should use `page.codeberg.everypizza.room.banner` instead of `m.room.banner`.

## Dependencies

N/A