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

Investigate a possible power-level grace period. #901

Open
Half-Shot opened this issue Dec 1, 2019 · 0 comments
Open

Investigate a possible power-level grace period. #901

Half-Shot opened this issue Dec 1, 2019 · 0 comments

Comments

@Half-Shot
Copy link
Contributor

I've been thinking about possible solutions to #518, and have so far come up with two solutions.

The problem is that the first joined user to an empty IRC channel will be marked as an operator. If a Matrix user is (re)connected to a IRC channel without any real IRC users in it, then that Matrix user will be opped. For freenode at least, ChanServ will swoop in to correct this after some time by de-opping the user.
In Matrix, the damage can still be done -- temporal OPs of the wrong user can sometimes stick if the corrective OP doesn't apply to the room, and it's quite scary since Matrix doesn't have the same semantics.

The first solution is to ensure that a user is picked as a 'frontier' each time on reconnection, and that user should be someone who is already OPed in the room. This solution is problematic as it requires us to do a state request on the room in question, which is expensive during startup. We could also store the frontier user in the datastore, but could easily become de-synced from Matrix.

The second solution may be to just have a given period of time where a power-level is held until a timer has elapsed and it is applied to the room. The power level change may be invalidated by another mode change in the room, if the change conflicts. The upside to this is that it should hopefully fix this specific issue, and the downside is that PL changes will no longer be instant. We may only need to apply this grace period to channels where we have no knowledge of the membership.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant