neocomm/README.md
2017-09-21 09:15:23 +02:00

65 lines
3.8 KiB
Markdown

NeoComm
=======
NeoComm is a lightweight completely decentralized and anti-censorship IRC replacement network. The objective of this network is to create a secure form of group instant communication similar to IRC but decentralizing the network, and as a consequence hindering censorship within the network and protecting the network's endurance against malevolent entities that may try to block access to the network.
This repository provides a library with interfaces by which you can access the network, which you are able to use in your own software under the terms & conditions of the [library's license](#license).
- [Network Model](#network-model)
- [Roadmap](#roadmap)
- [API Documentation](#api-documentation)
- [Clients](#clients)
- [Compiling](#compiling)
- [Contributing](#contributing)
- [License](#license)
Network Model
-------------
NeoComm tries to avoid any dependency on any central servers in order to avoid central control and censorship of the network itself. For this reason NeoComm works using the torrent [DHT network](https://en.wikipedia.org/wiki/Distributed_hash_table), meaning that the more you connect to the network the less reliant you are on any given node and new users can connect to specific nodes if they are blocked to the default ones. Nodes can be remembered from the last connection in order to reconnect to these same nodes instead of the default ones.
Roadmap
-------
What follows is a list roadmap of features and the (approximate) versions in which they will be implemented. The API will only change in major versions of the library, while minor versions will be dedicated to internal improvements and patch versions to small fixes that got past the release.
- v1.0-beta:
- [X] Node connectivity
- [ ] Messages properly sent and received
- [ ] Channel functionality
- v1.0:
- [ ] Message encryption
- [ ] P2P Private messages
- v2.0:
- [ ] SOCKS4a/SOCKS5 proxy support
- [ ] HTTP proxy support
- v3.0:
- [ ] P2P File transfer
- [ ] Memos (with TTL)
API Documentation
-----------------
NeoComm uses [Doxygen](http://www.stack.nl/~dimitri/doxygen/) to generate its documentation (for NeoComm developers please refer to the [contributing section](#contributing)) which generates HTML documentation, which you can do by running `doxygen` in the root directory of the project or by using the graphical wizard.
Public documentation will be published with every major release.
Clients
-------
_There are currently no clients available._
Compiling
---------
To build this project you will need a C++11 compatible compiler ([GCC](https://gcc.gnu.org/) is recommended), the [OpenDHT library](https://github.com/savoirfairelinux/opendht), [msgpack-c](https://github.com/msgpack/msgpack-c), and the [CMake build system](https://cmake.org/). To build run the following commands from the root directory of the project.
```
$ cd build/
$ cmake ..
$ make
```
By default this will build a `release` build, if you require a debug build run the `cmake` command with the additional flag `-DCMAKE_BUILD_TYPE=debug`. It will also build a static library by default, in order to compile a dynamic library add the flag `-DBUILD_SHARED_LIB=ON`.
Contributing
------------
NeoComm is [Free/Libre Open Source Software (FLOSS)](https://www.gnu.org/philosophy/free-sw.html) and as such is community oriented. Contributions are greatly appreciated in order to keep the project up-to-date. If you would like to contribute something then please read over the [contribution guide](CONTRIBUTING.md) before making a pull request. If you're looking for something to contribute have a look at our issue tracker for bugs/requests.
License
-------
This project is licensed under the terms & conditions of the [GNU Affero General Public License version 3 or greater](LICENSE.md) unless stated otherwise in the file.