Tox (protocol)

From Infogalactic: the planetary knowledge core
Jump to: navigation, search
Tox
ToxLogo.png
UTox Screenshot.png
Screenshot of the Tox client uTox running on GNU/Linux.
Written in C
Operating system Windows, GNU/Linux, OS X, Android, iOS, FreeBSD, OpenIndiana, Sailfish OS
Type VoIP, Instant messaging, Videoconferencing
License GNU GPLv3 or later
Website tox.chat

Tox is a peer-to-peer instant messaging and video calling protocol that offers end-to-end encryption. The stated goal of the project is to provide secure yet easily accessible communication for everyone.[1] A reference implementation of the protocol is published as free and open-source software under the terms of the GNU General Public License (GPL) version 3 or later.

History

The initial commit to GitHub was pushed on June 23, 2013, by a user named irungentoo.[2] Pre-alpha testing binaries were made available for users from February 3, 2014, onwards, and nightly builds of Tox are published by the Jenkins Automatron.[3] On July 12, 2014, Tox entered an alpha stage in development and a redesigned download page was created for the occasion.

Features

Users are assigned a public and private key, and they connect to each other directly in a fully distributed, peer-to-peer network. Users have the ability to message friends, join chat rooms with friends or strangers, voice/video chat, and send each other files. All traffic over Tox is end-to-end encrypted using the NaCl library, which provides authenticated encryption and perfect forward secrecy.

Mainstream Tox clients aim to provide support for messaging, group messaging, voice and video calling, voice and video conferencing, typing indicators, message read-receipts, file sharing, profile encryption, and desktop streaming. Additional features can be implemented by any client as long as they are supported by the core protocol. Features that are not related to the core networking system are left up to the client. Client developers are strongly encouraged to adhere to the Tox Client Standard[4] in order to maintain cross-client compatibility and uphold best security practices.

Architecture

Core

The Tox core is a library establishing the protocol and API. User front-ends, or clients, are built on the top of the core. Anyone can create a client utilizing the core. Technical documents describing the design of the Core, written by the core developer irungentoo, are available publicly.[5]

Protocol

The core of Tox is an implementation of the Tox protocol, an example of the application layer of the OSI model and arguably the presentation layer. Implementations of the Tox protocol not done by the project exist, an example of one being Xot.[6]

Tox uses the Opus audio format for audio streaming and the VP8 video compression format for video streaming.

Clients

A client is a program that uses the Tox core library to communicate with other users of the Tox protocol. Various clients are available for a wide range of systems; the following list is incomplete.[7]

Name Operating system Written in
Antidote[8] iOS Objective-C
Antox[9] Android Scala, Java
Cyanide[10] Sailfish OS C++
gTox[11] GNU/Linux C++ (GTK+ 3)
qTox[12] GNU/Linux, FreeBSD, OS X, Windows C++ (Qt)
Toxic[13] GNU/Linux, BSD, OS X C (Ncurses)
Toxy[14] Windows C# (WPF)
µTox[15] GNU/Linux, FreeBSD, OS X, Windows C (Win32 API, Xlib)
xWinTox[16] GNU/Linux, Solaris, BSD C/C++ (FLTK)

There are also Tox protocol plugins for Pidgin[17] and Miranda NG.[18]

Disassociation with Tox Foundation

At July 11, 2015, Tox developers officially announced their disassociation with Tox Foundation, due to "a dispute over the misuse of donated funds" by Tox Foundation head and CEO, according to LWN.net.[19] Due to domains being in control of the Tox Foundation, main development of the project was transferred to a new infrastructure, servers, and new domain.

Reception

Tox received some significant publicity in its early conceptual stage, catching the attention of global online tech news sites.[20][21][22][23] On August 15, 2013, Tox was number five on GitHub's top trending list.[24] Concerns about metadata leaks were raised, and developers responded by implementing Onion routing for the friend-finding process.[25] Tox was accepted into the Google Summer of Code as a Mentoring Organization in 2014 and 2015.[26][27]

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. Lua error in package.lua at line 80: module 'strict' not found.
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. Lua error in package.lua at line 80: module 'strict' not found.
  18. Lua error in package.lua at line 80: module 'strict' not found.
  19. Lua error in package.lua at line 80: module 'strict' not found.
  20. Lua error in package.lua at line 80: module 'strict' not found.
  21. Lua error in package.lua at line 80: module 'strict' not found.
  22. Lua error in package.lua at line 80: module 'strict' not found.
  23. Lua error in package.lua at line 80: module 'strict' not found.
  24. Lua error in package.lua at line 80: module 'strict' not found.
  25. Lua error in package.lua at line 80: module 'strict' not found.
  26. Lua error in package.lua at line 80: module 'strict' not found.
  27. Lua error in package.lua at line 80: module 'strict' not found.

External links