|
|
|
@ -96,7 +96,7 @@ relationship can be expressed in one of two ways:
|
|
|
|
|
"via": ["example.com"],
|
|
|
|
|
"present": true,
|
|
|
|
|
"order": "abcd",
|
|
|
|
|
"default": true
|
|
|
|
|
"auto_join": true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -117,7 +117,9 @@ relationship can be expressed in one of two ways:
|
|
|
|
|
`\x20` (space) to `\x7F` (`~`), or consist of more than 50 characters, are
|
|
|
|
|
forbidden and should be ignored if received.)
|
|
|
|
|
|
|
|
|
|
If `default` is set to `true`, that indicates a "default child": see [below](#default-children).
|
|
|
|
|
If `auto_join` is set to `true`, that indicates that the child should be
|
|
|
|
|
automatically joined by members of the space see
|
|
|
|
|
[below](#auto-joined-children).
|
|
|
|
|
|
|
|
|
|
2. Separately, rooms can claim parents via the `m.room.parent` state
|
|
|
|
|
event:
|
|
|
|
@ -168,17 +170,29 @@ Cycles in the parent->child and child->parent relationships are *not*
|
|
|
|
|
permitted, but clients (and servers) should be aware that they may be
|
|
|
|
|
encountered, and ignore the relationship rather than recursing infinitely.
|
|
|
|
|
|
|
|
|
|
### Default children
|
|
|
|
|
### Auto-joined children
|
|
|
|
|
|
|
|
|
|
The `default` flag on a child listing allows a space admin to list the
|
|
|
|
|
"default" sub-spaces and rooms in that space. This means that when a user joins
|
|
|
|
|
the parent space, they will automatically be joined to those default
|
|
|
|
|
children.
|
|
|
|
|
The `auto_join` flag on a child listing allows a space admin to list the
|
|
|
|
|
sub-spaces and rooms in that space which should be automatically joined by
|
|
|
|
|
members of that space.
|
|
|
|
|
|
|
|
|
|
XXX implement this on the client or server?
|
|
|
|
|
Joining should be performed by the client. This can optionally be sped up by
|
|
|
|
|
using [MSC2946](https://github.com/matrix-org/matrix-doc/pull/2946) to get a
|
|
|
|
|
summary of the spacetree to be joined, and then using a batch join API (when
|
|
|
|
|
available) to join whichever subset of it makes most sense for the client's
|
|
|
|
|
UX.
|
|
|
|
|
|
|
|
|
|
Clients could display the default children in the room list whenever the space
|
|
|
|
|
appears in the list.
|
|
|
|
|
Obviously auto-joining can be a DoS vector, and we consider it to be antisocial
|
|
|
|
|
for a space to try to join its users to more than ~100 children.
|
|
|
|
|
|
|
|
|
|
Clients could display the auto-joined children in the room list whenever the
|
|
|
|
|
space appears in the list - thus helping users discover other rooms in a space
|
|
|
|
|
even if they're not joined to that space.
|
|
|
|
|
|
|
|
|
|
XXX: I still think it's more common that a space admin will want users to know
|
|
|
|
|
that a child exists (by showing it in the room list), rather than force them to
|
|
|
|
|
actually join it. So this would be an `advertise` flag or something on the child.
|
|
|
|
|
Matthew to discuss with Nad...
|
|
|
|
|
|
|
|
|
|
### Long description
|
|
|
|
|
|
|
|
|
|