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

MSC2213: Rejoinability of private/invite-only rooms #2213

Open
wants to merge 2 commits into
base: old_master
Choose a base branch
from

Conversation

turt2live
Copy link
Member

@turt2live turt2live commented Aug 2, 2019

@turt2live turt2live added proposal-in-review proposal A matrix spec change proposal labels Aug 2, 2019
@turt2live turt2live changed the title Proposal for rejoinability of private/invite-only rooms MSC2213: Rejoinability of private/invite-only rooms Aug 2, 2019
@turt2live turt2live added the unassigned-room-version Remove this label when things get versioned. label Aug 6, 2019
Copy link
Member

@KitsuneRal KitsuneRal left a comment

Choose a reason for hiding this comment

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

Some thoughts upon the first read.

proposals/2213-rejoin-private-rooms.md Outdated Show resolved Hide resolved
proposals/2213-rejoin-private-rooms.md Outdated Show resolved Hide resolved
@turt2live
Copy link
Member Author

turt2live commented Aug 28, 2019

This is a prerequisite for Canonical DMs and hasn't received a lot of traffic. We intend to make Canonical DMs a thing very soon, so in the interest of moving the ball forward:

@mscbot fcp merge

@mscbot
Copy link
Collaborator

mscbot commented Aug 28, 2019

This FCP proposal has been cancelled by #2213 (comment).

Team member @mscbot has proposed to merge this. The next step is review by the rest of the tagged people:

Once at least 75% of reviewers approve (and there are no outstanding concerns), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!

See this document for information about what commands tagged team members can give me.

@mscbot mscbot added proposed-final-comment-period Currently awaiting signoff of a majority of team members in order to enter the final comment period. disposition-merge labels Aug 28, 2019
@turt2live turt2live added the kind:feature MSC for not-core and not-maintenance stuff label Apr 20, 2020
@anoadragon453
Copy link
Member

Cancelling FCP proposal as this proposal lacks an implementation.

@mscbot fcp cancel

@mscbot mscbot removed the proposed-final-comment-period Currently awaiting signoff of a majority of team members in order to enter the final comment period. label Oct 2, 2020
Comment on lines +46 to +55
1. If the previous membership is not explicitly `leave`, `rejoin_rule` does not apply.
For example, bans still ban, invites still invite, and never having been in the room
does not let you use `rejoin_rule` to get in.
2. If the `rejoin_rule` is `forbidden`, or implied to be `forbidden`, reject.
3. If the previous membership is explicitly `leave`, the server must look at the membership
previous to that membership to make a decision:
1. If the `rejoin_rule` is `join` and the membership previous to `leave` is not `join`
then reject. Else accept.
2. If the `rejoin_rule` is `invite` and the membership previous to `leave` is not
`join` or `invite`, reject. Else accept.
Copy link

@erkinalp erkinalp Feb 23, 2021

Choose a reason for hiding this comment

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

Suggested change
1. If the previous membership is not explicitly `leave`, `rejoin_rule` does not apply.
For example, bans still ban, invites still invite, and never having been in the room
does not let you use `rejoin_rule` to get in.
2. If the `rejoin_rule` is `forbidden`, or implied to be `forbidden`, reject.
3. If the previous membership is explicitly `leave`, the server must look at the membership
previous to that membership to make a decision:
1. If the `rejoin_rule` is `join` and the membership previous to `leave` is not `join`
then reject. Else accept.
2. If the `rejoin_rule` is `invite` and the membership previous to `leave` is not
`join` or `invite`, reject. Else accept.
1. If the previous membership is not explicitly `leave`, `rejoin_rule` does not apply.
For example, bans still ban, invites still invite, and never having been in the room
does not let you use `rejoin_rule` to get in. The rejoin rule `block` is an exception,
where leaving a room for any reason prevents further rejoins, even if invited.
2. If the `rejoin_rule` is `forbidden`, or implied to be `forbidden`, reject.
3. If the previous membership is explicitly `leave`, the server must look at the membership
previous to that membership to make a decision:
1. If the `rejoin_rule` is `join` and the membership previous to `leave` is not `join`
then reject. Else accept.
2. If the `rejoin_rule` is `comeback` and the membership previous to `leave` is not
`join` or member was put into the leave state by some other member, then reject.
Else accept.
3. If the `rejoin_rule` is `invite` and the membership previous to `leave` is not
`join` or `invite`, reject. Else accept.

Comment on lines +28 to +35
* `invite`: Members which were previously invited or joined to the room can rejoin,
provided they are now not banned.

* `join`: Members which were previously joined to the room can rejoin, provided they
are now not banned.

* `forbidden`: This event cannot be used to authorize a rejoin (members must be
explicitly invited back into the room). This is the default.
Copy link

@erkinalp erkinalp Feb 23, 2021

Choose a reason for hiding this comment

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

Suggested change
* `invite`: Members which were previously invited or joined to the room can rejoin,
provided they are now not banned.
* `join`: Members which were previously joined to the room can rejoin, provided they
are now not banned.
* `forbidden`: This event cannot be used to authorize a rejoin (members must be
explicitly invited back into the room). This is the default.
* `invite`: Members which were previously invited or joined to the room can rejoin,
provided they are now not banned.
*`comeback`: Members which were previously invited or joined to the room can rejoin,
provided they are now not kicked or banned.
* `join`: Members which were previously joined to the room can rejoin, provided they
are now not banned.
* `forbidden`: This event cannot be used to authorize a rejoin (members must be
explicitly invited back into the room). This is the default.
* `block`: A member quitting a room for any reason is treated as if irreversibly banned.

Copy link

@erkinalp erkinalp left a comment

Choose a reason for hiding this comment

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

Added comeback rejoin rule, which will prevent a kicked former member from rejoining unless invited back; and block rejoin rule where leaving a room will prevent from rejoining even if invited.

@turt2live turt2live added requires-room-version An idea which will require a bump in room version and removed unassigned-room-version Remove this label when things get versioned. labels Apr 6, 2021
@turt2live turt2live added the needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. label Jun 8, 2021
Comment on lines +25 to +26
`m.room.join_rules` is expanded to have a new `rejoin_rule` field under `content`,
preserved by the redaction algorithm. The `rejoin_rule` must be one of:
Copy link
Member

Choose a reason for hiding this comment

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

We probably want to add knock to the list of rejoin_rule options now that MSC2403 has merged.

I don't think restricted (MSC3083) or knock_restricted (MSC3787) would make much sense here unless you wanted to allow members to rejoin based on membership somewhere, but not allow new members to join based on that membership? Seems like a bit of an odd-case (and then you need to worry about the configuration of which rooms, etc.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
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 requires-room-version An idea which will require a bump in room version
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants