neocomm/README.md

69 lines
4.0 KiB
Markdown
Raw Normal View History

2017-06-23 21:29:57 +00:00
NeoComm
=======
2017-07-17 15:12:48 +00:00
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.
2017-06-23 21:29:57 +00:00
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).
2017-07-08 17:58:03 +00:00
- [Network Model](#network-model)
2017-07-17 02:00:28 +00:00
- [Roadmap](#roadmap)
2017-07-08 17:58:03 +00:00
- [API Documentation](#api-documentation)
- [Clients](#clients)
- [Compiling](#compiling)
- [Contributing](#contributing)
- [License](#license)
2017-06-23 21:29:57 +00:00
Network Model
-------------
2017-07-03 16:50:46 +00:00
This model moves further from the federated decentralization model, taking one closer to that of torrents with their peer discovery. There are three components to the network: nodes and directory nodes. All connected machines work as nodes, but only those that are not firewalled can function as directory nodes (nodes that other nodes can connect to). With this model the directory nodes would serve the functionality of trackers in a torrent system (those nodes that have enough uptime to be considered _directory servers_). At first the network will be very much centralized around a single directory server, however when new directory servers start popping up (any directory node with long uptimes) it will help to further remove dependence on a single point of vulnerability and help towards the decentralization of the network. Clients will remember what nodes they connected to so that upon startup they can try other directory nodes and not simply the same one, allowing for the network to quickly move forward from the original directory server.
2017-07-03 15:45:50 +00:00
For more information on the network model, please refer to the wiki.
2017-06-23 21:29:57 +00:00
2017-07-17 02:00:28 +00:00
Roadmap
-------
2017-07-26 20:19:29 +00:00
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.
2017-07-17 02:00:28 +00:00
2017-08-12 18:59:18 +00:00
_NOTE: This roadmap will require modifications._
2017-07-26 20:19:29 +00:00
- v1.0-alpha:
2017-07-17 02:17:30 +00:00
- [ ] Node connectivity
- [ ] Messages properly sent and received
2017-07-26 20:19:29 +00:00
- v1.0-beta:
2017-07-17 02:17:30 +00:00
- [ ] Channel functionality
- [ ] Message encryption
- [ ] Private messages
2017-07-17 02:00:28 +00:00
- v1.0:
2017-07-17 15:12:48 +00:00
- [ ] SOCKS4a/SOCKS5 proxy support
- [ ] HTTP proxy support
2017-07-26 20:19:29 +00:00
- v2.0:
- [ ] P2P File transfer
2017-07-17 02:17:30 +00:00
- [ ] Memos (with TTL)
2017-07-17 02:00:28 +00:00
2017-06-23 21:29:57 +00:00
API Documentation
-----------------
2017-08-18 21:57:29 +00:00
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.
2017-07-17 00:52:00 +00:00
2017-07-26 20:19:29 +00:00
Public documentation will be published with every major release.
2017-06-23 21:29:57 +00:00
Clients
-------
_There are currently no clients available._
2017-07-08 17:58:03 +00:00
Compiling
---------
2017-08-18 21:57:29 +00:00
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.
2017-07-02 10:10:26 +00:00
```
$ cd build/
$ cmake ..
$ make
```
2017-08-12 18:59:18 +00:00
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`.
2017-07-03 15:18:17 +00:00
Contributing
------------
If you would like to contribute to the project please read over the [contribution guide](/CONTRIBUTING.md).
2017-06-23 21:29:57 +00:00
License
-------
2017-08-12 18:59:18 +00:00
This project, unless otherwise stated, is licensed under the terms & conditions of the [GNU Affero General Public License version 3 or greater](/LICENSE).