After all, practically everyone is behind NAT these days, and it's so rare for an application to ask you to open a port in your firewall, most users probably don't know how to do it.
And early videoconferencing was famous for its unreliability - even simple things like people being able to join calls. Particularly as users might be behind restrictive firewalls on corporate networks or cell phone connections. Video calling that only works 95% of the time isn't good enough for things like job interviews :)
And users don't only expect one-to-one calls - everyone offers multi-party calls. If eight people want to watch Bob while he's talking, you've got to find eight videos' worth of upload bandwidth from somewhere.
And there are far more people trying to video call from battery-powered devices and metered connections than there were 15 years ago. If your competitors' apps uploads one video stream and yours uploads eight at once, users are going to notice the battery and data consumption.
And if you only have to test compatibility between your server and every version of your software, that's a much simpler task than testing compatibility of every possible n-way call between different versions of your software. Especially as you'll have to support Windows, OS X, Android and iPhone at the very least.
To me, those are fun things to solve.
The answer is to still have clients and servers, just that the servers deal with the grunt work of routing traffic and the clients just stream the data through a server.
Push vs pull, depending if you can get upnp to open a port to the client.
Skype was originally a peer to peer application, seemed pretty popular and while it still was p2p? It was written by the people who wrote Kazaa, remember that?
https://arstechnica.com/information-technology/2016/07/skype...
All of the performance improvements could have been done while maintaining the core of P2P, the ONLY reason to centralize it is to make it easy to tap, and harvest data from
Sure, but Skype adopted a peer-to-peer design back in 2005 or so when expectations were a lot lower - no smartphones, no group calls, no 1080p, no cross-platform, and if it's unreliable or needs some fiddling around to get it to work properly, such is life - because the competition was paying $$$ for an international phone call that wouldn't have any video.
These days if you want to compete with Skype and Google Hangouts and Discord, I expect my regular four-way video call between people using Windows, OS X, Ubuntu and ChromeOS to establish first-time with clear audio and video to all users.
Hence why VoIP like WebRTC encourages direct media rather than wasting a trip to a server, the server's peering can often be much worse than a path between two users on residential ISPs.
in home settings this step has been automated for something like a decade or more. One of UPnP or NAT-PMP are available on basically every router
Really we just need IPv6 where one app binds to one IP.
>If eight people want to watch Bob while he's talking, you've got to find eight videos' worth of upload bandwidth from somewhere. With p2p you may stream parts of the video from multiple clients
Meanwhile Zoom and Discord (who use servers) can achieve much greater so YMMV
That said p2p definitely has its advantages