Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Skype, but properly peer-to-peer?
109 points by ColinWright on Dec 28, 2013 | hide | past | favorite | 76 comments
I've just had to talk my 80-year-old father through setting up Skype on his new computer. For some reason he had to create a Microsoft account, and it was encouraging him to store all his documents on some drive in the cloud, and it combined his existing Skype account into the new Microsoft account, and all the while I was thinking "it shouldn't be like this."

It shouldn't be the case that for what could be, should be, a single, stand-alone application such as IP-telephony, there is all this cross-linking, central registration, etc., etc., etc., ...

It's probably a consequence of Microsoft buying out Skype and forcing integration with their own universe. So I ask, is there now an alternative to the centralized, you-will-do-everything-our-way system? I've searched, but had no success.

Suggestions?



I've been working with WebRTC for a year now building Sqwiggle (https://www.sqwiggle.com) - In my experience I can tell you two things,

- It's not really possible to go entirely peer-to-peer as many networks do not allow for this communication to happen. You would have constant issues with calls not being able to connect. Some centralised service is required for signaling, STUN and TURN which costs money and uses significant amounts of bandwidth.

- Even if you do go peer-to-peer with WebRTC the quality would still be improved by going through a central server (less upstream bandwidth required) [edit: when more than 2 participants]

If you're interested in helping to tackle these problems, we're hiring ;-)


> Even if you do go peer-to-peer with WebRTC the quality would still be improved by going through a central server (less upstream bandwidth required)

Why is that?


1. Possible saving on bandwidth for the clients if they know good codecs A and B respectively, so they can't use them between eachother, but a transcoding third party can help.

2. This doesn't help with the amount of bandwidth used, but sometimes due to peering (that VoIP companies really care about) you can get lower delay going via them rather than directly. This is not very common, but it happens (especially if your broadband provider is your VoIP provider for example).

Maybe the poster above had another reason for it too. There's loads of edge cases in the ITSP world.


I should have prefaced that with when there are more than 2 participants... as you would only need to upload your audio/video stream once.


This looks like a really cool product, but there's one thing that bothers me about this. I don't like the fact that the camera takes a picture every 8 seconds. I feel like I'm being monitored. Is this a concern that others have brought up as well? Is there an option to turn that feature off, but still make yourself available instantly?


> STUN and TURN which costs money and uses significant amounts of bandwidth.

TURN does, but not STUN. STUN's just for address discovery and many VoIP providers allow anyone to use theirs. But agreed - STUN on its own can fix only some connection.

Anyway, I think IPv6 can't be here soon enough. That would allow many improvements in the p2p networks!


As someone with native IPv6 connectivity (from a braindead/broken/cheap/stupid ISP, behind Dual Stack Lite, which causes a bunch of other problems) I .. don't believe that IPv6 is

- being generally available soon enough to matter (ever tried accessing your home connection via IPv6 from your mobile? There's no usable workaround that I've found so far and I don't see networks switching to IPv6 anytime soon)

- easy to migrate to (privacy concerns, lots of things to relearn, existing hard- and software WILL break - as my ISP provided cable modem does every three days when my prefix is renewed -> Reboot/reconnect or you're silently offline forever)

The idea is great. I was a fan of the technology in theory. Living with IPv6 at home for ~2 month now I'm considering to cancel my contract _because of issues due to the IPv6 migration_.

That aside, ignoring my anecdotal troubles and my personal disappointment with the way IPv6 is (not..) introduced around me: How would IPv6 help anyway? Just because you're having a globally routable address for all your machines probably doesn't mean that you want them to be directly exposed to the internet? Wouldn't you still need (rather: want) to punch a hole through the firewall?


Regarding the last part, that's where technology like upnp cones into play. There are already some ideas out there: http://tools.ietf.org/search/draft-bnss-v6ops-upnp-01#sectio...

Also once you know the address that doesn't use NAT, you could just use the STUN idea and just and the data from both ends at the same time.

Regarding ISP problem... have you tried contacting the support to replace the router? If it's their device they should just handle it like any other issue. If they refuse then it may be a problem with the "braindead/broken/cheap/stupid ISP" rather than any technology.


Yes, I contacted the ISP. The reasoning is "that is a limitation/flaw in the firmware of the single router that we provide (and you cannot use your own, or meddle with it). The company behind that product might correct this mistake early 2014 and we will upgrade your routers firmware (you cannot) when we get around. Just.. unplug it every three days for now". That is the official statement, confirmed several times. The manufacturer (AVM) confirmed that they know about this issue and are working on a fix, but didn't want to commit to the early 2014 part.. Meanwhile the ISP gives you no choice to refuse dual stack lite and have a stable internet connection..

Technology: UPNP might be a way to open ports, but that works for IPv4 as well, no? I mean, the benefits of IPv6 lie elsewhere? A global address (for a time.. my prefix changes whenever my ISP likes to do that. I have the same 'unstable' address problem, still need to update my AAAA records all the time to make incoming connections work), independent of firewall issues?

If I host a game, it can open a port via upnp (and serve people from the internet) with ipv4 as well. Where is the benefit I'm missing, other than being able to see a dancing tortoise on kame?


I have no problems with an AVM router with (proper) dual stack - Dual Stack Lite sounds like something from a nightmare.

Did you try installing freetz?


Impossible to install freetz on the single available router - 6360.

You can't do a thing, basically.


Will IPv6 help with peer-to-peer?


This should work with WebRTC (http://www.webrtc.org/) using the reference app: https://apprtc.appspot.com/

It should enable you to connect 2 browsers (e.g. Chrome and Firefox), all you need is to transmit the ID of the chat ("r" parameter from the chat URL you will get) to the peer, or the full URL.

It keeps amazing me that we do not have simple JS solutions for this, when projects like Chatroulette can be built in "2 days 2 nights" according to the author.

(by the way, here is WebRTC support for other browsers: https://code.google.com/p/webrtc4all/)


Whole WebRTC technology stack is just SIP VoIP without actual SIP protocol.

Same codec set, SDP offer-answer, SRTP(C), ICE and other old cool things nobody cared to implement in real SIP clients for decades.


There's this: https://talky.io/


Good suggestion. I was thinking the same, so I started working on something, but it's still pretty basic. Communication should be easy, just as speaking.


Here is a open source WebRTC experiment from Mozilla (Ryan Seys): http://tincan.im/


This reminded me Richard Stallman's notes about the newly emerged Cloud Computing. He defined the CC as untrustable and advised to avoid.

I'd suggest IP Telephones. Most of them are capable of making direct P2P connections without even any VoIP server. They only need an external STUN server to arrange the NAT configuration if you use the IP Phone behind a NAT router (which is almost always the case) There are many free and realiable STUNS servers running on the Internet or you can construct your own.


SIP/SIPS is nice. You can just use your IP[:port] as your phone number, and forwarding the required ports isn't too hard either if you're behind a NAT.


> SIP/SIPS is nice. You can just use your IP[:port] as your phone number

You just contradicted yourself.


I am currently working on an in-browser peer-to-peer chat/audio/video application. It's a work in progress at the moment, but you can take a look: https://github.com/Gargron/baron

As a desktop app, there's Jitsi, which works with XMPP and SIP accounts.



This has no license. _Any_ license is better than no license.


It is now BSD-licensed.


Your stuff looks good. Keep it up.


I've used the webrtc project people link here as well, but it is worth pointing out that Skype has an API. I'm not even a Windows programmer in general, but it only took me an afternoon to write a tiny app for a Mom's five year old that just calls Mom immediately and automatically as soon as it is started and has a locked preferences page for setting everything up.


It's worth noting that Skype's API is now deprecated. There's no guarantee it will be around in the next release.


A long list to go through, but this might be a good place to start. Hopefully it has what you need:

https://en.wikipedia.org/wiki/Comparison_of_VoIP_software


Great list, just to save him and others some time and pain, I evaluated all of those in the list some months ago, and my conclusion is Jitsi is the only one multiplatform, encrypted voice, still under development, free open source and not unusably buggy. Or technical - grandfather has no idea what a NAT, ICE or STUN is.

See https://news.ycombinator.com/item?id=6977463


I am searching for an WebRTC server app (open source) that I can run on my webserver.

All these WebRTC guys want me to use their pay-for-use web services.

I found only EasyRTC that sort of worked https://github.com/priologic/easyrtc

Can someone suggest Node.js or PHP (with libevent) implementations of WebRTC server apps?


Mozilla has a node project at https://github.com/mozilla/talkilla


I've been working on a Node.js server (signaling server in Node over WS, frontend built in Backbone) https://github.com/malditogeek/vmux give it a go. There's a running instance at http://vmux.co


see hookflash.me, they have an open source implementation called openpeer. (https://github.com/openpeer/)


SIP + ZRTP. Jitsi and SFLPhone are decent clients, the people at ostel.co are working on some infrastructure to ease the usage of encrypted, decentralized VOIP but most public SIP providers should work your use case.


Your title is different from your question. If you're concerned about direct P2P connections, last I checked, Skype still sends voice traffic directly to the peer. I had checked some months ago using a packet sniffer while talking with a known peer. I'm on a mobile device so I can't confirm now, but looking at my wireless router admin console, I still see the UPnP ports Skype has mapped for itself.

However if you want to avoid integration with the Microsoft universe (which should be opt-out IIRC, though I haven't installed Skype on Windows in ages), you may need to look elsewhere. I was about to suggest Google Hangouts, but that's just inviting integration with another universe :-)

WebRTC-based solutions may be a decent option long term, but I'm not convinced they'll work as well as Skype or Hangout, because its NAT traversal is somewhat limited, so some peers may be unreachable, especially if corporate networks are involved. Skype and most P2P software perform a lot of hacks to get past NATs. Hangout, AFAIK, doesn't have these problems as it is server-based.


RetroShare has VoIP and is:

- 100% distributed / peer-to-peer

- public key encrypted

- open source

http://retroshare.sourceforge.net/


I've tried it for awhile, but it's rather clunky (as of a year ago anyway for a few months) and is difficult to get others to use and share their keys and such.


Well, that's the price to be paid for security. Without key sharing and verification, you can't be sure who you're connected to.


http://simplewebrtc.com/demo.html

Webrtc is here with p2p transmission of the camera + microphone (or files of course). I think it's time for all of us to move to p2p solutions that will come.


Actually it supports sending any byte stream accross. It amazes me nobody seem to have built a peer2peer network out of it yet.

Seems like a shot for open goal.


Why would you do that vs just writing a normal downloadable app?


Well there's P2P file sharing through WebRTC:

https://www.sharefest.me/


Yahoo bought PeerCDN, which uses data channels from WebRTC.


Mumble is the only one that springs to mind: http://mumble.sourceforge.net/ Its designed more for chat rooms but may be suitable.


Mumble works very well, but:

- It's not real p2p, it needs a server somewhere. OP can install one at home or they can use a public one, but it's required (and if you use a public server, you lose some privacy)

- Mumble only does Audio, no Video.

If you can live with those, mumble is the most straightforward Open Source voip solution to use, and I can't recommend it enough (been using it with my relatives, me on Linux, them on Windows: no problem)


It also uses OPUS as the audio codec and has mobile clients, which is kinda nice :)


https://apprtc.appspot.com/ and https://appear.in are probably the most KISS Skype alternatives out there. Of course, built on top of WebRTC.

I've been working myself on an open source alternative http://vmux.co (code: https://github.com/malditogeek/vmux) but it requires a Twitter account to log in which my pose a problem to your dad. (The upcoming version will allow you to use it without an account tho)

To the people that want to host their own "skype alternatives" have in mind that it's not just serving the HTML+JS. WebRTC needs a way to bootstrap the P2P connection, the so called signaling, vmux provides a signaling mechanism using websockets but you'll still need a STUN server (I'm using the Google's one) and optionally a TURN server to relay users behind crazy NATs.


You can try http://appear.in It's a browser based video-voice-chat client.


That looks really good but it's still a non-self-hosted solution.


At https://vline.com we provide a free WebRTC-based video chat service. It doesn't require any registration or installs and is built on top of our developer platform: https://vline.com/developer/.


Does this look as good to you as it does to me? https://jitsi.org


This reminds me of WebRTC and SIP technology. Chris Matthieu built something like this which is now http://www.Twelephone.com. But here you have to log in with your twitter account. Not 100% "I own everything" type of model but a lot less invasive, IMO.


With google's free STUN servers its quite possible to build services which do this. https://github.com/cjb/serverless-webrtc/ And the mozilla projects. But it will be some work. The price of privacy. :)


I would suggest WEBRTC via premade service you make sure there are Firefox/Chrome browser on his computer and point to url. Properly peer-to-peer.

http://appear.in/fathersfirstlastname


I've had mixed results with Voip and reading some of the comments here just turned me on to STUN and TURN.

See this video: http://www.youtube.com/watch?v=9MWYw0fltr0 which explains the causes behind reliability problems.

I have thought about running my own server to manage my NATted voip calls and knowing ice/stun/turn will help has now led me to this: http://www.rtcquickstart.org/introduction

I'm thinking I might try to implement this. Voip on my mobile phone would be great, but I've had my hopes dashed before...


Try https://hu.tt/ works great


Can't tell about WebRTC or browser-based. When it comes to software, I've tried everything from the Wikipedia list and some more.

Most are either too buggy (Linphone) or closed source (many) or not multiplatform (so you can't talk to WindowsXP-user grandfather or vice-versa) or development stopped (Twinkle) or has no encryption (Ekiga).

The only one who passed was Jitsi.

It has more than 10 years of development, it's free / open source, very usable, multiplatform. It also accepts encrypted voice over XMPP, not only over SIP.

Look here - https://jitsi.org/Main/Features


I know some people from 4chan's /g/ and some other people are working on an encrypted de-centralized Skype alternative called 'Tox'. You might want to help with the project.


you should keep track of this one probably

http://tox.im/


I built a site for super simple video chat originally to demo our company's product to clients. Its made to be easily accessible and used with ease. The more we used the app, the more we've come to appreciate its simplicity and our company now uses it to communicate with each other and between our offices around the world. Hope you will find this useful: https://opentokrtc.com


Sococo.com has a team communications app. Not exactly made for family calls, but works fine. Free. Disclaimer: I work at Sococo. And phone calls run P2P and are encrypted. Unless your bandwidth is exceeded; then it runs through a multiplexing 'media node' that operates like a router.

Video, doc sharing, chat, multiple people sharing all that or splitting up into groups or pairs - all by clicking around a map.


This is a good alternative IMHO https://meetings.io/features


ColinWright's question is about computer-to-computer calls.

His question is similar to one I've asked recently: Skype replacement for phone-to-computer and computer-to-phone (Skype-in and Skype-out numbers).

Can you please chip in if you know more? https://news.ycombinator.com/item?id=6921672


Skype but properly peer-to-peer was pretty much the theme of realtime conf this year take a look at this video: http://vimeo.com/77289728 They demo a federated video chat.


Check out Hutt (http://hu.tt/).

No account needed and you can instantly start video chatting with anyone who has a modern browser.


It says I need Chrome.


Just use Skype.

It's been my experience that the way to technological bliss is through reducing friction by using what everyone else is using.

For voice and video over IP, that's Skype.


Have you tried to talk an elderly relative through installing Skype on Windows 8 over a phone line when you can't see their screen and don't use Windows?

It has to be easier - there has to be a better way.


How about configuring and sending them an instance of TightVNC or UltraVNC (one or the other or both of those -- I forget), and then just using that channel to remote to their system? Downside (maybe): They can only talk with you, and there may not be a convenient mechanism for always-on and notifications.

(Or, doesn't the Chrome browser come with some sort of remote-enabling plug-in, these days?)

Otherwise, possibly configure your own server intermediary and use Jitsi or similar? Downside: They'll only be able to talk with people similarly configured (although you could set up several people this way).

The later is what I mean to move towards, Real Soon Now... :-/

P.S. It occurs to me now that you could use the remote access to get them configured for something else, as opposed to just to push a verbal-visual/"talk" communications channel over.


Use the Skype Desktop version instead -

http://www.skype.com/go/getskype-full

no sign in needed.


We use Oovoo, its still centralized but we like it more than Skype. Its like the poor mans skype but its honestly better for voip.


Try https://palava.tv/

It's open-source WebRTC.


I use https://appear.in based on webRTC.




    sudo apt-get install linphone




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: