Ditch Skype for your audio, video and text chats

Apidech Ninkhlai, 123RF

Apidech Ninkhlai, 123RF

Phoning It In

Linux users have been struggling with a love-hate relationship with the likes of Skype since it was taken over by Microsoft. Now there are many other apps to choose from for your audio, video, and text chatting needs, and each of them has a niche where it excels.

If you want to chat with other people over the Internet, then the possibilities are mushrooming. Facebook Messenger, Google Talk, and WhatsApp are just a few of the options out there. But the software itself is often proprietary, and the operators of these services occupy a position of control over the users. You have to register with the service and use official apps. Anonymous accounts that have self-administered servers or alternative clients are usually not permitted.

Currently, Skype users are starting to feel more of the control. The Linux client has never played a major role with Skype. Even so, new Linux versions for the Skype client were released at intervals, that is until Microsoft took over Skype. Prior to that, user wishes like a 64-bit version remained unfulfilled. Nonetheless, many a Skype user preferred the Linux version since it left out frills and unnecessary indicators.

Alpha Skype

Skype has gradually fallen out of favor with Linux users since it was taken over by Microsoft. There are lots of complaints that it is no longer possible to join conversations [1]. The new Skype for Linux alpha version, the "Linux Version" [2], which was recently released, basically consists of an Electron-based shell [3] wrapped around the Skype web client (Figure 1). Ghetto Skype [4] is a similar solution that has been available for a long time over the Internet. The Skype for Linux alpha version is still lacking important functions. For instance, it cannot deal with video chats.

Figure 1: The alpha version of the completely new Skype client already handles telephone calls; video chats are still not possible.

For this and other reasons, like concerns about service integrity, many Linux users are seeking other ways to communicate. And, although other ways do exist, criteria like cross-platform capability, simplicity, and reliability cause many options to fall by the wayside. This article takes a look at seven potential Skype alternatives even though they seldom fulfill all of the requirements (see Table 1).

Table 1

IM and Audio/Video Conferencing Apps

  Retroshare Ricochet 1.1.2 Ring Signal Tox (uTox) WebRTC
Features
Chat yes yes yes yes yes yes1
Contact list yes yes yes yes yes no
Group chats yes no no no yes yes1
Synchronized chat history no no yes yes no no
Voice/Video chats yes/yes no/no yes/yes yes (only mobile)/no yes/yes yes/yes
Desktop access no no no no yes yes1
File transfer yes no no yes yes yes1
Security/Private Space
Encryption yes yes yes yes yes yes
Central server no no no yes no yes2
Operating Systems
Linux yes yes yes yes yes yes
MacOS X yes yes yes yes yes yes
Windows yes yes yes yes yes yes
Android no no yes yes yes4 yes
iOS no no no yes yes4 yes3
1 Varies with the provider.
2 WebRTC is an open standard. Therefore the user can host a server themselves.
3 The WebKit back-end from Apple Safari still does not handle WebRTC. The open source browser for iOS can.
4 Different features depending on the client.

Retroshare

Retroshare [5] combines a number of different features for encrypted communication under a single interface. The program supports audio/video and text chats. It also supports emails, news groups, and data sharing with friended users, plus if desired, sharing from friend to friend. The program builds a friend-to-friend network (F2F) via Turtle routing [6] so that the user can share data. Unlike the classic peer-to-peer (P2P) network, Retroshare does not route the data to all of the network participants. Instead, the data only flows between friends and friends of friends.

The developers offer the program for Linux, Mac OS X, and Windows under a GPLv2 license. Versions for mobile operating systems do not exist. The project has packages for all of the larger distributions [7] . The developers distinguish between stable and thoroughly tested versions and unstable versions. However, in testing, unstable source could only be installed on a system with Ubuntu 16.04 (Listing 1).

Listing 1

Installing Retroshare

$ sudo add-apt-repository ppa:retroshare/unstable
$ sudo apt update
$ sudo apt install retroshare06

When installing, you should know that the current Retroshare 0.6 is no longer compatible with older versions of the program. This is because the protocol has been fundamentally changed. If there is still an older version of the program in your distribution's package sources, then it is a good idea to manually install the current version.

You will need to create a profile when the program first starts. This is actually just a Pretty Good Privacy (PGP) key. Retroshare will use the mouse cursor movements to create solid random values. You can add friends with this key by exchanging your public key with your Retroshare friends and then adding the friend using the add option found in the application's menubar. The best way to exchange the public key is to do so offline with a USB stick, or, if necessary, you can use email or another chat program. After a friend has been added, the new contact will appear as a friended network node. You can start a chat using the context menu for the contact (Figure 2).

Figure 2: Retroshare offers more than just chats. The program has mail service, forums, and a feed reader in the communications center.

In practice, the Retroshare interface proves to be functional but clunky. The program offers way more functions than just audio, video, and text chats, which forces you to rummage through multiple menus and tabs. Retroshare does not support classic group chats, but with Chat Lobbies , you can converse with multiple people simultaneously. You can open private lobbies and join them only if you have been invited. Public lobbies on the other hand are open to all Retroshare users.

Ricochet

The chat app Ricochet [8] is limited to text-based conversations (Figure 3). Audio and video chats are current topics of discussion, but concrete plans have not yet been made [9]. The version 1.1.2, which I tested, dates from February 2016. The commit graph on the project Github page shows that the developers have been working on the code regularly since 2014 [10]. You will find packages for Linux, Mac OS X, and Windows on the project homepage. Distributions like Debian and Ubuntu can find a package for the program in APT.

Figure 3: Ricochet only offers text chats. In exchange for this limited functionality, the chats are completely anonymous and encrypted.

Ricochet makes up for its lack of functionality by offering its users anonymity and security. As a decentralized network, it does not need a server, therefore there is no need for authentification. In addition, it generates a connection for chat partners via the Onion Router Tor, thus making it impossible to determine the participants' IP addresses. Finally, Ricochet saves the contact list locally and does not write the chat history to the hard drive. As soon as the dialog closes, it cannot be reopened.

In spite of attempts by Ricochet to develop an anonymous messenger, the project still has a way to go. Stronger encryption has not been put in place. A February 2016 security assessment [11] resulted in the recommendation that users should store encrypted data on a data storage medium since the data appeared in plain text on the hard drive. All in all, Ricochet serves users who are primarily interested in maintaining their privacy and who can do without additional functionality. The developer community behind the program wants to port the application to mobile systems and expand the capabilities.

Ring

Ring [12] originated with the SIP software SFLphone, which has since been discontinued. SFLphone was developed by Savoir-faire Linux [13], a French Canadian consulting firm. The Ring developers are positioning the software as a free and secure competitor to Skype. Ring handles conventional chats, audio and video conversations, and video conferences. All data transfers are encrypted. The data is sent via a distributed network that has been organized similar to BitTorrent, which itself works with a distributed hash table called OpenDHT [14]. Ring does not need a central server, and as a result, it does not create any profiles.

Ring is constructed to harness the power of a local server that runs in the background and a client. This means you usually need to install two packages under Linux. Ring also offers package sources for Debian, Fedora, and Ubuntu. In addition, there are detailed instructions for installation [15] on the homepage. You will find commands to integrate Ubuntu 16.04 repositories in Listing 2 . Alternatively, Ring supports Mac OS X and Windows. In addition, there is an official client for Android smartphones that you can get from Googles Play [16]. You can also get the Android client from the open source F-Droid market [17].

Listing 2

Installing Ring

$ sudo sh -c "echo ,deb https://dl.ring.cx/ring-nightly/ubuntu_16.04/ ring main' > /etc/apt/sources.list.d/ring-nightly-man.list"
$ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys A295D773307D25A33AE72F2F64CD5FA175348F84
$ sudo apt update
$ sudo apt install ring-gnome

After installing Ring, you should start it up and immediately set up an account. An account is made up of a 40-character cryptographic key, similar to the public keys you use in PGP-encrypted communication. The classic account on a central server is not how Ring works. You should give your account key to your acquaintances, or alternatively you can call up a QR code from the application that your friend can then scan with their smartphone (Figure 4). You can also export your key as a RING file, which contains the password. This makes it possible to use the account simultaneously on multiple devices.

Figure 4: Ring supports audio and video chats, and it does not need a central server.

On paper, this looks like a complete product. In practice, however, it becomes apparent that Ring is still somewhat immature. Both the desktop and the Android clients crashed frequently during testing. One client I built from the Git and ran under Arch Linux was particularly unstable. By way of contrast, a version running under Ubuntu and installed from the package sources was practical to use. Audio and video chats functioned reliably even over connections that didn't have much bandwidth.

Signal

Signal [18] has had a series of well known fans during the last few years. These include the cryptography and IT security specialist Bruce Schneier; Matthew Green, who is a professor for cryptography at Johns Hopkins University; and the whistleblower Edward Snowden to mention just a few. All of the fans want to see a completely free messenger. The program was developed in the non-profit software group Open Whisper Systems, which was founded by Moxie Marlinspike [19]. Previously, the group had developed TextSecure and RedPhone, which are apps for encrypting SMS and telephone conversations.

Signal is strongly reminiscent of WhatsApp and other instant messengers used primarily on smartphones (Figure 5). Therefore, a smartphone is the kind of device to use with this program. The service relies on the mobile phone number for authentification. Alternative methods for registration are being discussed [20], as is instant registration using an email address. However, implementations for these features are still far down the road. The Signal desktop version is only available as a browser app for Chrome and Chromium [21]. Therefore, installation merely involves installing an extension.

Figure 5: Many users recognize Signal from smartphones. The service has come to the Linux desktop as a browser extension.

Although Signal does not run as a standalone application, the program appears in the application menu of the desktop environment. Signal synchronizes news and contact lists via the Internet. This means that you can start a chat on your smartphone and then continue it on your PC. In addition to purely text-based chats, the program also offers telephone conversations but currently only via smartphone clients. With Signal, the communication includes end-to-end encryption. Even so, the service can collect metadata on its central server; therefore it has the potential to know who was in contact with whom and also when. Also, Signal refuses to release its source code for the server components. This has made it lose credibility with the Linux crowd over time.

Tox

Tox [22] is one of the trailblazers among the P2P chat clients. The program originated with a discussion about the personal privacy of Skype users in the notorious 4chan forum [23]. Since the time that this discussion took place, the project has advanced a lot. Tox supports group chats, data transfers, audio and video calls, as well as offline news. The program distinguishes between the client and the core library, which provide the protocol and the API. Therefore, there are a series of different Tox programs that, depending on their development status, support just a portion or all of the features mentioned above.

The most advanced and mature Tox clients are uTox [24] and qTox [25]. The latter (Figure 6) is frequently found in the package sources of mainstream distributions. You can also install an updated version using the official package sources for the developer. Listing 3 shows how this works for Debian 8 and Ubuntu 16.04 [26].

Listing 3

Installing qTox

$ sudo sh -c ,echo "deb https://pkg.tox.chat/debian/ nightly release" > /etc/apt/sources.list.d/tox.list'
$ wget -qO - https://pkg.tox.chat/debian/pkg.gpg.key | sudo apt-key add -?$ sudo apt update
$ sudo apt install qtox
Figure 6: Tox works without registration and without having a central server. It offers a full set of capabilities with text, audio, and video chats.

You will need to set up a Tox profile when you start the program for the first time. The profile consists of various private and public keys. Tox stores the data locally. The public key corresponds to your Tox ID. You can share the key for chatting with your contacts as a text or as a QR code. An option is available for registering the key and your email address in the Toxme register. This lets you find friends more easily over the Tox network [27].

In practice, Tox proves itself to be adept when working together with qTox. Adding contacts using the public key was easy. Chats and data transfers work out of the box. Currently, screen shares are only available on uTox. However, qTox lets the user take screenshots of the desktop and individual programs and send them to chat partners. Audio and video chats worked instantly. However, they don't come near to having the level of quality offered by Skype or WebRTC conferencing.

A large number of Tox client programs originate with the separation between back-end and front-end. In addition to qTox and uTox, you will find Tox clients for the command line, and a plugin for the multiprotocol messenger Pidgin. There are also Tox clients for Android and iOS in the form of Antox [28] and Antidote [29]. However, the developers for Antox are still working on getting rid of errors in the audio and video functions.

WebRTC

It has been a long time since web browsers could only render HTML and display static websites. Today, even office suites and 3D games can be run in the browser using HTML5 and JavaScript. Although these innovations have had some downsides, they also make it possible to deal with numerous areas of applications that were previously off limits for dedicated applications. Web Real-Time Communication WebRTC [30] takes advantage of these possibilities.

With WebRTC, you can call data in real time from the web server, as well as from other users' browsers. This makes it possible to have classic conferencing features, like chats, video conferences, and desktop sharing, all in the browser. Spurred on by Google, Mozilla, and Opera Software, WebRTC has established itself as a recognized open source standard. As a result, Chrome, Firefox, and Opera all provide the best support for WebRTC. Typically, there is no need for additional software, such as browser extensions and plugins. Skype is also experimenting with the protocol. It serves as the basis for the alpha version of the future Skype client for Linux [31].

However, the protocol requires a central web server in order to generate a connection. This is different from the solutions that work with hash tables. Due to the open standard, the user can choose among various alternatives. These include, for example, the portals from appear.in, meet.jit.si, or palava.tv. The latter operates a public interest organization in Germany. Many of these offerings, like Jitsi Meet, can also be forked via Github and operated on the user's own server [32]. Starting with version 34.0, Mozilla has even been operating its own service in its browser. This function ends with Firefox 49 [33].

You do not need an account for many of the WebRTC portals found on the Internet. Most of the time it suffices to name a chat room and then provide the link that is generated to the conference participants. They then open the page in their browser, permit access to the webcam and microphone, and are connected. Theoretically, any Internet user could join the conference. Therefore, you should select a random name for private discussions. Many portals have a generator for this purpose.

Services such as Jitsi Meet (Figure 7) take it one step further and assign moderation rights to the conference creator. This lets the moderator remove unwanted visitors from the discussion or place them on mute. In addition, the room can be secured with a password against unknown visitors. A chat function and a collaborative editor based on Etherpad Lite [34] round out the package. Streaming is made possible with the browser plugin Jitsi Desktop Streamer (available for Chrome [35] and Firefox [36]). The user can stream the contents of individual program windows or of the entire desktop.

Figure 7: Thanks to HTML5, WebRTC and Jitsi Meet do not need a special client. A modern browser is entirely sufficient.

A WebRTC-capable browser is all you will need on a smartphone. Under Android, this would be something like Chrome or Firefox. However, many WebRTC portals have not been optimized for mobile browsers. This is the case for Jitsi Meet. Apple's Safari browser and the underlying WebKit back-end are still not ready for WebRTC [37]. However, Apple is working on implementing the technology. In the meantime, the open source browser Bowser [38] can be used instead. Many portals, such as appear.in, offer native apps for Android [39] and iOS [40].

Conclusion

Most users turn to Skype, WhatsApp, Facebook Messenger, and perhaps Threema and Signal. The corresponding services have been active for years and come preinstalled on many smartphones. They are also available with popular online services. Even so, there are other, open and free options that come with lots of potential.

Applications like Retroshare, Ring, and Tox do not need a central server and therefore do not maintain a profile. This makes organizing contacts and synchronizing chat histories somewhat more difficult, but it also preserves the user's personal privacy. And you don't have to make do with a limited set of features. Audio and video chats have become pretty much standard. Screensharing is also no longer a rarity.

You should also not underestimate WebRTC. When all is said and done, implementations like Jitsi Meet offer everything that Skype does, but you don't have to install a proprietary client. The service is completely open source. You can therefore install your own copy and organize audio and video conferences at your pleasure.

Infos

  1. "Dear Skype/Microsoft": http://nickforall.nl/skype/
  2. Skype for Linux Alpha version: https://support.skype.com/en/faq/FA34656/more-information-about-skype-for-linux-alpha
  3. Electron: http://electron.atom.io/
  4. Ghetto Skype: https://github.com/stanfieldr/ghetto-skype
  5. Retroshare: https://retroshare.github.io
  6. Turtle: http://turtle-p2p.sourceforge.net
  7. Installing Retroshare: https://retroshare.github.io/downloads.html
  8. Ricochet: https://ricochet.im
  9. Voice/video chats in Ricochet: https://github.com/ricochet-im/ricochet/issues/308
  10. Ricochet on Github: https://github.com/ricochet-im/ricochet/graphs/contributors
  11. Ricochet security assessment: https://ricochet.im/files/ricochet-ncc-audit-2016-01.pdf
  12. Ring: https://ring.cx/en
  13. Savoir-faire Linux: https://www.savoirfairelinux.com/en/
  14. OpenDHT: https://github.com/savoirfairelinux/opendht
  15. Installing Ring: https://ring.cx/en/download/gnu-linux
  16. Google Play: https://play.google.com/store/apps/details?id=cx.ring
  17. F-Droid: https://f-droid.org/repository/browse/?fdid=cx.ring
  18. Signal on Open Whisper Systems: https://whispersystems.org
  19. Moxie Marlinspike: https://moxie.org
  20. "Allow different kinds of identifiers for registration": https://github.com/WhisperSystems/Signal-Android/issues/1085
  21. Signal for Chrome/Chromium: https://chrome.google.com/webstore/detail/signal-private-messenger/bikioccmkafdpakkkcpdbppfkghcmihk
  22. Tox: https://tox.chat/
  23. "Daily reminder that Skype reads the URLs you send": http://rbt.asia/g/thread/S34778013#p34778939
  24. uTox: http://utox.org
  25. qTox: https://github.com/qTox/qTox
  26. Installing qTox: https://wiki.tox.chat/clients/qtox
  27. Toxme User Lookup: https://toxme.io/
  28. Antox: https://github.com/Antox/Antox
  29. Antidote: https://github.com/Antidote-for-Tox/Antidote
  30. WebRTC: https://webrtc.org
  31. "New Skype for Linux client released, built on Web technology": http://arstechnica.com/information-technology/2016/07/skype-for-linux-is-resurrected-available-now-as-an-alpha/
  32. Jitsi Meet: https://github.com/jitsi/jitsi-meet
  33. Firefox Hello: https://www.mozilla.org/de/firefox/hello/
  34. Etherpad Lite: https://github.com/ether/etherpad-lite
  35. Jitsi Desktop Streamer for Chrome: https://chrome.google.com/webstore/detail/jitsi-desktop-streamer/diibjkoicjeejcmhdnailmkgecihlobk
  36. Jitsi Desktop Streamer for Firefox: https://addons.mozilla.org/en-US/firefox/addon/jitsi-desktop-streamer/
  37. WebKit support by WebRTC: https://webkit.org/status/#specification-webrtc
  38. Bowser: http://www.openwebrtc.org/bowser/
  39. appear.in for Android: https://play.google.com/store/apps/details?id=appear.in.app
  40. appear.in for iOS: https://itunes.apple.com/en/app/appear.in-free-group-video/id878583078?mt=8