matrix-org / matrix-org/matrix-spec

Federation of Homeserver Discovery

Open
#846 16 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
HTML
Stars
330
Forks
150
Avg merge
2h 21m
Merged PRs (30d)
3

Description

Feature: Enabling sharing of homeservers through federation.

The homeserver federation is currently quite fragmented, when people on one homeserver want to join rooms on another homeserver they need to know about the homeserver, and know the URL, and then manually go in and select the homeserver they want to display rooms from in room discovery, this is not very user friendly.

One possible way of implementing a solution to this would be to allow homeserver owners to maintain a "default homeserver list" of servers they want displayed to their users, as well as a "homeserver follow list" of homeservers whose default homeserver lists they want to append to the homeserver list users receive in Element (minus duplicates). Element would get the list of homeservers from the homeserver it is connected to. Homeservers blacklisted by the homeserver you are on would not be shown of course.

Each homeserver in the "default homeserver list" could have a description string as well as a homeserver avatar, which can either be defined by the homeserver owner, or if N/A could be pulled directly from the homeserver that is linked to.

You could also do the same thing with homeserver blacklists, such that server blacklisting is federated too, perhaps with a reason listed for why a server is on the blacklist.

(On this same note, the server dropdown in element has to be ditched for a different UI, when you have many servers it is awful, a much better solution would be a filtering mechanism where the room discovery contains the rooms of all servers you have selected). On this note it would also be useful to have a setting for each homeserver in the default homeserver list where you can define if the server should be enabled in the filtering from default or not, that gives homeserver owners granular control over which servers' rooms will be in the room discovery by default. It should also be possible perhaps for a homeserver owner when they add homeservers to the "homeserver follow list" to define there whether the homeservers listed in the followed homeserver's default homeserver list should inherit filtering from that list, or whether they should all be enabled, or disabled.

Lastly, it would be good as well to make it so that each user could maintain a list of homeservers themselves, as well as a blacklist and follow list, this could work exactly the same as the aforementioned. You could even make it possible for users to follow either other users homeserver lists/blacklists, or for homeservers to follow users lists/blacklists.

In summary, this solution lets homeserver owners add all the homeservers they want their users to know about, and to share/follow this list of homeservers with other homeservers, making the matrix homeserver ecosystem less fragmented, and it solves a UX problem with searching through rooms in Element when you have multiple homeservers you are connected to.

Hope this makes sense, cheers!

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or specification sections. Start by reviewing the existing homeserver discovery and federation portions of the Matrix specification, then narrow the proposal to one agreed protocol or UI scope. Done should be a decided, implementable specification change with clear behavior for lists, following, blacklists, and filtering.

Written by the indexing model from the issue text.

Assessment

Domain
distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.