jdev - 2026-04-16


  1. Cynthia

    I made a draft of the hat-based ACL XEP. I'm not at home at the moment so I'll just type what I remember the requirements are: * The server must have a list of available permissions that can be assigned to a hat (queriable using a IQ stanza) * A user must not be allowed (even if they have the permission) to perform an action on a user or any related events (such as moderating messages) that has a higher hat than their highest-level hat * There MUST be a default hat which is invisible, that contains permissions automatically given to all users

  2. Cynthia

    I made a draft of the hat-based ACL XEP. I'm not at home at the moment so I'll just type what I remember the requirements are: * The server must have a list of available permissions that can be assigned to a hat (queriable using a IQ stanza) * A user must not be allowed (even if they have the permission) to perform an action on a user or any related events (such as moderating messages) if the user in question has a higher hat than their highest-level hat * There MUST be a default hat which is invisible, that contains permissions automatically given to all users

  3. Cynthia

    Does this make sense?

  4. singpolyma

    Why do we need an invisible hat? Can't they simply have no hat?

  5. Cynthia

    Not a hat

  6. Cynthia

    It's just in the XEP as a reserved "hat"

  7. Cynthia

    It doesn't exist as a hat but is just a container for permissions belonging to everyone

  8. singpolyma

    so long as this protocol comes in the form of a "well known" ah hoc command i don't mind it. Though it does seem a bit cart before the horse

  9. Cynthia

    (similar to @everyone role)

  10. singpolyma

    But I don't see why any such container is needed

  11. Cynthia

    How else can I mark the lowest-common denominator permissions?

  12. theTedd

    It's a way to symbolise default permissions, but it outlines the underlying problem that is: hats are not a permissions system. If you want a generic permissions sysyem then define that; if you then want to assign permissions based on hats, you can choose to do that (or not)

  13. theTedd

    It's a way to symbolise default permissions, but it outlines the underlying problem that is: hats are not a permissions system. If you want a generic permissions system then define that; if you then want to assign permissions based on hats, you can choose to do that (or not)

  14. singpolyma

    > How else can I mark the lowest-common denominator permissions? Same way as we already do now?

  15. Cynthia

    Server modules, right

  16. singpolyma

    We have a permissions system with roles and affs hats just give us new custom affs for when we need more levels (which I fully agree we sometimes do)

  17. Cynthia

    > We have a permissions system with roles and affs hats just give us new custom affs for when we need more levels (which I fully agree we sometimes do) While true, the role/aff system is showing its limitations

  18. Cynthia

    It's become a mess of assumptions and opaque permissions

  19. chunkipho

    Cynthia: nice work

  20. Cynthia

    Nobody actually knows what member SHOULD grant you at this point

  21. singpolyma

    Sure the limitation is a hardcoded number of levels. Which is why I was glad when hats came along and let us add new levels

  22. singpolyma

    > Nobody actually knows what member SHOULD grant you at this point Nothing SHOULD. This is up to implementation and configuration of course.

  23. Cynthia

    If nobody knows what it should, why should we trust roles/affs as they are

  24. Cynthia

    As a person who is not a server owner

  25. MattJ

    The permissions of a member are currently encoded in the XEP or in the room configuration

  26. singpolyma

    It's not about server owner it's about room admin. That is why decides what every role and aff and hat means

  27. MattJ

    It's plausible that servers may make their own decisions about permissions, at the direction of the server owner, but I think that's rare (usually the server owner wants to delegate that to room owners)

  28. Cynthia

    > It's not about server owner it's about room admin. That is why decides what every role and aff and hat means Yes

  29. singpolyma

    It's not about server owner it's about room admin. That is who decides what every role and aff and hat means

  30. Cynthia

    But there are still limitations

  31. singpolyma

    And since the room admin is also the one handing it out it seems appropriate that they get to decide what I'd means

  32. singpolyma

    > But there are still limitations Like what?

  33. Cynthia

    As an example, at QS, we want to have moderators that can kick/ban/moderate but not be able to deanonymize users

  34. Cynthia

    Or people that can have voice but not access our bot meant for members

  35. singpolyma

    Sure. You can do that. Might need some code of course but if we write yet another xep we'll need the same code 🙂

  36. MattJ

    That can be solved in other ways than designing a new ACL system from scratch

  37. Cynthia

    > That can be solved in other ways than designing a new ACL system from scratch Yes, we had to hack around it with a bot that people allowed to use it can use to kick or ban or moderate people

  38. singpolyma

    XEPs don't implement themselves and once you implement it you'll have a much better idea of if a xep is needed and what it needs to say

  39. MattJ

    I'm not going to tell anyone not to work on an ACL system, it is often annoying that XMPP doesn't have more unified access control. I'm not convinced that hats are a solution in this space (but may be integrated with it, perhaps).

  40. Cynthia

    The problem is that the bot relies on the member affliation

  41. MattJ

    But access control is such a complex topic, personally I've somewhat avoided it for a long time

  42. Cynthia

    Which means moderated rooms are impossible

  43. Kev

    FWIW, my ACL ‘spec’ has hats as an allowable grouping, but doesn’t require it be hats.

  44. singpolyma

    Yeah I'd avoid anything that uses a bit unless absolutely necessary

  45. Cynthia

    > I'm not going to tell anyone not to work on an ACL system, it is often annoying that XMPP doesn't have more unified access control. I'm not convinced that hats are a solution in this space (but may be integrated with it, perhaps). Yes I wanted to integrate hats into an ACL system

  46. singpolyma

    But the bot also could look for a hat etc if member aff is wrong for what it does

  47. Kev

    https://github.com/swift/protoxeps/blob/master/acl.md for anyone who hasn’t seen it before; maybe I should just finish that off.

  48. singpolyma

    Yeah I'd avoid anything that uses a bot unless absolutely necessary

  49. Cynthia

    > https://github.com/swift/protoxeps/blob/master/acl.md for anyone who hasn’t seen it before; maybe I should just finish that off. That's similar to what I wrote

  50. Cynthia

    Down to the "everyone group"

  51. Cynthia

    I wanted to write it as a set of default permissions that all users get

  52. Cynthia

    (not as an optional part of the ACL rules, just in case)

  53. singpolyma

    Probably best to see if the implementation actually calls for such a thing first :)

  54. Cynthia

    (not as an optional part of the ACL rules, just in case edge cases happen)

  55. Cynthia

    > Probably best to see if the implementation actually calls for such a thing first :) I don't think people wanna write or host bots for every single limitation in XMPP they have to hack around)

  56. Cynthia

    > Probably best to see if the implementation actually calls for such a thing first :) I don't think people wanna write or host bots for every single limitation in XMPP they have to hack around

  57. Kev

    > Probably best to see if the implementation actually calls for such a thing first :) At least for the way acl.md is written, there has to be a backstop. If that’s what you were replying to.

  58. singpolyma

    >> Probably best to see if the implementation actually calls for such a thing first :) > > I don't think people wanna write or host bots for every single limitation in XMPP they have to hack around Indeed. I suggest never using bots ever. This is XMPP not IRC.

  59. lovetox

    This is a bit madness to me, so every chat can have different names for the same permissions

  60. lovetox

    in chat A "God" can kick people, in Chat B only "Superman" can kick people

  61. Cynthia

    I want people who don't support reactions to be able to kick users but not grab their JID

  62. dwd

    lovetox, But think of the over-engineering we can do!

  63. singpolyma

    > This is a bit madness to me, so every chat can have different names for the same permissions Of course? No way to even know it they are the same

  64. Cynthia

    > in chat A "God" can kick people, in Chat B only "Superman" can kick people I mean the permissions are publicly exposed

  65. Cynthia

    In my XEP draft at least, just for the sake of clients

  66. lovetox

    yes but every user has to learn them for every single chat new

  67. singpolyma

    > I want people who don't support reactions to be able to kick users but not grab their JID Right. This should be not hard to build

  68. MattJ

    I have been meaning to do some research into Matrix's design, at least asking some people who are familiar with it on a daily basis

  69. dwd

    User research, you mean?

  70. MattJ

    Yes

  71. stratself

    me! me! /j

  72. dwd

    I didn't think we did that.

  73. lovetox

    The problem for me is, we should not bind permissions to free chooseable names

  74. stratself

    but yeah i use it daily

  75. MattJ

    It seems like a neat design, but I was curious if it had practical limitations/annoyances

  76. dwd

    Usable protocols. Whatever next.

  77. lovetox

    if you bind permissions to "Power Level" its kind of ok, you can check who has what power level and what they can do

  78. Cynthia

    Vegeta, what is his power level?

  79. dwd

    lovetox, So arbitrary integers good, arbitrary names bad?

  80. singpolyma

    > The problem for me is, we should not bind permissions to free chooseable names A bit late for that

  81. Cynthia

    It's over 9000!!!!

  82. MattJ

    dwd, I can see arguments for that, yes. It's possible to unambiguously rank users by permission level with integers, but not so with names.

  83. dwd

    MattJ, And do we need to rank them?

  84. MattJ

    With integers, you can know that someone with a lower level has a subset of permissions. It simplifies both implementation and (in my mind) management.

  85. Cynthia

    > The problem for me is, we should not bind permissions to free chooseable names To be quite honest, anyone can do this

  86. singpolyma

    Permissions aren't a ranking system though. There's no requirement for a linear progression

  87. stratself

    if you do it the discord way you can set products of numbers as combinations of permissions

  88. dwd

    MattJ Bitfield!

  89. MattJ

    Otherwise you can have weird configurations where some people could be assigned nonsensical permissions

  90. stratself

    so you can criss-cross, rather than make it a hierarchy

  91. Cynthia

    > Permissions aren't a ranking system though. There's no requirement for a linear progression Also there could be some joke numbers like level 69, level 420

  92. MattJ

    singpolyma, they don't have to be a ranking system, but they can be a ranking system. They can be anything the system designer decides.

  93. Cynthia

    With no permissions set, just as a joke

  94. stratself

    >> Permissions aren't a ranking system though. There's no requirement for a linear progression > > Also there could be some joke numbers like level 69, level 420 matrix does use 9001 and 69420 power levels, yes

  95. MattJ

    Clearly in Matrix they are

  96. singpolyma

    > singpolyma, they don't have to be a ranking system, but they can be a ranking system. They can be anything the system designer decides. Sure. if one community wants to set them up in an order that's fine

  97. MattJ

    I have seen some extremely over-engineered access control systems

  98. MattJ

    I don't want one of those baked into our protocol if it can be avoided

  99. stratself

    i don't like matrix's power levels to be very honest. too linear. But I think it fits their platforms

  100. Cynthia

    > I don't want one of those baked into our protocol if it can be avoided Its not baked in

  101. Cynthia

    It supplements the protocol

  102. MattJ

    Simplification requires adding constraints, and the integer power levels is one possible constraint that is already deployed in a similar system

  103. singpolyma

    Like what if I just want to add or remove a single permission from some people unrelated to all other permissions? Today I can do this with hats.

  104. MattJ

    If you can today with hats (when no such protocol is defined for it) then I don't see why you can't tomorrow with hats

  105. Cynthia

    Also there are possibilities for arbitrary permissions other than what's listed in the XEP

  106. singpolyma

    I agree. Unless we decide on some xep that says "don't" but of course I could probably ignore id

  107. singpolyma

    I agree. Unless we decide on some xep that says "don't" but of course I could probably ignore it

  108. Cynthia

    Like a Prosody module can modify the list of available permissions and add its own

  109. Cynthia

    So its not just the basic set

  110. singpolyma

    Yes the list of possible permissions will of course be different on every implementation and community

  111. singpolyma

    and change very frequently

  112. singpolyma

    I probably write a new one myself every couple of months and that's just me

  113. lovetox

    hm my thought is a powerlevel i can display beside a hat, it gives an impression of how much access this user has

  114. stratself

    also, cant names be a secondary key for hats? make the primary key a uuid4 or something

  115. Cynthia

    > Simplification requires adding constraints, and the integer power levels is one possible constraint that is already deployed in a similar system What if a user wants to know what does a power level mean

  116. singpolyma

    why would I care how much "access" a user has or know what that even means?

  117. lovetox

    if i join a chat and there are 20 hats defined, im not going into deep study which hat is the boss

  118. Cynthia

    Like people know what a hat "Super Admin" grants its users

  119. singpolyma

    > also, cant names be a secondary key for hats? make the primary key a uuid4 or something That is already the case

  120. Cynthia

    What does power level 9001 give its users?

  121. Cynthia

    Or power level 2310

  122. lovetox

    > why would I care how much "access" a user has or know what that even means? because i want to know which user is a moderator and which user is the room owner

  123. lovetox

    pretty basic stuff that we have righ tnow

  124. stratself

    > What does power level 9001 give its users? on matrix? basically just everything

  125. Cynthia

    And how do I know that's the case

  126. stratself

    usually it's the default level of the room owner

  127. lovetox

    i would not make the integers freely chooseable

  128. lovetox

    i would say there is 1-10

  129. singpolyma

    >> why would I care how much "access" a user has or know what that even means? > because i want to know which user is a moderator and which user is the room owner We already have this. Hats are for extra things we don't have

  130. lovetox

    that should be enough

  131. Cynthia

    > i would not make the integers freely chooseable It'll be freely choosable in other clients

  132. stratself

    > And how do I know that's the case well, compare it against the room acl. usually most room acls are for people below 100 but there are exceptions

  133. MattJ

    lovetox, the main problem I see in practice is that clients need to know what their own permissions are. I don't think they really need to know the permissions of others.

    👍 1
  134. Cynthia

    Or people will modify their clients to do so

  135. MattJ

    And this is a problem we already have today, for example clients don't know if they are allowed to send PMs

  136. stratself

    i don't mind if an admin refer to themself as Superman. Discord already normalized different names

  137. MattJ

    or even speak, without trying

  138. stratself

    i don't mind if an admin refer to themself as Superman. Discord already normalized different names for roles tbh

  139. Cynthia

    > i don't mind if an admin refer to themself as Superman. Discord already normalized different names for roles tbh Exactly, or has a stylized owner hat

  140. singpolyma

    New xep: disco#permissions jk

  141. Cynthia

    Also in my XEP, hats have to be ordered in a way anyway

  142. singpolyma

    i mean really it's disco#items node=permissions probably

  143. MattJ

    So that might be a good place to start, to be honest

  144. Cynthia

    So you get linear ordering + name

  145. singpolyma

    linear ordering seems like a step backwards

  146. MattJ

    Pretty much any access control system is going to need to name the permissions, and we don't currently have that

  147. Cynthia

    The user can choose the order of hats (in the ACL config)

  148. lovetox

    > Also in my XEP, hats have to be ordered in a way anyway like a .... power level?

  149. Cynthia

    >> Also in my XEP, hats have to be ordered in a way anyway > like a .... power level? Like how Discord does it, user with lower hats can't affect higher hats

  150. Cynthia

    So kinda?

  151. Cynthia

    Maybe?

  152. lovetox

    and how do you decide if something is "lower" usually by an integer

  153. singpolyma

    MattJ: the problem is that permissions proliferate. Sometimes you'll still just need to try. Like "can have others see my status text" is one we have today. We can name it I guess but I'm sure I'll have 4 more this year at least

  154. Cynthia

    > and how do you decide if something is "lower" usually by an integer Order of the stanzas

  155. Cynthia

    > and how do you decide if something is "lower" usually by an integer Order of the elements

    👍 1
  156. Cynthia

    Instead of a number

  157. lovetox

    and order can be expressed by an integer

  158. Cynthia

    Does your XML serializer preserve the order of elements?

  159. lovetox

    if i display in the gui your hat is number 10 in the list

  160. lovetox

    so you have level 10

  161. singpolyma

    This is all hypothetical until someone writes modules and uses them in their community for awhile :)

  162. Cynthia

    > and order can be expressed by an integer You can completely ignore the hat and express the order of the element as a integer I guess

  163. Cynthia

    I'm not forcing you to do otherwise

  164. singpolyma

    Hopefully clients wouldn't need any special support anyway.

  165. singpolyma

    it's a server side permission

  166. Cynthia

    I was thinking users could be ordered by how high their hats are in the participant list

  167. Cynthia

    But not show the order itself as a number

  168. Cynthia

    Similar to how role/aff is ordered

  169. stratself

    i don't care about orders protocol-wise, theyre client issues

  170. Cynthia

    > i don't care about orders protocol-wise, theyre client issues And server issues

  171. stratself

    > As an example, at QS, we want to have moderators that can kick/ban/moderate but not be able to deanonymize users but how are you gonna have hat A cant demote hat B if the permissions are criss-cross this way

  172. stratself

    >> i don't care about orders protocol-wise, theyre client issues > > And server issues servers could just send them in the wrong order anyways

  173. singpolyma

    I think even talking about a demoting b is getting quite ahead of ourselves

  174. Cynthia

    >> As an example, at QS, we want to have moderators that can kick/ban/moderate but not be able to deanonymize users > > but how are you gonna have hat A cant demote hat B if the permissions are criss-cross this way If hat A is higher than hat B and hat A has the ability to change the hats of users

  175. stratself

    how is that NOT power levels?

  176. singpolyma

    for now what is desired primarily is a server module to allow people with a give hat to kick/ban/mod but not see jids

  177. Cynthia

    Then hat A is able to change the hats of hat B (if users of hat B don't have a higher hat than hat A)

  178. Cynthia

    > how is that NOT power levels? ^

  179. MattJ

    If someone assigns the "highest" hat to someone, and configures that hat without permission to demote people, that person can never be demoted ever?

  180. MattJ

    As I mentioned, access control is "fun" :)

  181. Cynthia

    > If someone assigns the "highest" hat to someone, and configures that hat without permission to demote people, that person can never be demoted ever? With or without, they cannot be demoted

  182. Cynthia

    By some low-hatter

  183. MattJ

    Yes, it's possible to get into states that can't be recovered from

  184. Cynthia

    > Yes, it's possible to get into states that can't be recovered from That's why the owner aff is a fallback

  185. MattJ

    This would be similar to MUC requiring that there is at least 1 owner

  186. singpolyma

    Owner would always be able to fix at least

  187. Cynthia

    Owner aff can modify any ACL config or hats

  188. stratself

    well fair enough, similar to rooms in matrix requiring an owner

  189. stratself

    and we're back to the old hierarchy i guess

  190. theTedd

    So hats aren't a permissions system (but you could assign permissions based on hats)

  191. singpolyma

    > So hats aren't a permissions system (but you could assign permissions based on hats) Right

  192. Cynthia

    > So hats aren't a permissions system (but you could assign permissions based on hats) Yes

  193. singpolyma

    It's just a way to have a few new affs if needed

  194. MattJ

    Why not just assign permissions directly?

  195. Cynthia

    > Why not just assign permissions directly? Because that would get tedious

  196. singpolyma

    > Why not just assign permissions directly? You mean to users one at a time?

  197. singpolyma

    yeah basically because that. It's useful to bundled them

  198. MattJ

    The same way you assign hats to users one at a time

  199. theTedd

    It is useful to have a convenient label for a set of permissions, so they can be assigned, rather than having to specify each individual permission for each individual user

  200. singpolyma

    also permissions don't have names but I understand you want that changed heh

  201. MattJ

    Yes, I agree that bundles of permissions are useful. Just not sure why they have to be hats.

  202. Kev

    They don’t, I think. At least in acl.md you can assign to hats, but don’t have to.

  203. singpolyma

    They don't have to be. But why would we make yes another identical system to hats for this?

  204. Kev

    So if you want to assign to individual users instead of hats, you could.

  205. theTedd

    It doesn't; as I said, develop a generic permission system first, and then assign those with hats (or anything else if you prefer)

  206. singpolyma

    I guess if you wanted to assign permissions without a label then that's an argument for how it is different. We don't have this kind of invisible thing commonly now but maybe

  207. singpolyma

    > It doesn't; as I said, develop a generic permission system first, and then assign those with hats (or anything else if you prefer) Better yet. Don't design a permissions system at all and let implementations just do it

  208. theTedd

    Having a standard way to do things is more useful everyone inventing their own sub-standard ad hoc version

  209. theTedd

    Having a standard way to do things is more useful than everyone inventing their own sub-standard ad hoc version

  210. MattJ

    > we don't have this kind of invisible thing commonly now Actually I see it everywhere, all the time, every day :)

  211. MattJ

    A significant amount of access control in XMPP is invisible. I gave cases where it's invisible to MUC clients, that are particularly problematic.

  212. singpolyma

    > Having a standard way to do things is more useful than everyone inventing their own sub-standard ad hoc version Disagree. But in this case we don't have any versions yet at all. So there's not even an example to standardize on yet

  213. singpolyma

    > A significant amount of access control in XMPP is invisible. I gave cases where it's invisible to MUC clients, that are particularly problematic. That's a bit different. Those are generally visible to anyone in the room who knows the room policies. But the client wants machine readable to disable UI etc

  214. Cynthia

    > Why not just assign permissions directly? Also I didn't mention this, there is no hierarchy to this

  215. Cynthia

    So in addition to granting permissions, you also have to write who that permission can't be applied to

  216. Cynthia

    Very carefully or they might just take over your entire room

  217. Cynthia

    > So if you want to assign to individual users instead of hats, you could. It would be cool if we had space-wide hats

  218. singpolyma

    We used to

  219. MattJ

    Like we have in the XSF space ;)

  220. singpolyma

    Indeed

  221. Cynthia

    Then we could have space-wide ACL

  222. Cynthia

    And who knows, the permission to join a specific room

  223. Cynthia

    > A significant amount of access control in XMPP is invisible. I gave cases where it's invisible to MUC clients, that are particularly problematic. Most of it are invisible, and getting worse

  224. Cynthia

    This is what I mean by the opacity of things

  225. Cynthia

    Kev: You think I could take notes from your draft?

  226. Kev

    Yes. Or send me your draft and I’ll work it into mine, either way.

  227. Cynthia

    Kev: I have a question about it

  228. snit

    read chat and i have some thoughts: * i agree with the idea that a permission system shouldn't inherently rely on hats, but i do think hats are the obvious default choice for a flexible system like this. it might be helpful to assign permissions to a role/affiliation directly, or specify a unique permission set for an individual user without making a whole new hat * matrix power levels are the worst possible way to do linear ordering. you essentially have to know beforehand how many possible roles you'll ever need, and you're just screwed if you ever need more than that. not to mention inserting a new role between two others requires adjusting the number of all other roles. an ordered list of elements would let you rearrange, insert, and delete easily with no problems * i'm not sure i agree with the idea that a user with a lower hat can't ever affect someone with a higher hat. obviously they shouldn't be able to change the higher hat's permissions, or like be able to add/remove that hat or ban users with it, but i'm sure other permissions will absolutely want or need to just work on anyone. not sure though * there's no need to guess who the boss is here if the client just shows you the ordering. discord, for example, will always put admins at the top

  229. Cynthia

    The everyone group is treated separately from other groups, what if there are no groups?

  230. snit

    > Kev: You think I could take notes from your draft? i think you might've already since i'm pretty sure you got the concept from me showing you his draft 🧌

  231. Cynthia

    What permissions do you give the users?

  232. Cynthia

    >> Kev: You think I could take notes from your draft? > i think you might've already since i'm pretty sure you got the concept from me showing you his draft 🧌 Yes, shush

  233. Cynthia

    > read chat and i have some thoughts: > * i agree with the idea that a permission system shouldn't inherently rely on hats, but i do think hats are the obvious default choice for a flexible system like this. it might be helpful to assign permissions to a role/affiliation directly, or specify a unique permission set for an individual user without making a whole new hat > * matrix power levels are the worst possible way to do linear ordering. you essentially have to know beforehand how many possible roles you'll ever need, and you're just screwed if you ever need more than that. not to mention inserting a new role between two others requires adjusting the number of all other roles. an ordered list of elements would let you rearrange, insert, and delete easily with no problems > * i'm not sure i agree with the idea that a user with a lower hat can't ever affect someone with a higher hat. obviously they shouldn't be able to change the higher hat's permissions, or like be able to add/remove that hat or ban users with it, but i'm sure other permissions will absolutely want or need to just work on anyone. not sure though > * there's no need to guess who the boss is here if the client just shows you the ordering. discord, for example, will always put admins at the top Anything that affects the state (not supplement) of another user or what they posted should require the lower vs higher check

  234. Cynthia

    So things like moderating messages, kicking, banning should require lower vs higher checks. But adding reactions or replying shouldn't (obviously)

  235. Cynthia

    Reactions and replies do not affect the state of a message, it simply adds onto it

  236. Cynthia

    If you get what I mewn

  237. Cynthia

    If you get what I mean

  238. snit

    i think there's an argument for allowing a lower-level hat to moderate messages from a higher-level user. i guess which permissions fall into which group would depend on the implementation? in that case it seems weird to specify anything in this regard in the document, unless its somehow encoded at the protocol-level as well (i.e. by being displayed when a user queries for permissions, so they know which ones they can apply to users higher than them, maybe?)

  239. snit

    > read chat and i have some thoughts: > * i agree with the idea that a permission system shouldn't inherently rely on hats, but i do think hats are the obvious default choice for a flexible system like this. it might be helpful to assign permissions to a role/affiliation directly, or specify a unique permission set for an individual user without making a whole new hat > * matrix power levels are the worst possible way to do linear ordering. you essentially have to know beforehand how many possible roles you'll ever need, and you're just screwed if you ever need more than that. not to mention inserting a new role between two others requires adjusting the number of all other roles. an ordered list of elements would let you rearrange, insert, and delete easily with no problems > * i'm not sure i agree with the idea that a user with a lower hat can't ever affect someone with a higher hat. obviously they shouldn't be able to change the higher hat's permissions, or like be able to add/remove that hat or ban users with it, but i'm sure other permissions will absolutely want or need to just work on anyone. not sure though > * there's no need to guess who the boss is here if the client just shows you the ordering. discord, for example, will always put admins at the top oh also forgot to mention i do agree with the idea that this should get a real server implementation before being submitted, since this feels something where it'll be impossible to know what we need from just theorising a lot

  240. lovetox

    sounds way to complicated for me, you should leave permissions that are granted by the MUC spec alone

  241. lovetox

    you dont want to create two competing permission schemes

  242. lovetox

    so kick/ban/voice/add members/change config, should be all out of scope, such basic permissions should always be in a MUC spec in my opinion

  243. snit

    sure, i think everyone agrees there shouldn't be two competing ways to do the same thing. in the beginning, at least, i'd assume ACLs would be used purely as an extension where roles/affiliation permissions aren't specified

  244. Cynthia

    > i think there's an argument for allowing a lower-level hat to moderate messages from a higher-level user. i guess which permissions fall into which group would depend on the implementation? in that case it seems weird to specify anything in this regard in the document, unless its somehow encoded at the protocol-level as well (i.e. by being displayed when a user queries for permissions, so they know which ones they can apply to users higher than them, maybe?) I mean it helps with separation of power

  245. Cynthia

    Imagine if a low-level user was able to moderate whatever message they wanted

  246. snit

    (though in my ideal world the use of roles/affiliation permissions would be phased out wherever possible in favour of hats, leaving them only for whatever ACL physically couldn't handle, like maybe the public vs private room distinction(?))

  247. Cynthia

    Or do the same with kicking or banning

  248. Cynthia

    >> read chat and i have some thoughts: >> * i agree with the idea that a permission system shouldn't inherently rely on hats, but i do think hats are the obvious default choice for a flexible system like this. it might be helpful to assign permissions to a role/affiliation directly, or specify a unique permission set for an individual user without making a whole new hat >> * matrix power levels are the worst possible way to do linear ordering. you essentially have to know beforehand how many possible roles you'll ever need, and you're just screwed if you ever need more than that. not to mention inserting a new role between two others requires adjusting the number of all other roles. an ordered list of elements would let you rearrange, insert, and delete easily with no problems >> * i'm not sure i agree with the idea that a user with a lower hat can't ever affect someone with a higher hat. obviously they shouldn't be able to change the higher hat's permissions, or like be able to add/remove that hat or ban users with it, but i'm sure other permissions will absolutely want or need to just work on anyone. not sure though >> * there's no need to guess who the boss is here if the client just shows you the ordering. discord, for example, will always put admins at the top > oh also forgot to mention i do agree with the idea that this should get a real server implementation before being submitted, since this feels something where it'll be impossible to know what we need from just theorising a lot I think this would be way too hard to use with just data forms

  249. Cynthia

    I was thinking of a list with elements that the user can drag around and such to rearrange the hierarchical order

  250. Cynthia

    That isn't in Data Form as of right now, so the closest is a tedious text (number) field per element that specifies the order

  251. Cynthia

    And errors if there's more than one of the same order number

  252. snit

    > Imagine if a low-level user was able to moderate whatever message they wanted well the argument i have here is that things like kicks, bans, configuring hats, and modifying a user's hats are all things that can change the effected user's permissions, whereas moderating a message generally won't. in that sense, i'd assume if you trust someone to moderate any messages, you'd trust them enough to moderate all of them, whereas anything that changes permissions is a _much_ bigger risk that you absolutely would want to be more restricted

  253. Cynthia

    Which is sad because I wanted this to be an adhoc

  254. snit

    > That isn't in Data Form as of right now, so the closest is a tedious text (number) field per element that specifies the order yeah this is what i was thinking as well, but i think its best to try and see what works best using existing stuff first, and only invent something new if we absolutely have to

  255. Cynthia

    Yes I would want it to only be a beta thing

  256. snit

    although i think a generic ordered list extension to data forms wouldn't be the worst thing to have :)

  257. Cynthia

    Or pre-release

  258. Cynthia

    Not something that people would actually use in production

  259. Cynthia

    (because of the bad UI)

  260. snit

    well yeah considering it'd be a community module for a specification that isn't even experimental, i think people would be well aware of that much

  261. singpolyma

    Cynthia: I've been baking your use case in my herd for a bit and I'm wondering if an option to restrict who can see real jid to owner (or owner/admin) would be sufficient? Then role moderator matches the desired situation

  262. Cynthia

    > Cynthia: I've been baking your use case in my herd for a bit and I'm wondering if an option to restrict who can see real jid to owner (or owner/admin) would be sufficient? Then role moderator matches the desired situation That would be cool

  263. Cynthia

    But the ACL is a separate thing

  264. Cynthia

    You can't really make a extension for every specific usecase

  265. Cynthia

    You can't really make a feature for every specific usecase

  266. singpolyma

    That's why we keep things generic, so you can write a module for every case instead of being stuck with a limited list 🙂

  267. Cynthia

    Enable this checkbox for something Cynthia told me to implement on a Thursday

  268. singpolyma

    Exactly

  269. Cynthia

    >> Imagine if a low-level user was able to moderate whatever message they wanted > well the argument i have here is that things like kicks, bans, configuring hats, and modifying a user's hats are all things that can change the effected user's permissions, whereas moderating a message generally won't. in that sense, i'd assume if you trust someone to moderate any messages, you'd trust them enough to moderate all of them, whereas anything that changes permissions is a _much_ bigger risk that you absolutely would want to be more restricted I think that would be up to the moderation implementation

  270. Cynthia

    I would definitely add convenience functions in Prosody like `has_permission` and `levels_compare`

  271. Cynthia

    I would definitely add convenience functions in Prosody like `has_permission` and `levels_compare` for other modules to use

  272. Cynthia

    If moderations were easily auditable, I think I'd be up to it

  273. snit

    > i think there's an argument for allowing a lower-level hat to moderate messages from a higher-level user. i guess which permissions fall into which group would depend on the implementation? in that case it seems weird to specify anything in this regard in the document, unless its somehow encoded at the protocol-level as well (i.e. by being displayed when a user queries for permissions, so they know which ones they can apply to users higher than them, maybe?) ^ i already said it'd be up to the implementation smh

  274. snit

    also send the doc when you can so i know properly what i'm actually yapping about

  275. Cynthia

    Alright