element-hq / element-web

A glossy Matrix collaboration client for the web.
https://element.io
GNU Affero General Public License v3.0
11.19k stars 2k forks source link

Push-to-talk in video/voice conferencing #5993

Open BloodyIron opened 6 years ago

BloodyIron commented 6 years ago

Whether it's Freeswitch or Jitsi (AFAIK Freeswitch is on the way out), having Push-To-Talk for channel chat would be seriously appreciated! Right now if you have a channel with a whole lot of people wanting to talk, it can turn into a really big mess.

Also, this PTT feature would need to work when the "app" doesn't have focus. I'm thinking this may not work unless the "desktop" version is used, but I'm not 100% up to speed with browser features like this.

It might also be a good idea to get a keyboard bind to toggle self-muting of your own microphone. Let's say, if your fat cat knocks a glass of water all over your desk, oh noes!

anoadragon453 commented 5 years ago

Shouldn't need to, the process is just running npm install like you normally do, but then going into node_modules/iohook and running npm run build.

anoadragon453 commented 5 years ago

Scalar has just released a new build which includes the PTT patches, which means one no longer needs to run their own integrations manager to get this all working, they can just use the default in Riot.

Should make testing the above PRs much easier for everyone involved.

BloodyIron commented 5 years ago

@anoadragon453 I'm probably going to forget that in the future, would that be documented anywhere? So npm install pulls the iohook source too? And the build second step is on the local files?

As for integrations manager, was that necessary for jitsi before or what? I thought that part might still be required?

anoadragon453 commented 5 years ago

@BloodyIron Haha, we'll definitely provide instructions in our repo, but if you like the build instructions are also mentioned in iohook's documentation.

As for integrations manager, was that necessary for jitsi before or what? I thought that part might still be required?

An integrations manager is required, yes. But now you can just use the one Riot uses by default which has the new Jitsi patches integrated. The latest dimension is also supported as well.

BloodyIron commented 5 years ago

oh btw, did you test PTT with screen sharing at all? does the behaviour change there at all?

So Riot has Jitsi baked in now? (next build release?) so it won't need to load the "widget" when starting/stopping chat, or what? How do you tell it what Jitsi user to use? (self-hosted)

Dimension, the integration server? not quite seeing why you mention it's supported, am I missing something?

anoadragon453 commented 5 years ago

@BloodyIron It should work regardless of screen sharing mode enabled or not.

So Riot has Jitsi baked in now? (next build release?) so it won't need to load the "widget" when starting/stopping chat, or what? How do you tell it what Jitsi user to use? (self-hosted)

Mmm, no not really baked in yet, although @Half-Shot has expressed some interest in working on this, and it would be fairly trivial to actually get some of the Riot UI to react to what's happening in the Jitsi call. For the moment the widget is still required though.

How do you tell it what Jitsi user to use?

You mean Jitsi server? (Username can just be set by double clicking on your square in the top right) For the server, go into Riot's config.json and you can set the Jitsi URL using the integrations_jitsi_widget_url key. The default is https://scalar.vector.im/api/widgets/jitsi.html.

Dimension, the integration server? not quite seeing why you mention it's supported, am I missing something?

Some people use Dimension as it includes some more features than Scalar. So for those people, PTT will also work :)

BloodyIron commented 5 years ago

Hah yeah I meant to put Jitsi Server, not User. I just wasn't sure if these changes meant Jitsi server declaration changed in some way, as you mentioned [not needing] an integration server by default?

I haven't quite gotten to the point of identifying which integration server I'll use, but I suspect it may be Dimension. Haven't vetted. Good to know this isn't a constraint! :D

Any idea how soon before this hard work of yours could hit public release? :)

anoadragon453 commented 5 years ago

So while the PR for this has been out for a while, getting it merged has been blocked on getting a Windows VM up and running and being able to automate builds through it. While something that can likely be done in a few days, the team's time is pretty strapped right now and would rather be spending what time we have on Riot's redesign than on wrangling Window's many awful command line environments.

That said, we have made progress on this this week. We've set up a stripped-down Windows running headless on our build server. We've got an ssh server on it and have it hooked up to our Jenkins infrastructure. At the moment the only blocker has been getting a suitable bash environment for running Riot's setup scripts or just sucking it up and converting them to batch. (We're using git-bash (MINGW32) to execute things, but running stuff in there triggered from a native Windows cmd or Powershell doesn't really work too well, any advice on a less hacky solution would be appreciated).

So that's our current progress - tantalizingly close, and just working on it where we have a spare 30m or so. So if anyone does any advice for getting a proper bash shell that can be ssh'd into and doesn't involve Windows Subsystem Linux, that'd be highly appreciated!

Otherwise we'll probably get it all working in the next few days anyways :) Watch this space!

JoshStrobl commented 5 years ago

@anoadragon453 That's fantastic to hear and thanks for the update. Really looking forward to being able to test out PTT :+1:

BloodyIron commented 5 years ago

@anoadragon453 cygwin?

anoadragon453 commented 5 years ago

We ended up just throwing it on a faster machine and installed WSL.

But now we're hitting this bug and builds are timing out :/

anoadragon453 commented 5 years ago

Build time outs fixed by reducing VirtualBox CPUs to 1 which still complete builds in a reasonable amount of time.

Slowly but surely!

BloodyIron commented 5 years ago

@anoadragon453 how on earth does limiting the CPU to 1 solve build timeouts? That's weird man! :O

But glad to hear progress! :DDD

anoadragon453 commented 5 years ago

@anoadragon453 how on earth does limiting the CPU to 1 solve build timeouts? That's weird man! :O

windozzzzz

anoadragon453 commented 5 years ago

Huzzah! Hot on the heels of our FOSDEM stuff we finally got Windows to play nice! We only hit numerous npm bugs (switched to yarn) and a bug in the ecosystem but all is good now and we have working Windows builds from Windows!

At this point I just need to update and rebase my PTT PR and then, pending review, you should expect to see it in the client shortly!

anoadragon453 commented 5 years ago

Hey, thanks for asking. Currently progress is blocked on https://github.com/wilix-team/iohook/issues/151, aka getting the underlying native node module working on Windows with Electron v4. Everything is good to go on the MacOS/Linux side.

I've tried a couple times to get to the bottom of it but to no avail (C++ isn't my main language). If anyone is familiar with C++ and its build chain if they'd like to take a shot at fixing that it would be highly appreciated!

BloodyIron commented 5 years ago

Any chance the MacOS/Linux users can get this first? ;D

anoadragon453 commented 5 years ago

Was thinking about it but last thing we want to do is split our codebase on a platform-by-platform basis :)

alien2003 commented 5 years ago

Seems like it is fixed

anoadragon453 commented 5 years ago

@alien2003 Indeed thanks, though I'm getting another bug on our Windows dev box. Going to remake the folder and see how it does.

alien2003 commented 5 years ago

Hype... Finally we will ditch Discord

BloodyIron commented 5 years ago

Pssst any news on this? ;)))

anoadragon453 commented 5 years ago

Well I spent about 6 hours on this just now and have hit a brick wall on compiling iohook on Windows again. Running yarn run build aka cmake-js spits out There is no Visual C++ compiler installed. Install Visual C++ Build Toolset or Visual Studio. It does seem to be 100% installed though, and the message persists even after reboots.

If anyone can figure out how to build iohook on Windows atm please let me know. I've left build instructions here: https://github.com/anoadragon453/riot-web/blob/anoa/jitsi_ptt/docs/native_node_modules.md#compiling-iohook

Here are my notes for the current session for installing from a fresh Windows install:

Turn off windows defender and firewall etc
Install chocolately: get npm, yarn, git, python2, visual C++ Build Tools 2017
Open Powershell
Clone iohook
yarn
yarn run build
Error :(

Now, even if we do get it building we'll likely run into this showstopper: https://github.com/wilix-team/iohook/issues/167

I think tomorrow I'll just change the PRs to not do PTT if on Windows because it's been a blocker for far too long and everytime something on Windows is fixed something else comes up again :')

BloodyIron commented 5 years ago

@anoadragon453 maybe your PATH value was missing something?

skylord123 commented 5 years ago

@anoadragon453 definitely sounds like a path issue of some sort.

Check out "Setting up your command-line environment" under this link: https://devblogs.microsoft.com/cppblog/finding-the-visual-c-compiler-tools-in-visual-studio-2017/

I use windows the most (sadly) and so I am a bit sad to hear about the showstoppers. I'm fine with forgetting about Windows for now as long as it isn't put off for a very long time (of course that isn't entirely in our control if the upstream issues aren't resolved).

Thanks for all the time you have spent on this. I definitely appreciate it :)

BloodyIron commented 5 years ago

I think it's in everyone's best interests if we get this feature sorted out for everyone. If not for this feature, at least for streamlining the build process for other things too.

W4rH0rse commented 5 years ago

PTT is absolutely critical to alot of gamers who want to move away from Discord, and most of them are on Windows. I'd love to use Riot as a replacement for Discord, but until PTT is supported I cant.

ghost commented 5 years ago

PTT is absolutely critical to alot of gamers who want to move away from Discord, and most of them are on Windows. I'd love to use Riot as a replacement for Discord, but until PTT is supported I cant.

Ditto, I have friends who've made the move from TS to Discord and now want to move to riot but PTT is holding them back. We've programmed many of mouth breathing food chewers to use PTT and without it would be a nightmare. I wish I could help in some way with the coding on this but with so many other side projects I just don't have the time. I wish y'all the best of luck and for a speedy resolution.

ImGunter commented 5 years ago

Any updates on where we are with this feature?

anoadragon453 commented 5 years ago

It's currently been blocked behind other tasks, but as Matrix 1.0 has just released and all the work that has gone with that, I intend to work on this feature very soon.

ImGunter commented 5 years ago

Yay that's great to hear i can't wait for that feature to come out please keep us updated and thank you for your great work!

anoadragon453 commented 5 years ago

Thanks, I will :)

alien2003 commented 5 years ago

Not directly related but seems like a good addition to Jitsi PTT feature https://github.com/Johni0702/mumble-web

ImGunter commented 5 years ago

Now that we have reactions and editable messages is push to talk next on the road map?

anoadragon453 commented 5 years ago

Not directly related but seems like a good addition to Jitsi PTT feature https://github.com/Johni0702/mumble-web

Oh, that already has instructions for being an integration manager widget, interesting!

As long as it has support for HTML5 cross-document messaging so that we can give it commands from the web interface it should be quite easy to integrate.

anoadragon453 commented 5 years ago

Now that we have reactions and editable messages is push to talk next on the road map?

It's getting close :)

BloodyIron commented 5 years ago

I'm switching to riot AWAY from Mumble :( Reliable tech, but their devs have dragged their heels (and effectively halted) for well over 7 years now.

ImGunter commented 5 years ago

Same bloody mumble is such a great program with great potential but the devs don’t seem to have the time anymore.

alien2003 commented 5 years ago

Oh, that already has instructions for being an integration manager widget, interesting!

Yes. I tried it for my Minecraft server room, works well but it's not persistent widget by default. The only way to make it persistent is to set it to "Jitsi" type and it breaks widget in mobile apps

BloodyIron commented 5 years ago

Any word on this?

anoadragon453 commented 5 years ago

Sort of blocked behind not working on Windows. I don't think we want to release a feature that only supports a subset of our supported platforms. Windows may work now though, I haven't checked in a few months :thinking:

BloodyIron commented 5 years ago

@anoadragon453 is it the supporting library is limited on Windows, or what? I know this is going to be a FR that won't go away, and I'm not talking about my stubbornness, I'm talking about everyone else's too XD

anoadragon453 commented 5 years ago

FR?

It's good ol' iohook.

BloodyIron commented 5 years ago

Feature Request.

anoadragon453 commented 5 years ago

Feature Request.

ahh

remram44 commented 5 years ago

Please be considerate, there are dozens of people watching this issue and this repository to be notified of progress, and you're spamming all of them every time you add an unrelated comment 😉 If you push the devs to unsubscribe from this issue you'll never get your feature...

BloodyIron commented 5 years ago

The last update was Jul 22nd, I would not call this "spam"... -.-

skylord123 commented 5 years ago

@remram44 It's not spam. It was a valid question and answer and wasn't off topic. People care about this issue and want to continually know what is holding it up and check if the issue has been resolved.

I thought the question and answer was helpful as someone subscribed to this issue.

edit: also the dev working on this issue was one of the people you said was "spamming" so I don't think we need to worry about other devs unsubscribing and not solving the issue.

Mhowser commented 5 years ago

Any update to this?

anoadragon453 commented 5 years ago

Any update to this?

We still don't have the build infrastructure to produce Windows builds on a Windows box, but I imagine this will change very shortly as we have a number of native node modules coming to Riot Desktop (namely enabling Push-To-Talk and searching in encrypted rooms).

So be on the lookup for that (very hopefully) soon!

Edit: In the meantime I'll update my PR to latest riot develop.