-
Notifications
You must be signed in to change notification settings - Fork 385
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
[WIP] MSC3710: User groups #3710
Closed
Closed
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
9959179
Create new MSC
minecraftchest1 90edaa4
Rename 3677-user-groups.md to 3710-user-groups.md
minecraftchest1 fba49b7
Update 3710-user-groups.md
minecraftchest1 a515ce1
Update 3710-user-groups.md
minecraftchest1 5eb520e
Comment out template text.
minecraftchest1 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
# MSC0000: Template for new MSCs | ||
|
||
<!-- *Note: Text written in italics represents notes about the section or proposal process. This document | ||
serves as an example of what a proposal could look like (in this case, a proposal to have a template) | ||
and should be used where possible.* | ||
|
||
*In this first section, be sure to cover your problem and a broad overview of the solution. Covering | ||
related details, such as the expected impact, can also be a good idea. The example in this document | ||
says that we're missing a template and that things are confusing and goes on to say the solution is | ||
a template. There's no major expected impact in this proposal, so it doesn't list one. If your proposal | ||
was more invasive (such as proposing a change to how servers discover each other) then that would be | ||
a good thing to list here.* | ||
|
||
*If you're having troubles coming up with a description, a good question to ask is "how | ||
does this proposal improve Matrix?" - the answer could reveal a small impact, and that is okay.* | ||
|
||
There can never be enough templates in the world, and MSCs shouldn't be any different. The level | ||
of detail expected of proposals can be unclear - this is what this example proposal (which doubles | ||
as a template itself) aims to resolve. --> | ||
|
||
## Introduction | ||
|
||
Currently, Matrix does not seem to have any way to create groups of users for any purpouse, weither | ||
that for assigning power levels in a room, or to set restrictions on what users can do on the server. | ||
Because of that, I feel that matrix is not ready for ise in buisnesses, and I feel that it is something | ||
that is missing and should be added as it can serve other uses. | ||
|
||
## Proposal | ||
|
||
<!-- *Here is where you'll reinforce your position from the introduction in more detail, as well as cover | ||
the technical points of your proposal. Including rationale for your proposed solution and detailing | ||
why parts are important helps reviewers understand the problem at hand. Not including enough detail | ||
can result in people guessing, leading to confusing arguments in the comments section. The example | ||
here covers why templates are important again, giving a stronger argument as to why we should have | ||
a template. Afterwards, it goes on to cover the specifics of what the template could look like.* | ||
|
||
Having a default template that everyone can use is important. Without a template, proposals would be | ||
all over the place and the minimum amount of detail may be left out. Introducing a template to the | ||
proposal process helps ensure that some amount of consistency is present across multiple proposals, | ||
even if each author decides to abandon the template. | ||
|
||
The default template should be a markdown document because the MSC process requires authors to write | ||
a proposal in markdown. Using other formats wouldn't make much sense because that would prevent authors | ||
from copy/pasting the template. | ||
|
||
The template should have the following sections: | ||
|
||
* **Introduction** - This should cover the primary problem and broad description of the solution. | ||
* **Proposal** - The gory details of the proposal. | ||
* **Potential issues** - This is where problems with the proposal would be listed, such as changes | ||
that are not backwards compatible. | ||
* **Alternatives** - This section lists alternative solutions to the same | ||
problem which have been considered and dismsissed. | ||
* **Security considerations** - Discussion of what steps were taken to avoid security issues in the | ||
future and any potential risks in the proposal. | ||
|
||
Furthermore, the template should not be required to be followed. However it is strongly recommended to | ||
maintain some sense of consistency between proposals. --> | ||
|
||
|
||
|
||
This document proposes the addition of user groups to Matrix. The proposed purpouse of groups is to | ||
allow for the refrencing of multiple users at once. Groups would be defined by the server administrator, | ||
possibly synced from an external authencation source, however there should be an option for groups to be | ||
created by users that can be enabled in the homeserver config. Possible uses are a group ping (for instance, | ||
pinging everyone in the marketing group in a product devlopment room for instance), or a group icon | ||
(for instance, it might show at the end of a users displayname), grouping users in a userlist, or | ||
assignimg power levels in bulk. This could also be used to assign server roles (another idea I have) to | ||
multiple users. | ||
|
||
I see this feature being used on a buisnesses or a projects matrix server. A buisness might make a group | ||
for each location, department, team, and/or subdivision. A large project server like KDE's or Archlinux's | ||
might have a group for devlopers, contributers, collaberators, or for each project/subproject. Fosdem | ||
might have groups for each stand. I do not see this feature beimg used on public servers like matrix.org | ||
as much. However, a default group for server administrators could exist, which admins are automaticlly | ||
added, that users can use to essily identify or contact server admins. | ||
|
||
Groups should be based off of the existing user type, but with a different type identifier. I think that | ||
the existing identifier prefix `@` will work for groups as well. Groups will be similar to users in that | ||
they can be invited to groups, in which all group members will be subsequently invited. Groups can also | ||
be pinged, in which case all group members in that room will be pinged. | ||
|
||
## Potential issues | ||
|
||
<¡-- *Not all proposals are perfect. Sometimes there's a known disadvantage to implementing the proposal, | ||
and they should be documented here. There should be some explanation for why the disadvantage is | ||
acceptable, however - just like in this example.* | ||
|
||
Someone is going to have to spend the time to figure out what the template should actually have in it. | ||
It could be a document with just a few headers or a supplementary document to the process explanation, | ||
however more detail should be included. A template that actually proposes something should be considered | ||
because it not only gives an opportunity to show what a basic proposal looks like, it also means that | ||
explanations for each section can be described. Spending the time to work out the content of the template | ||
is beneficial and not considered a significant problem because it will lead to a document that everyone | ||
can follow. --> | ||
|
||
|
||
## Alternatives | ||
|
||
<!-- *This is where alternative solutions could be listed. There's almost always another way to do things | ||
and this section gives you the opportunity to highlight why those ways are not as desirable. The | ||
argument made in this example is that all of the text provided by the template could be integrated | ||
into the proposals introduction, although with some risk of losing clarity.* | ||
|
||
Instead of adding a template to the repository, the assistance it provides could be integrated into | ||
the proposal process itself. There is an argument to be had that the proposal process should be as | ||
descriptive as possible, although having even more detail in the proposals introduction could lead to | ||
some confusion or lack of understanding. Not to mention if the document is too large then potential | ||
authors could be scared off as the process suddenly looks a lot more complicated than it is. For those | ||
reasons, this proposal does not consider integrating the template in the proposals introduction a good | ||
idea. --> | ||
|
||
|
||
## Security considerations | ||
|
||
<!-- *Some proposals may have some security aspect to them that was addressed in the proposed solution. This | ||
section is a great place to outline some of the security-sensitive components of your proposal, such as | ||
why a particular approach was (or wasn't) taken. The example here is a bit of a stretch and unlikely to | ||
actually be worthwhile of including in a proposal, but it is generally a good idea to list these kinds | ||
of concerns where possible.* | ||
|
||
By having a template available, people would know what the desired detail for a proposal is. This is not | ||
considered a risk because it is important that people understand the proposal process from start to end. --> | ||
|
||
## Unstable prefix | ||
|
||
<!-- *If a proposal is implemented before it is included in the spec, then implementers must ensure that the | ||
implementation is compatible with the final version that lands in the spec. This generally means that | ||
experimental implementations should use `/unstable` endpoints, and use vendor prefixes where necessary. | ||
For more information, see [MSC2324](https://github.com/matrix-org/matrix-doc/pull/2324). This section | ||
should be used to document things such as what endpoints and names are being used while the feature is | ||
in development, the name of the unstable feature flag to use to detect support for the feature, or what | ||
migration steps are needed to switch to newer versions of the proposal.* --> | ||
|
||
## Dependencies | ||
|
||
<!-- This MSC builds on MSCxxxx, MSCyyyy and MSCzzzz (which at the time of writing have not yet been accepted | ||
into the spec). --> |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this sounds like Spaces to be honest
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you apply power levels to everyone in a space at once? I was thinkimg of something like spaces but it consists of users rather then rooms.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#2962 and #3216 and #2812 are existing proposals for similar things
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct me if I'm wrong, but applying permissions to members of a Space room (#2962) is equal in functionality to applying permissions to an arbitrary new system of grouping users into a list. The latter seems like it would take more work to implement on everyone's part when the infrastructure already exists.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are not wrong. I didn't look for possibly similar msc's (fail on my part). It will probably be easier.
Wonders if there is a way to ping a space.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Assuming concurrency with Discord's notion of "pings", currently you can only @ users. Spaces are just rooms, so it would be theoretically easy to implement: send a message to a space room that sends notifications to each of the members of that space. I think it would also be necessary to check if the user is a member of or can join the room the "ping" comes from so they can action on it.