summaryrefslogtreecommitdiff
path: root/README.md
blob: b69aef243809b1d2cec5b31fbfec195261ae8916 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
![Project Tox](https://raw.github.com/TokTok/toxcore/master/other/tox.png "Project Tox")
***

**Current build status:** [![Build Status](https://travis-ci.org/TokTok/toxcore.svg?branch=master)](https://travis-ci.org/TokTok/toxcore)
**Current Coverage:** [![Coverage Status](https://coveralls.io/repos/github/TokTok/toxcore/badge.svg?branch=master)](https://coveralls.io/github/TokTok/toxcore?branch=master)

[**Website**](https://tox.chat) **|** [**Wiki**](https://wiki.tox.chat/) **|** [**Blog**](https://blog.tox.chat/) **|** [**FAQ**](https://wiki.tox.chat/doku.php?id=users:faq) **|** [**Binaries/Downloads**](https://wiki.tox.chat/Binaries) **|** [**Clients**](https://wiki.tox.chat/doku.php?id=clients) **|** [**Compiling**](/INSTALL.md)

**IRC Channels:** [#tox@freenode](https://webchat.freenode.net/?channels=tox), [#toktok@freenode](https://webchat.freenode.net/?channels=toktok)

## Q&A:

### What is Tox?

Tox is a fully encrypted, censor resistant, private, distributed network library with a focus on personal communications.

### No, really, what's Tox?

It's a VERY secure Instant Messenger that supports Text, Audio/Video calls, group chats, audio group chats, and file transfers.

### What are your goals with Tox?

We want Tox to be as simple as possible while remaining as secure as possible.

## Toxcore Roadmap
This Roadmap is somewhat tentative, but should give you a good idea of where
we're going, and where we've been.

Currently unsorted, the following is intended to function as a discussion guide
to developers/contributors.

### In Progress
- [ ] 100% unit testing
- [ ] Make toxcore stateless
- [ ] Allow a single toxcore instance to handle multiple keypairs
- [ ] Implement usable group chats
- [ ] Improve A/V implementation
- [ ] Multiple device support
- [ ] Consistent naming scheme throughout toxcore

### Done
- [X] Create Toxcore
- [X] Create DHT
- [X] Create Onion
- [X] Implement Crypto
- [X] Create Messenger

## Documentation:
- [Compiling](/INSTALL.md)
- [DHT Protocol](/docs/updates/DHT.md)<br />
- [Crypto](/docs/updates/Crypto.md)<br />

## The Complex Stuff:
### UDP vs. TCP
Tox must use UDP simply because [hole punching](https://en.wikipedia.org/wiki/UDP_hole_punching) with TCP is not as reliable.
However, Tox does use [TCP relays](/docs/TCP_Network.txt) as a fallback if it encounters a firewall that prevents UDP hole punching.

### Connecting & Communicating
Every peer is represented as a [byte string](https://en.wikipedia.org/wiki/String_(computer_science)) (the public key [Tox ID] of the peer). By using torrent-style DHT, peers can find the IP of other peers by using their Tox ID. Once the IP is obtained, peers can initiate a [secure](/docs/updates/Crypto.md) connection with each other. Once the connection is made, peers can exchange messages, send files, start video chats, etc. using encrypted communications.