-
-
Notifications
You must be signed in to change notification settings - Fork 6.3k
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
Feature Request: Group Administration #828
Comments
Agree, would be nice to have this option |
Well groups aren't controlled by one administrator or the original creator, that's why everybody can invite new users, but you can only remove yourself from the group. |
Well, this makes groups almost useless. If a group is created and everyone can add more members without the possibility for the administrator to remove them, there will just be happy trolling, inviting "friends" for fun, messing around. That makes serious messaging in groups (i.e. for learning groups of about 10 people in university context) impossible. |
I guess that depends highly on the kind of people you interact with. I read (I think on moxies twitter), that they are about to release a detailed blog post about the group feature - so maybe we should wait until that happens and we know what is supported by the protocol and what isn't. |
@LOTP : We had to make group administration a distributed function, rather than having a single authority or single source of truth. That's the tradeoff for not having the server administer group membership. I would imagine that members of a group for a specific serious purpose wouldn't add members who weren't involved in that same project, but maybe you're correct. @Lindworm's suggestion of individual blocking or muting is probably the best we could do. |
@moxie0 : Maybe we could add both? The current system based on the sanity and discipline of every group member and the centralized modell? Maybe as "Open Group" and "Administrated Group"? |
@LOTP The only thing you can do in that case is create a new group without that person in it (or ask them to leave voluntarily). We might be able to add centralized group management in the future, but at the moment I don't want to put us in a position where we could get subpoenas for this information from law enforcement. |
@moxie0 And would it be possible to just give everyone the permission to kick people from the group ? Because for example, today I had a problem with my export/import and I wasn't able to leave the group, so we had to create an other one because I couldn't join the existing one since my phone number was already listed, couldn't leave it as I wasn't in it anymore and they couldn't kick me. Even stranger, when They sent some messages, I was able to read them but the group was like a ghost one. I could write in the group nor could I see group member or leave the group. |
Yeah, that doesn't sound like a good idea. Do you think the trolls in @LOTP's scenario would'nt kick you out of your own study group "for fun"? |
@Lindworm I don't really. You can hope that people are bit more mature than that. Anyway I'd much prefer being kicked (which everyone can reinvite you) than being forced to recreate a new group when the problem of keys happen. Though I understand that usually and if the export/import feature was working correctly it shouldn't be an issue. I still think we should add at least a warning for this export feature. |
@moxie0: it would be possible to store the group settings, including who is admin or not, locally. That would keep you safe from subpoenas because you don't have that information and still alows for group management by admins. It would not protect against someone who modified the TS source to make himself admin, but that's a lot less likely attack for trolls than simply not unsubscribing. |
Experiencing a difficult scenario right now which apparently hasn't been taken into account, where this design decision is a real problem. |
edit: I've since changed my mind about this solution. Updates further down the thread.
|
Ignoring a user instead of removing him from a group does not keep that user from reading messages (and responses to messages) in said group. Muting a user or a group does not really solve the problem, either. Wanting a certain user removed from a group does not usually mean that group members no longer want to hear from the group in general, nor does it necessarily mean that group members want the user muted in private conversations or other groups. Example given: a group of colleagues to discuss job related tasks. If one of the group members leaves the team or company, that person should no longer have access to the group, but people may still be friends with that person and keep communicating in private and in other, non work-related groups. Rebuildung large groups whenever a member is supposed to leave, is not a viable option. Why can the creator of a group not hold some key locally that identifies him as administrator of that group? Whoever has the key can alter the group. If someone without admin status wants to add a member, an amdin has to approve it. If the key is lost, the group can no longer be altered. However, if all users leave a group, it will be closed. So you could give up a group, if that happens. |
Greetings. Really not sure about the logic in posting to a closed thread... This is a complicated concept. I originally was going to just say, "me too," but that obviously went out of control. I agree with gith-account that a central admin should be the sole person responsible for the thread/group. The current solution of requiring members to unsubscribe or leave the group is not that great, but I understand the simplicity of it. As a safety, and to complicate things, there could be a mutiny feature, which would allow either a majority or a complete vote to "kick" the admin and assign a new admin. The admin would not be allowed to vote. This would also provide a backup if the admin loses their device, or just goes silent for an extended amount of time. In situations where there is an even amount of recipients or voters and a tie occurs, an automatic re-vote would take place with a notification that there was a tie, then if the tie remains, no change would take place regarding the admin. Any user, including the admin, could initiate a mutiny vote. (Would be good if there was also the ability for the admin to voluntarily step down and assign a successor.) All mutiny votes would require a single non-admin recipient be listed as the pending new admin. The admin would not be kicked from the group following a successful mutiny, they would simply be demoted. If the new admin decides to kick them, so be it. Something that would push into another feature request would be the ability to remotely destroy threads. If a device is lost or stolen, then the authentication to remotely kill the old instance would be the private key (from a backup). No backup, no remote kill. Related threads: #1764, #5713, #643 Group conversations would have to provide some type of secondary/tertiary key, unique to that thread. The necessary portion of the key to authenticate would need to be sent to the admin of the group. In a case of a mutiny, the keys would need to be regenerated by all members and passed to the new admin (the old admin would have bad keys and could be purged by the old admin when they next do a backup). This key would obviously also have to be included in any backup done by the active admin. (I am not sure how groups are currently encrypted ... using each recipients individual keys or by creating a new key ... if via a new key then a third key would be required for this feature.) I mention this remote kill feature because it is applicable to a group discussion in which sensitive information is shared, but a user is removed from the group, or a user loses their device. This is also applicable for all recipients of a group that are kicked from the group. The admin could then initiate a member validation check in which selected members optionally have their conversation history wiped, then are kicked from the group. I say, "optionally," to allow the admin the option to wipe their conversation or not, as sometimes it may be acceptable for the kicked recipient to retain the conversation history to that point. If it is not acceptable for them to retain it, then the admin would make that decision when kicking them. This could not be changed once the kick is completed. Related threads: #5455, #5594 Oh yeah, the other aspect of group administration which is a wee bit frustrating is that anyone can force anyone into a group. I would like for membership to be voluntary rather than mandatory. Well, as I am typing this I just realized I have only added people to a group and have never been added to a group ... so it may be voluntary currently. If not, see first two sentences of this paragraph. :) With regard to non-admin's making kick requests, these can realistically just be done directly, outside of the group thread. For instance, if USER1 wants to kick USER6, rather than create a new capability within the group administration for this type of request, USER1 could just directly communicate, outside of the group, with the ADMIN and say something like, "Yo, USER6 is a lame anchor, I recommend you kick them." FWIW, i may be open to publishing this post in hardback for an early release next summer .... |
@TimesEnemy That seems way too complex, not only to develop but also as a Signal user. Reading over my previous post, I think that's also waaaayy too complicated for Signal. Here's something simpler: Give each user the option to "fork" a group. @moxie0 @liliakai Would you consider this as an alternative to centralized group administration? UX:
Backend: It's exactly like creating a brand new group, with one twist: The "Group was forked" alert contains an ID number (presumably something like a signed hash of the group's current metadata). When you create the new group, your message includes the same ID number. That's how devices know how to import history. I'm not sure if we have a guarantee which message will arrive first. If there's no guarantee, it's easy enough to check for a matching ID upon receipt of either message and populate the history retroactively if necessary. Use cases:
Other pro: Doesn't add any new abuse cases, since it's really just a shortcut for existing functionality. |
@smichel17 interesting idea, could be a pragmatic solution to many problems. I wonder whether the github-y "fork" terminology would be understood by the user, though
should no longer happen due to #5318 |
Definitely not the best terminology; In addition to what you mentioned, it's not even really consistent with what it means to fork something here -- when you first fork something, it's identical to upstream, then diverges as you develop; with this feature, the new group gets changed right away. I used it because I knew it would be immediately understood by this crowd. If OWS is interested in iterating on this direction, we can do a brainstorm for better words.
There are still prominent error messages on desktop. That said, it's a good point that this is better addressed by improving how clients handle unregistration than introducing this as a workaround. I think the other use cases still stand. |
@moxie0 @liliakai @michaelkirk A version that adds even less complexity/change:
|
@smichel17 I fear with the signal server dropping messages when a device's queue is full, forking groups will lead to chaos and unknown groups on devices that are not always online. Do we have any information how WhatsApp handles it? |
@Trolldemorted I didn't consider that before. However, I don't think it will be a problem. Take the use cases I listed above, where
Group is forked (
This was already a problem, but it's still only
This one seems like it would be problematic (after all, you could get many groups popping up all over the place!), but actually is a net decrease in the size of someone's queue. Each fork is |
@\all Do you think this idea is good enough for me to open a new issue about it rather than continuing discussion in this closed issue? Any other concerns we should flesh out before doing so? |
@smichel17 You missunderstood, the queue won't be full due to the messages of the actual fork, but due to normal messages being sent. My Signal-Desktop's queue is full every weekend, so both messages and group updates are dropped. If the fork messages get dropped, my device will have received no group update from the new group, consider the old group valid, and receive messages from an unknown group (since the other members consider myself a valid member). Having a single or a set of administrators is the only way to go, i think. |
@Trolldemorted isn't that already a problem if you get added to a new group over the weekend? |
@smichel17 of course it is, that is why i would like it to not get worse. |
"I have a leaky faucet, so I'm going to use hand sanitizer instead of washing my hands." -> This is a decent stop-gap measure, but really, we should just fix the faucet so you can wash your hands again. "There's a serious drought, so I'm going to use hand sanitizer instead of washing my hands." -> This makes more sense as a long-term solution. Not necessarily one we're happy with, but it might be the best option available. @Trolldemorted That is to say, I think we should prefer a centralized solution if and only if your problem is unfixable. Otherwise, we should prefer this solution, but wait to implement until your issue is resolved. |
Well, i do not even know if it is considered a problem or as "working as intended", and i do not think there is an easy way to fix it either. But with potentially dropped messages, out-of-order delivery, and unstable clients the centralized way is the only one to go imho. Signal's groups are async or otherwise damaged every few weeks for me, adding more complexity that relies on stability is no way to go. |
edit: sorry, that was cheeky. What I'm saying is -- Imagine your issue didn't exist. Which solution do you prefer, the centralized or decentralized one? Now jump back to reality. If your previous answer was "decentralized", then our goal should be to first resolve your issue, then implement the decentralized solution. Just because groups are unstable right now doesn't mean centralized is the only way to go, period. |
On 05-10-2016 22:24, Trolldemorted wrote:
It does have serious privacy issues: we just learned yesterday that Open Met vriendelijke groet, Johan Wevers |
Going to ask this here just because I can (without opening a new bug). Is there any merit to automatically removing users from groups when they unregister (of course, they should leave any groups they belong to on their own, but people often forget)? |
@johanw666 with centralized i did not mean centralized on the OWS servers, but rather "one device is the admin device which is the single source of truth distributing snapshots/states with a logical clock"-centralized. |
Maybe you could implement some kind of threshold administration: When creating a group, you can set a threshold parameter |
FWIW this seriously limits the use of Signal for organizations -- it exacerbates things if there's ever a departure on bad terms. Any of the above solutions would work for this. Proposed solutions are obviously of limited value compared with code, but yet another possibility would be to implement the centralized group management and make it possible to create both kinds of groups: self-managed / un-subpoeana-able, and centrally-managed / subpoeana-able. The trade-offs make sense on an individual level -- if you want a centrally-managed group, it's probably easy to discover through other channels who's at your organization. I don't know if they make sense overall -- how easy is it to observe the existence of self-managed groups, and do they all become more endangered if less people are using them? |
@mrdomino : "centralized" does not have to be "registered at a server". It can also mean that one device is acknowledges as the "master" device in a group, and this function is preferably transferable. I know that defence against maliciously adapted clients would be hard, but if you are willing to take some risks there that point it would function just like WhatsApp groups but without the privacy issues of administration at the server. I do admit this would require much carefull design and discussion to prevent unmaintanable code crawling with ad-hoc patches ruining the design. |
|
Got a friend in a group who had her phone stolen in Colombia and the person who still the phone is now reading all the messages. It would be nice to have a way to remove that number from the group chat. |
Why not allow anyone to remove anyone in groups? Most groups are with friends, it's not like I can't throw a friend out of a place in real life. I'd just be anti-social, but allowing for it may sometimes be handy. |
just allow removing. No need for admins. everyone is admin. |
@FelixHen agree. If someone misbehaves and kicks out randomly, they'll be kicked out themself. People who have been kicked out accidentally can also easily be added back, so there's no danger to give everyone the power to remove others. |
The way it is now makes (somewhat) sense for a channel, not for a group of a couple of people all knowing each other. Just name what we have now a "channel" and introduce an "everybody is admin" group-form for smaller groups. |
As explained in the clean up issue (#7598) discussion about feature requests should take place in the forums. You can use the forum with your GitHub account. There's an existing thread there about improving Signal groups https://community.signalusers.org/t/improving-signal-group-chats/979 |
TextSecure groups lack the possibility to remove participants after they were added.
The text was updated successfully, but these errors were encountered: