Bananas: Cross-Platform screen sharing made simple
github.com
github.com
iceServers: [{ urls: 'stun:stun.l.google.com:19302' }],
- https://github.com/mistweaverco/bananas/blob/623016aea330e61...It's P2P, but saying there's no server infrastructure is objectively wrong.
As other users already stated, we need that to agree on connection details, but once that is done, the flow of your media data like audio, video and text is just between the two parties.
Also, you don't actually need NAT hole punching if you use fixed ports and port forwarding at the router level.
Even in p2p implementations that use kademlia, you need a way to figure out hole punching. In IPFS, while there is a decentralised hole punching method as an alternative to a centralised STUN server, it requires atleast one participant to not be behind a NAT, so for this purpose it's besides the point.
https://github.com/coturn/coturn
https://github.com/mycrl/turn-rs
Maybe there are some projects doing only stun - if that is enough?
This means that in the future you should always choose the one with the beefiest hardware and network connection as host.
Swapping who is presenting without the need to reconnect, + chat is also planned for V1.
I love emojis, I hate to be _that guy_ about this, but the emojis on the introduction page make it hard to read. Like, I don’t notmally associate the radar emoji with sharing or the twinkle emoji with features, so my brain read “screen monitor sharing radar dish”.
Apart from that, I often fall back to https://github.com/adamyordan/laplace when I need to share my screen. It works in the browser and has great image clarity. Sadly, the demo instance is down, so you need to host it yourself. Also, it can have trouble inside some enterprise network/firewall setups.
How would this be possible "without the need for an account or any server infrastructure" claimed by this project?
Running over WebRTC the web browser based person can communicate with the host person who is running a native WebRTC app.
The session initialization needs some kind of middle man (server) that lets both parties to agree on the session communication details. This per se doesn't really need any account.
The person who wants to host the session could generate a temporary one time auth token that they then communicate to their peer using whatever means (send a pigeon, use email, chat app) that lets the client to connect to their host.
I keep wondering whether this browser interface would be possible on a static website with all code running client-side.
If you want to take over and become the driver that would not be possible or with some real limitations (not being able to give access to your keyboard/mouse and also not having the ability to show the cursors of the participants)
Might sketch out a quick demo at web.getbananas.net this weekend.
This should be also OSS and everyone should be able to host their own version of that web Framework.
Just want to give it a shout out in this context, same tech and quite mature. Been using it successfully at work for remote pair programming and it feels like your looking at your co workers screen
This can be done in Bananas via remote Cursors.
Thinking of my workplace, the friction involved with using anything other than Zoom would be a non starter for most people.
Also if zoom goes bankrupt, zoom stops functioning. Bananas is not (that) reliant on servers (except for negotiation of communication details, currently using Google's servers for that, but you could also use your own).
Zoom also has your account data and media is transferred through their servers, which for some people is not a big deal, but for others it might.
We use Google Workspace at work and their meeting functionality, which is quite limited. Previously I used Office365, which wasn't any better.
I'm a big fan of Tuple, but that's limited to Windows and MacOS, which is a deal breaker for me (using Linux).
Also, they want to have your data, including account setup.
I'm not saying that Bananas never evolves into something with accounts and friend-lists, but that should be always fully optional and opt in and open source.
However on MacOS I'm getting lots of "need to give permission" popups for mic and screen share, and I'm giving permissions but it keeps popping those errors up
There seems to be an issue on MS Windows Server 22 as well, but Win10/11 confirmed to be fully functional.
I'll implement signing and notarizing in the next release.
Wanted to enroll today, but apple seems to have a maintenance window now.
Just sad that it is based on typescript.
I chose TS, because otherwise we had to put JSDoc everywhere.
Not saying that writing this completely in Rust without relying on WebRTC is completely out of reach, but Zig is also around and attractive as well.
I'm not specially fan of Rust, but here what annoys me is to have to use an electron based app...
But to be honest, that is not something I want to tackle alone. I need (code-)contributors for that. Basically someone who is well versed in MacOS native development and someone who is willing to take on native Windows stuff. I can take on the Linux part, but that's the minimum I would expect for it to work.
Next thing is getting signing certificates for MacOS and Windows.
MacOS costs USD99/y and Windows USD 350+/y or with the beta program USD 120/y
Which I'm willing to take on, if Bananas hits a nerve and people start really using it.