element-hq / element-web

A glossy Matrix collaboration client for the web.
https://element.io
GNU Affero General Public License v3.0
11.01k stars 1.96k forks source link

Implement Knocking on Element Web #18655

Open jakewb-b opened 3 years ago

jakewb-b commented 3 years ago

Links

Mobile (out of scope for this issue): See https://github.com/vector-im/element-android/issues/3875 and https://github.com/vector-im/element-ios/issues/4731

### Tasks
- [ ] https://github.com/vector-im/element-web/issues/26043
- [ ] https://github.com/vector-im/element-web/issues/26044
- [ ] https://github.com/vector-im/element-web/issues/26083
- [ ] https://github.com/vector-im/element-web/issues/26084
- [ ] https://github.com/matrix-org/synapse/issues/16307
- [ ] https://github.com/element-hq/element-web/issues/27025
Mikaela commented 2 years ago

I am unable to open either of the links from the original submission and am wondering whether it's noted that this is part of Matrix protocol specification version 1.1?

turt2live commented 2 years ago

Screenshots of the designs for inspiration (in no particular order): ModeratorView RequestSent RequestToJoin CreateKnockableRoom

noantiq commented 2 years ago

I was wondering, why would you move the "People" tab to settings instead of leaving it in the side panel and adding a new category for Access Requests in the same way as there is a category for invited people already?

t3chguy commented 2 years ago

I was wondering, why would you move the "People" tab to settings instead of leaving it in the side panel and adding a new category for Access Requests in the same way as there is a category for invited people already?

Its not moved, the People right panel card remains, just won't show knocks to prevent noise/spam.

Settings already has a people section (people with non-default power levels) - this just extends that list.

image
turt2live commented 2 years ago

it would actually be its own tab - the existing roles & permissions tab gets split in two for clarity. The member list on the right side of the room remains unchanged in any case, however.

enekonieto commented 2 years ago

Would it be interesting if members with enough privileges see the knock in the timeline?

Mikaela commented 2 years ago

If I understand correctly, everyone in the room will see the knocking as it's a membership event, unless Element Web especially hides that (which I imagine would then be visible through /devtools or another client). To answer the knock necessary PL is the one to invite or kick (or ban)

enekonieto commented 2 years ago

I think the event in the timeline should have the Accept/Reject buttons for users with enough PL. I comment this because I don't see the timeline in the prototype sent by @turt2live.

The settings screen being the only way to accept knocks seems not very comfortable to me (I don't know if that's the idea).

Mikaela commented 2 years ago

Does this issue include that when join rule is set to knock or knock_restricted, Element Web settings "who can join this room" has radio button menu with nothing checked? Or does knock_restricted need a new issue?

My room versions are 9 and 10.

turt2live commented 2 years ago

It would be a later stage of development

Mikaela commented 1 year ago

The previous time I used knocking was yesterday when we bridged an ICT team from Telegram to Matrix. We couldn't use restricted as that would have required us to already have a room with everyone and due to the room's nature we couldn't make it fully public.

I am also utilising knock_restricted in my personal rooms a lot.

Thus I would like to ask if there has been any progress with supporting knocking in Elements as it's a feature of Matrix Spec 1.1 with Matrix Spec 1.5 being around the coner? https://github.com/matrix-org/matrix-spec/issues/1337

turt2live commented 1 year ago

Knocking is still low on the list of priorities. Due to scheduling, we're expecting to make more forward progress next summer.

Mikaela commented 1 year ago

Thanks for the update, I am happy to hear that knocking is on the list of priorities even if not that high on it

ArtexJay commented 1 year ago

This would be an excellent tool for Spaces/Rooms to help lock down or secure their communities.

BurnyBoi commented 1 year ago

This would be an excellent tool for Spaces/Rooms to help lock down or secure their communities.

was just thinking to ask: does the design proposed above have knocking on spaces in mind?

ninchuka commented 1 year ago

This would be an excellent tool for Spaces/Rooms to help lock down or secure their communities.

was just thinking to ask: does the design proposed above have knocking on spaces in mind?

spaces are just rooms so I dont see why they wouldnt support knocking

Xiretza commented 1 year ago

spaces are just rooms so I dont see why they wouldnt support knocking

Spaces don't have a timeline unless you enable developer tools, so any design that would show knocks in the timeline would not work for spaces without special handling.

ninchuka commented 1 year ago

spaces are just rooms so I dont see why they wouldnt support knocking

Spaces don't have a timeline unless you enable developer tools, so any design that would show knocks in the timeline would not work for spaces without special handling.

thats true

Mikaela commented 1 year ago

Due to Matrix Foundation considering publicly joinable members-only history rooms as free to be published on their website, I would like to ask whether knocking in Elements (https://github.com/vector-im/element-meta/issues/43) is still expected to make more forward progress this summer?

turt2live commented 1 year ago

Element unfortunately does not have plans to make progress this summer on knocking. I'll include the latest design screenshots below, if someone is interested in writing a PR for the feature. Some of this work may already be done by https://github.com/matrix-org/matrix-react-sdk/pull/9093 - feel free to use it as a base.

Create Room Dialog Knocking - Ask to join Knocking - request to join sent Cancel request to join

Knocking - denied access

One Request - with message (if no message attached to request, don't show "View Message" button) Knocking - more than 3 people asking to join Room Settings - Manage knocks Join Settings - Room

dhenneke commented 1 year ago

Info: We from @nordeck are starting to implement this feature. So you should be seeing the first PRs from us in the next couple of weeks.

weeman1337 commented 1 year ago

Thank you for putting all the effort into this. :+1: I've played around with the feature and found some issues:

Update: Issues added to task list in issue description

nao9797 commented 1 year ago

I have been very thankful for the very existence of Element thus far, but I feel that the current options are extremely limiting and in reality it only boils down to 2 options: A. Invite People manually if you want a private room. B. Host a public room/space

For someone like myself who dedicated time to helping bring consciousness about the best FOSS apps through various methods, this is creating a major gap in potential. I think allowing knocking should be a priority if Element wants to increase its user base / popularity.

Imagine this scenario: Assume a YouTuber wants to host a private space and they have 100 Followers. The user is concerned about trolls and unknown people joining the private space. He knows he only has 100 Followers so it is easy to know there could only be 100 members. He wants nothing more than for his followers to become aware of the existence of Element by only simply providing a link to the private room -encouraging them to create an account in order to join the private room- with the hopes that they may sooner dump other chatting platforms that don't provide the beautiful features Element does. This would help raise consciousness about Element as a chatting platform alternative and thus increase its popularity more efficiently.

Please consider this if you don't think Knocking should be Top Priority. At least you will understand that the potential it could unleash is very great. I would add to the suggestion to include adding a few text input fields with labels so that the author/host can ask for any questions or references . Example: In the section for enabling Knocking in the settings, allow the Host to add Fields for Requestors to Answer a Question.

Eg. Format: Label1: Input Label (Back End) | Visible Text / Question: Input Visible Text *(Front End) [ example answer field ] The format uses "Labels" for the Back End in the settings which would facilitate compatibility for storing data into a Spreadsheet/Database

Eg. Back End in Settings (Host): Label1: YT-ID | Visible Text / Question: What is your YouTube Username?

Eg. Frontend upon opening the Room Link (Requestor) "What is your YouTube Username?" [ YTuser#45 ]

The idea is to make it easier for Hosts to question the Requestor in order to have a reference to make identifying them easier or to make sure the intention of the Requestor is understood.

I thank you for taking the time to read this and for all work that has been done so far on Element! Namaste!

IdacraBackup commented 1 year ago

+1 @nao9797 for the ability for the user knocking to be able to provide additional information, at least one textbox would be great

rettichschnidi commented 11 months ago

Tried the current state, and seems very well done to me. Thanks!

Regarding spaces: Are there any ideas/plans on making knocking work for them too? As of Element Web 1.11.46, I can enable knocking for spaces, and users can knock, but the admin of the space does not get a notification about the request, thus is not able to accept/deny them.

Sun-Laura commented 10 months ago

As mentioned some months ago we contributed to the knocking feature for the past few weeks. Our focus is still the implementation in the rooms. As you @rettichschnidi mentioned, the knocking for spaces might be also a great value. Despite this it is not our focus yet, maybe Element itself has a more concrete plan for spaces or someone else can take over to contribute. ;)