Skip to content

MSC4501: Rooms as Social Media Pages#4501

Draft
q-TheDog wants to merge 7 commits into
matrix-org:mainfrom
Haven-Organization:msc-social-media-pages
Draft

MSC4501: Rooms as Social Media Pages#4501
q-TheDog wants to merge 7 commits into
matrix-org:mainfrom
Haven-Organization:msc-social-media-pages

Conversation

@q-TheDog

@q-TheDog q-TheDog commented Jul 6, 2026

Copy link
Copy Markdown

Rendered

A spiritual successor to MSC3639 (abandoned): conventions for building a social-media-style app (personal profiles, group pages, following, and a feed) on top of rooms and events.

@q-TheDog q-TheDog changed the title MSCXXXX: Rooms as Social Media Pages MSC4501: Rooms as Social Media Pages Jul 6, 2026
@turt2live turt2live added proposal A matrix spec change proposal. Process state. A-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 6, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Implementation requirements:

  • Chat client (backwards compatibility), or MSC mechanisms to prevent/discourage chat clients from encountering the data
  • Social media client (first party compatibility, multiple)

@turt2live turt2live left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Early review for early process requirements.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This MSC requires sign off before it can enter a proposed FCP merge.

q-TheDog added 5 commits July 6, 2026 17:23
Spiritual successor to the abandoned MSC3639, defining room types for
social media profiles (m.social.profile) and groups (m.social.group),
a profile-discoverability field built on MSC4133, a post event type
reusing m.room.message's schema, a single mechanism for reposts/boosts/
quote-posts, liking via standard m.reaction, room-membership-as-following,
and a phased migration plan for treating m.room.message as an
interchangeable stand-in for m.social.post during rollout.
Note that a repost's embedded body isn't tied to the referenced
event's actual content at all, so a malicious repost could fabricate
something the original author never said, not just resurface an
edited/retracted statement.
A boost's outer body was empty/absent, which renders as a blank,
confusing message bubble in any client without support for this
proposal. Require a matrix.to/matrix: permalink to the reposted
event instead, so non-compliant clients see an ordinary clickable
link, and specify how a compliant client detects and re-renders that
case.
@q-TheDog q-TheDog force-pushed the msc-social-media-pages branch from a167973 to 69db24c Compare July 6, 2026 21:23
q-TheDog added 2 commits July 6, 2026 17:53
A repost previously only carried a copy of the original's body. Carry
the whole content object instead (formatted_body, format, media
fields like url/file/info, etc.), so a repost of a rich-formatted or
media post renders the same as the original rather than degrading to
a plain-text stand-in.
m.social.profile_user_id is a new room state event (fixed empty
state_key, guaranteeing a room can only claim one owner at a time)
that lets a profile room assert which Matrix user it belongs to,
independent of its m.room.create creator (which can be a bridge or
appservice bot rather than the real owner). Since it isn't one of
the state events a default power_levels overrides, it inherits
state_default (50, Moderator) rather than Admin-level protection;
documented that gap and recommended an explicit override so
moderators can't reassign a profile out from under its owner.

Also carry the original post's sender and, optionally, displayname
in m.social.repost_of, alongside its content, so a repost can credit
the original author without a fetch to the original room.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-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. Process state.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants