matrix-org / matrix-org/matrix-spec
Consider handling server ACLs through event auth rules rather than at the network level
Nobody has claimed this yet.
- Dominant language
- HTML
- Stars
- 330
- Forks
- 150
- Avg merge
- 2h 21m
- Merged PRs (30d)
- 3
Description
The topic of why server ACLs act at the network level, and not the event auth level [came up in discussion today](https://matrix.to/#/!NasysSDfxKxZBzJJoE:matrix.org/$ieSUyH3TSc_mrphwCBi6u0wi02mKvPG1-Xe8YWVuJ6c?via=matrix.org&via=libera.chat&via=envs.net) in #matrix-spec. Summarising the conversation, handling ACLs in event auth mean that:
* locking it to a room version, which has the side-effect of knowing that all compliant homeservers in the room should support server ACLs.
* This can prevent events from "leaking" out of servers that don't support server ACLs.
* Room participants will have a simple way to check if all homeservers in the room support server ACLs, instead of checking homeserver implementation projects and version numbers.
* This will boost support of server ACLs in homeserver implementations, as it will be necessary to participate in newer room versions.
The original [proposal for Server ACLs](https://docs.google.com/document/d/1aiuROf1__7ZFkJvDdAZQfBNxyzjYd-ijiRAcHJYqJCM/edit#) noted that doing so at the network level was done for the sake of time - however @richvdh commented that a DAG-level ban would be ineffective. I'd be interested to know why?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked Matrix discussion and the original Server ACL proposal, then review the issue's summary of network-level versus event-auth handling. Investigate why a DAG-level ban was considered ineffective and determine whether the event-auth approach needs a concrete room-version design. Done means a documented decision or an accepted specification change.
Written by the indexing model from the issue text.
Assessment
- Domain
- backend-api-design, networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100