mumble-voip / mumble

Mumble is an open-source, low-latency, high quality voice chat software.
https://www.mumble.info
Other
6.26k stars 1.1k forks source link

Option to auto-mute when another person is recording #4591

Open ancarda opened 3 years ago

ancarda commented 3 years ago

Context When in a large channel with light-to-no-moderation, sometimes users will start recording without asking if anyone doesn't want to be recorded. When this happens, I typically mute myself / let go of the push-to-talk button.

Describe the feature you have in mind I would like an option somewhere in the settings to have Mumble auto-mute whenever someone in the channel begins recording.

Describe alternatives you've considered I'm not aware of any way to automate Mumble to do this, so I have been doing it manually.

Additional context None.

Krzmbrzl commented 3 years ago

Yep that seems like a useful thing to do. Though by default it shouldn't be active as it could potentially cause confusion if users are not aware that they have this feature enabled :point_up:

The changes required for this should be pretty minimal. Any chance you want to give it a go yourself? :)

trudnorx commented 3 years ago

Recording is something that is done client side for client side purposes only. The only way you can know if someone is recording is if the other person decides to tell you or if their client program is programmed to tell you.

However why should their client program be programmed to tell you? It could be conceived of as a violation of user freedom or privacy for the other person to be forced to tell you they are recording you.

You could argue that recording others without their consent is a violation of their privacy or freedom. However, it is a complex issue, it could be used both for good or bad depending on the situation. Probably the relevant laws also vary by jurisdiction, in some places it may be legal and in others not.

But in any case why should it be Mumble's place to control this? Even if Mumble has a recording feature, it's not really something Mumble can control. How would you know if someone decides to do the recording with another program or with real life audio equipment? There is no way to know.

In general the principles of software freedom say that a program should serve the user, the user should know what the program is doing, the user should be allowed to do whatever he wants with the program, edit the code, etc. Auto-telling others that recording is being used would classify as a classical anti-user anti-feature.

Implementing such an anti-feature in a publicly available program like this with publicly available source code is an exercise in futility since obviously it could not be controlled, and if it could, it would be a rampantly anti-user, anti-freedom feature.

I have, however, never recorded someone without their permission in Mumble. Nor do I support this feature being used for any bad purpose.

Do IRC clients announce others that you are logging the room? Of course not.

Someone could record someone without permission in order to violate their privacy.

But someone could also record someone without permission to expose abuse and wrongful behavior.

Like with any tool: It can be used for good or bad.

To ban the tool, to restrain it, to do things like forced announcements that the tool is being used, is a pointless exercise. It will not necessarily impede bad behavior, it may impede good behavior, and it conflicts with principles of software that should serve the user.

Krzmbrzl commented 3 years ago

Doesn't Mumble already broadcast if a user starts recording using the Mumble client? :thinking:

mk-pmb commented 3 years ago

@Krzmbrzl In v1.3.3 in the notifications settings there's an entry "User recording state changed". When I record using the mumble client, all connected clients see a red circled icon next to my name in the users list and get a log entry that I start/stop recording. (The log message to self is anonymous, others see my nickname.)

Of course it's good that mumble does not (and it never should) try to spy on other programs for an attempt to detect whether other programs may be recording. It would be error-prone and futile.

I share @trudnorx's criticism about privacy though. Mumble client's internal recording feature did not sufficiently inform me before use, that other users would be notified about my action. There should be a disclaimer (ideally at the bottom of the recording dialog) until I click "Dismiss" or sth., that tells me "When you start or stop recording using mumble, other users will be notified so they can adapt their behavior if they desire." With this information, anyone who uses this feature can be considered to have explicitly chosen this publicly-visible method of recording exactly for this benefit, that others can adapt their behavior. And of course we should help them adapt automatically.

Considering our focus on gaming, we migt be able to help some law n00bs by adding to the disclaimer: "In some jurisdictions there may be restrictions on the act of recording itself, and/or the use of the recorded audio." Whether it helps them avoid breaking a law accidentially, or helps them feel extra gangster, is up to them.

Krzmbrzl commented 3 years ago

Personally I don't see a problem in not explicitly telling users that recording will notify other users since the act of recording itself is also a privacy critical task (for the other users in this case). Adding a disclaimer seems fine to me though, as making something like this more explicit is usually always better :+1: We'd be happy to accept a PR for that :)

I think the law disclaimer should read something like "Note that recording other users should never be done without their consent. Doing so is probably illegal, depending on your country's jurisdiction." Aka: Make it more clear that it not being illegal is probably uncommon and even if this is the case, it's not a good idea to do so nonetheless.

ancarda commented 3 years ago

Well, I got as far as adding the checkbox into the settings. I had some trouble hooking into the event for when a user is recording -- I think my lack of C++ and Qt knowledge is making it a little hard to proceed 😞

I've been learning C++ and Qt in my spare time, but perhaps someone could pair program with me on IRC?

Krzmbrzl commented 3 years ago

@ancarda you can join our IRC dev-channel (#mumble-dev on Freenode, or simply via Matrix: https://matrix.to/#/!VNUpYnUPdhTAqagvUu:matrix.org?via=matrix.org&via=ohea.xyz) You can also create a WIP / draft pull request so we can give feedback on the code directly :point_up:

mk-pmb commented 3 years ago

Doing so is probably illegal

I'd have second thoughts about hosting our source code in my own repo if it contains such over-generalized strong opinions. There's a good reason why some countries limit law advice to people specially educated for the purpose. Wording it "probably", to me seems way too convinced for a shot in the dark.

Krzmbrzl commented 3 years ago

We can't make this too long and if we just state that this is perhaps illegal, I think we might as well leave it out as imo that won't have the desired effect on the target audience that you mentioned :shrug: But I guess in the end I don't mind either way and would accept it in the way that it is contained in any potential PR.

mk-pmb commented 3 years ago

Suggestion based on our IRC discussion: "In many countries it's usually illegal to secretly record people." It's a short wording that also circumvents delving into the scale between mere knowledge and the various flavors of consent.

TerryGeng commented 3 years ago

Hmmm... As for the auto-muting feature itself, it sounds like a very specific feature designed for a very specific group of users. I'm not even sure if it should be included in the official binary. I have noticed that we have a plugin platform #3743 waiting for being merged. Would it look better if a plugin that can auto-mute users being designed, rather than directly cook this feature in the official release?

Also, concerning recording others privately, AFAIK Zoom does display a "Recording" icon by the side of users who are recording. I think it should be a tradition of voice chat software to notify users if someone is recording. But anyway, people can just use pymumble to write a simple bot that secretly records everything or just put a hardware tape recorder against the speaker, whatever. There's no way one can really prevent it.

Krzmbrzl commented 3 years ago

Given that recording is cooked into the client itself, I would consider it to be logical to also cook this feature into the client rather than a plugin. But I also wouldn't mind if this ended up being a plugin (I mean I am happy about any plugin that gets written with my new framework ^^)

juanrodl commented 2 years ago

@Krzmbrzl I was planning to work on this issue for my first Open Source contribution. Do you have any tips as to where to start?

Krzmbrzl commented 2 years ago

Code-wise a good read at the beginning should be https://github.com/mumble-voip/mumble/blob/master/docs/dev/TheMumbleSourceCode.md

Then more specific to this issue in particular: The recording state is broadcast by the server (already - you don't have to implement that) as part of the UserState Protobuf message: https://github.com/mumble-voip/mumble/blob/d55bb99ce1ba604a82ab1fc4d7191cebed78d169/src/Mumble.proto#L222 which is handled here: https://github.com/mumble-voip/mumble/blob/d55bb99ce1ba604a82ab1fc4d7191cebed78d169/src/mumble/Messages.cpp#L448-L451 Triggering the local user's mute status can be done via https://github.com/mumble-voip/mumble/blob/d55bb99ce1ba604a82ab1fc4d7191cebed78d169/src/mumble/MainWindow.h#L331-L334

In case you are not yet familiar with GitHub as a platform, you might also want to have a look at this post.

Let me know if you have any further questions

TerryGeng commented 2 years ago

🤔 Again, I feel like we shouldn't stuff Mumble with all kinds of random features... This one sounds too specific and not sure it would be helpful for a lot of other people IMO.

mk-pmb commented 2 years ago

I'd prefer a plugin for the muting as well.

Krzmbrzl commented 2 years ago

@juanrodl I'll leave the decision up to you. Since the recording feature is already part of Mumble itself, I don't see a problem with integrating this feature into Mumble itself as well. However, it is also possible to implement this as a plugin (see also https://github.com/mumble-voip/mumble/blob/master/docs/dev/plugins/README.md). In order to implement it, we'd have to extend the current plugin API a bit with an additional callback function that is triggered once someone changes their recording state. But that shouldn't be too hard to do either.

mk-pmb commented 2 years ago

we'd have to extend the current plugin API a bit with an additional callback function that is triggered once someone changes their recording state.

This seems desirable anyways.