Separate out "edit own messages" and "delete own messages" permission in community permission settings

(#3454) Feature Under consideration community moderation

Current problem

Currently, the send messages permission covers send, edit, and delete, of messages sent in a channel.

Proposed change

Splitting out the "edit" and "delete" messages permissions as options in the Role settings in a community. This allows channels to be one-way write, so that things such as "edit trolling", sneaky behavior, or otherwise disruptive activities can be limited in either channels, categories, or an entire community. The clear technical reason for this is making existing ACLs as granular as possible on a technical level.

Additional information

The core motivation behind this is: there should be as granular controls as possible for features in community admin/owners' hands. Splitting out the "send/edit/delete message" ACL is a valid technical decision and a good one. This is also important for channels, categories, or communities where it is important that people "stand behind what they say". Maybe a one-time notice should be shown to the user when entering such a channel with such settings -- "note: you can not edit" or "note: you can not delete messages in this channel" -- similar to the "note: nsfw content" dialog that appears before opening an nsfw channel for the first time? additionally, could it be possible to have an "edit" and "delete" timer setting -- so that in case an admin wants a channel to have "5 minutes of edit permission" or "5 minutes of delete permission", it's possible? as in, a time after sending a message, that messages can be edited or deleted? from seconds to minutes to hours to days. One example is to again prevent edit trolling.

Details

Fluxer.com (the instance) , for example, would NOT need to enable this feature on its own instance if it does not desire, but it should be part of the codebase for other self-hosted instances to enable. There are many features that are possible on self-hosted instances, but not on the main Fluxer.com instance, for example. This is no different.

This is also useful for e.g. giveaway channels where users enter their 'ticket' in for a giveaway (e.g. answer to a problem, guess, etc) and shouldn't be able to edit their message after sending.

23 comments

Sign in with Fluxer to comment and vote.
Comment by @Shardion
RexSystem 1 vote originally by @Shardion on GitHub 3 replies
I suppose I should make my case here as well. I've often mentioned that it's a bad idea to add a feature which significantly reduces usability, for only a selection of people, who cannot control if the feature is implemented. I think this is a good example of such a feature, since:
  • It significantly reduces usability, by restricting the editing and deleting of messages
  • But, it only affects people who often revise or make mistakes with their messages (me), which may not be the same people who are at the levers to enable it
  • It is controlled by community administrators, and there is no way to get around it, beyond pleading to them to have it removed
Given the above, I believe that, in its current form, this should not be a feature which Fluxer offers. One of three explicitly-mentioned use cases is to prevent "edit trolling", which I do not see as an issue that Fluxer should attempt to solve. This is a social issue, and technical measures scarcely solve the underlying tensions that cause social issues, so, it should be the job of moderators to take reports, spot edit trolling, and maybe tell the problematic users to cut it out. The idea of a channel where users must "stand behind what they say" feels like a poor one. I don't see a point to it, beyond inviting harassment, and forcing any messages to permanently mark someone, short of having them delete their account. Giveaways, and other systems requiring one unchanging entry, would probably be a legitimate use for this, but, bots already exist to provide systems like this, so I don't think it will be worth the potential harm, and effort to implement. A one-time notice is easily ignored, and users may have seen and subsequently forgotten about it, even before the edit-blocking becomes relevant to them. It does not otherwise do anything to resolve the issues with edit-blocking, so I don't think it's sufficient to let this feature exist. Blocking edits and deletions also interacts poorly with the user's right to be forgotten, as it were. One of Fluxer's goals is to have better data privacy than Discord, and that comes with the option to delete anything, at any time. It would be possible to have users be unable to delete individual messages, only deleting them in bulk deletions of entire channels or communities, but, given the concept of adding a one-time notice, there is an implication that these channels are meant to be sectioned-off spaces, where users do not frequently post. I doubt that users will mind losing one or two other messages, if it gives them the option to delete something that they said, resulting in everyone using the bulk deletion route to circumvent the permission. I doubt that a time window which allows edits and deletions will help, since I personally edit and delete messages long after, say, five minutes have passed since their sending. This is often to correct typos, which is arguably not important, but also to update information in living messages, ones that are pinned or linked to in some form.
Comment by @fluxerhost
RexSystem 1 vote originally by @fluxerhost on GitHub OP
Many features can decrease usability, as usability is relative to the function of a space, which is determined by community admins. I think this should be a feature which Fluxer offers, even if it disables it instance-wide on the fluxer.com instance. Self-hosted instances should be able to use granular ACLs/permissions without needing to fork the code.
Comment by @Shardion
RexSystem 1 vote originally by @Shardion on GitHub
If Fluxer.com has to disable a feature, instance-wide, due to safety and privacy concerns, that isn't a very good argument in favor of giving the feature to other instances. Personally, I do not believe that platform features should be removable, purely because they technically can be, which is how I interpret your argument here. Do you have any more example use-cases for this feature, which might justify its inclusion?
Comment by @fluxerhost
RexSystem 1 vote originally by @fluxerhost on GitHub OP
There are no safety or privacy concerns with the feature. Fluxer.com has not stated so, and I don't see any. Granular ACLs are reason enough to have granular ACLs. It is widely accepted in the industry that granular ACLs are a good idea.
Comment by @Amarielique
RexSystem 1 vote originally by @Amarielique on GitHub 3 replies
The idea kinda sounds more like dictatorship, people should have the right to edit their own messages and delete them if they realize that they may have sounded mean. It sounds more like a feature that would cause cancel culture type bullying for small stuff, making sure people "stay behind what they say" is not really a normal thing. We are all human, and humans make mistakes. It's human to make mistakes. Some people use autocorrect and it can make stuff really awkward, or they immediatly realize after commenting that they shouldn't have wrote it and want to delete it... there are many reasons why someone should have the right to edit their own comment or delete it, i believe the issues mentioned are not valid enough to create a whole feature that could cause so many problems. Right now, I feel like fluxer has more important features to focus on anyway.
Comment by @fluxerhost
RexSystem 1 vote originally by @fluxerhost on GitHub OP
Mistakes are fine and people should understand that. An edit or delete timer would solve the autocorrect issue. I still think that community owners/administrators should be able to have granular feature/ACL control in their communities, without artificial technical barriers.
Comment by @Shardion
RexSystem 1 vote originally by @Shardion on GitHub
An "artificial technical barrier" is often left in, or placed intentionally, to prevent people from doing something that would be to someone's immediate or eventual detriment, like a Chesterton's fence. I feel that the ability to edit and delete messages would have already been a permission on Discord, like sending or attaching files, had it not been judged a bad idea, and intentionally excluded, making this an example of an intentionally-placed barrier, not a technical limitation.
Comment by @fluxerhost
RexSystem 1 vote originally by @fluxerhost on GitHub OP
I don't think Discord is a good judge of features
Comment by @ElliotJ09
RexSystem 1 vote originally by @ElliotJ09 on GitHub 1 reply
Would an edit slow mode work? I mean, if you want to stop the trolls completely? By splitting permissions you're really just removing the usability
Comment by @fluxerhost
RexSystem 1 vote originally by @fluxerhost on GitHub OP
"edit trolling" was just one example use case -- expanding ACL granularity is fundamentally good on a technical level, regardless of use case. An "edit slow mode" would work for that one use case, but that would address a symptom, not the root, of the issue (undifferentiated ACLs)
Comment by @Shardion
RexSystem 1 vote originally by @Shardion on GitHub 1 reply
On the idea of disabling this feature for Fluxer.com alone, I mentioned in Fluxer HQ that federation needs to be considered as well. When federation is implemented, Fluxer becomes a federated network, where every instance impacts the experience for all users. I'm mentioning federation here as a reminder for people watching the GitHub discussion.
Comment by @fluxerhost
RexSystem 1 vote originally by @fluxerhost on GitHub OP
Federation is a good consideration, but out of scope. This feature would not impact federation.
Comment by @vkyfox
RexSystem 1 vote originally by @vkyfox on GitHub
I think the discussion here is kind of misguided. As for the argument at hand: permissions are toggles. Not all of them are useful for all situations. I think what you are arguing against here is that the lever should not be used, and what is being argued for is that the lever should exist; which are related but not exactly the same. Let's take examples: There is a permission for reading messages. Is it useful? Most of the time, no, but if moderation wants to make a private channel, it's very important. There also exist a setting to limit how far back users can read messages in a community they joined. Is it useful to limit this? Mostly no, but surely it can be used in some instances. Heck there even is a toggle for being able to send messages. Sounds silly, until you need a read-only channel. Should all channels deny the ability to send and read messages? Obviously not, not even in most cases, not even in some cases. Only really exceptionally where and when it is needed. If community admins decide to remove the ability for @everyone to write in most channels, that would probably be a bad idea, and the users, dissatisfied and rightfully so, would probably be upset and leave. I think this discussed toggle is very much the same thing. It should not be used in most cases, and limits and aspect of chatting we have come to expect. Does it mean that it shouldn't exist? I don't think so. As for safety and privacy concern, as well as claims of oppressive behaviour, I think they are exaggerated. Nothing in removing the ability to edit or delete your messages prevents you from clarifying your point of view in subsequent messages, or correcting mistakes in the same way. Very much the same as day-to-day social behaviour, be it mails, letters, talking or whatnot. Most means of communication do not allow for retroactively changing your words, and most of them do okay as means of communication regardless. I personally don't think you need to be able to edit your messages to be understood. Again, I think removing the ability to edit or delete your messages should be very rare and limited to very specific use-cases; much like many other permissions; but while I agree that this toggle should most often not be used is not, in my opinion, an argument for the toggle not to exist.
Comment by @fluxerhost
RexSystem 1 vote originally by @fluxerhost on GitHub OP 8 replies

Example use case for this feature: running fluxer in a corporate setting, or for a law firm.

"Legal discovery" and evidence preservation for all messages must be preserved. If an employee leaves or is fired, they don't get to take their messages with them. If an employee is involved in a corporate investigation (e.g. harassment), the investigations team should be able to extract all messages sent by the user. Message immutability via expanded ACLs is a good first step to support such safety. It is more technically complex, but also a good idea, to preserve all edit and delete history, however it is also a good feature and easy to implement to add message immutability/making the ACLs around messages more granular.
Comment by @Shardion
RexSystem 1 vote originally by @Shardion on GitHub
This use-case probably interacts badly with Fluxer's existing data privacy features, so those will have to be considered as well, when determining if Fluxer should support it or not. I would personally wish for this to be out-of-scope, since I don't want edit- and deletion-blocking to exist in the federated network, but it might be a good basis for an (incompatible!) fork?
Comment by @fluxerhost
RexSystem 1 vote originally by @fluxerhost on GitHub OP
I don't think forking is the right suggestion for harmless features, especially expanding existing ACLs into granular ACLs. I don't think a corporate entity would federate with internet-discoverable instances anyway (probably only with other corporate instances), and expanded ACLs do not impact federation either way for non-corporate use caes. In the case of a corporate use case, "leave and delete my messages" from a community would probably have to be toggle-able at the instance level (new gh discussion), and even deleting an account would have to be toggle-able at the instance level as well (new gh discussion). Those, however, are separate feature adjustment discussions, i think -- this github discussion is focused on a portion of the features needed to support such a use case: expanding the ACL granularity for message actions (to split out edit and delete permissions).
Comment by @Shardion
RexSystem 1 vote originally by @Shardion on GitHub
We are discussing the potential harm of this feature right now. These features probably do not impact federation on a technical level, but they do impact the resulting federated Fluxer platform, since people can access communities within an instance through federation, being subject to its own configuration, as opposed to that of their home instance. I feel that it is against the goals of Fluxer to allow instances which disable data privacy features to exist in the federated network. It's important to note that, in federation, all features will be implemented eventually. It can't really be helped, so federation must be designed in a way to minimize the impact of instances which operate in an undesired or unintended way, and, to minimize the chances that an instance operator will attempt to do that. This is why I feel that having it as a toggle which Fluxer.com disables is not sufficient for this feature to exist. Not only would it require extra development work on Fluxer Platform AB's side, for a feature that they don't intend to use, and doesn't further their goals, but it also significantly lowers the friction involved to have this feature, from "fork Fluxer and add it yourself", to "go into the container and delete the line preventing federation without data privacy".
Comment by @fluxerhost
RexSystem 1 vote originally by @fluxerhost on GitHub OP
I don't think this feature has any harm. Expanded ACLs are always better than opaque ACLs. This feature does not impact privacy either. Channel visibility is still controlled by admins and roles, via ACLs. Perhaps only instances running the same code will be able to federate with each other - which is why it is important that this feature is treated seriously and part of the official codebase, even if unused on the main fluxer.com instance. I think it is sufficient for this feature to exist. The use case is a real one.
Comment by @Shardion
RexSystem 1 vote originally by @Shardion on GitHub
There is nothing that can enforce an instance to only be able to federate with other instances running the same code, and it doesn't happen automatically, even when incompatible changes are introduced. This is actually why I suggested a fork! If such a fork existed, say, "Business Fluxer", and was made intentionally incompatible, maybe by ripping out the federation code entirely, then the legal use-case could have its own Fluxer, without the data privacy features for compliance reasons, and personal users on the federated network get to keep their data privacy in the safest way possible.
Comment by @fluxerhost
RexSystem 1 vote originally by @fluxerhost on GitHub OP
I think suggesting a fork is not the right move for anyone involved and that a fork for expanded ACLs a waste of effort. I think this is a valid feature to exist in the main Fluxer codebase. Again, this feature does not impact privacy or safety negatively.
Comment by @fluxerhost
RexSystem 1 vote originally by @fluxerhost on GitHub OP
To clarify about the potential privacy and "harm" concerns: The concerns listed about "harm" are both theoretical and potential, not actual or clearly listed. Any administrator can use any feature in a harmful way - such is the way of any technology. How a person uses any technology is not in the realm of consideration of a technical feature such as granular ACLs. The concerns listed about privacy are also not relevant to this feature - not only would the feature be toggle-able at the instance level, and even further, would be toggle-able at the community, and ultimately at the ACL level, as proposed here, per role or channel (like other permissions), but also, the "right to be forgotten" is covered by two features already: the community-leave-and-delete-all-messages feature, which would be unaltered by this feature, or the delete-my-account-and-all-data feature, which would also be unaltered by this specific feature request, as proposed. I think vkyfox explained about safety and privacy concerns well as well: https://github.com/orgs/fluxerapp/discussions/3200#discussioncomment-18748231
Comment by @Shardion
RexSystem 1 vote originally by @Shardion on GitHub
I believe that this is a feature which should not be considered on its technical merits alone. It's true that there is probably not much obstructing the implementation, and that it could theoretically be useful to someone for a legitimate purpose. If you look at it like that, of course it'd be a good thing, but technology does not exist in isolation of social realities, and it is easy to misuse it, accidentally or intentionally. This particular feature has a few, niche, listed use-cases, most of which seem to be legitimate, but also a lot of ways in which it can be misused...
  • Create an environment that encourages harassment (the "stand by what you say" idea)
  • Prevent users from burying things, or otherwise leaving them in the past
  • Make it more difficult for users to leave a community, by forcing them to take all or none of their messages with them
  • Admins enable because they, somehow, like it better that way
And, the original concern, of making the platform significantly less usable for a subset of people, still stands. I don't think any of the provided remediations for these issues are effective.
  • A scare screen would be in opposition to regular use for a channel. Either the scare screen is reduced to the point of ineffectiveness, or it is sufficiently annoying to obstruct general discussion. Given the issue of alarm fatigue, I don't think there can be a good middle-ground in designing a scare screen like this, but there hasn't been any user testing, so that might not be true.
    • An alternate design might, alongside a scare screen, have a little notice in the bottom right, like the slowmode indicator. If you do want to do user testing, try adding that...!
  • Edit slowmode either doesn't do anything to stop edit trolling, if you can edit once after sending a message, or, if you can't, obstructs significant real editing usage, like typo corrections and adding context. It also doesn't do anything to solve edit trolling if the slowmode duration is too short, since you can just wait, say, one minute, then edit the message like normal.
  • Edit windows are probably the best idea here, but there are still valid reasons to edit a message, say, five minutes after it's been sent. It might be a low-traffic channel with long messages, like many of the topic channels in Fluxer Labs, or it might be a living message, pinned or linked to, which would benefit from being updated long after its initial sending.
  • Making it exclusive to self-hosted instances has been discussed at length, and I won't bother to repeat it here. Everything that Fluxer (software) can do becomes a part of Fluxer (platform), as soon as federation is involved, so I don't think this is sufficient to stop misuse, and Fluxer Platform AB is at least partially responsible for what features they allow on Fluxer (platform). If Fluxer.com were to choose not to enable this feature, that means there is a significant reason behind the choice, as the default choice is lower-friction, and gives broader access to more features of Fluxer (software). Nobody has posed objections which are not related to safety or data privacy, so it is a rather safe to assume that those are the reasons.
  • Sure, you can choose to leave communities and instances that enable this, but that means you're being excluded from them. It would be best to not hand out access to levers that exclude people. Some people would pull it for fun, others would pull it out of malice, but you know that someone is definitely going to pull it.
I also do not accept that the ability to disable message deletion is OK, purely because you can choose to leave a community and delete all of your messages. That adds a lot of friction to what should be a simple action of deleting a single message, which ultimately requires a choice by the user: assuming they can even rejoin the community, do they value getting rid of that one message more than all of the messages they've sent there? You might be surprised by how little attachment users have to their messages, and I, personally, would probably choose to get rid of everything. If anyone chooses to do that, the purpose of the permission has been defeated, and you lost context in previous conversations, and records of real participation in your community. I ultimately believe that these features go against one of Fluxer's goals, to enable easier data privacy for all users. It should be as easy as possible to control exactly what data you have on Fluxer, who can see that data, and what the data they see is. The ability to disable editing or deletion in a channel would, completely unnecessarily, make it more difficult, in service of use-cases that are either already covered by existing solutions, or already obstructed by non-optional features of Fluxer. There is also the potential (the only thing there can be, since the feature doesn't exist yet) for harm, and a significant impact to usability. I have raised the alternative solution, of a Fluxer fork, "Business Fluxer", which adds the feature, and removes support for federation with standard Fluxer, in a way that is not trivially reversible. Ideally, it would be maintained by businesses that require it, or even officially, by Fluxer Platform AB. This fork would already be necessary to use Fluxer in a business context, as Fluxer is making a point of having data privacy features, like the ability to delete your account and all messages that it has ever sent, and these features are always enabled, for all users, on all instances. This would remain true, and unaffected by the presence or absence of editing and deletion permissions, unless Fluxer goes back on this, and makes those features optional, which I believe would significantly ease abuse on a federated network. I don't think the good outweighs the bad here, and being reductive about the bad won't help. You do not have my support.