85 lines
3.3 KiB
Plaintext
85 lines
3.3 KiB
Plaintext
===============
|
|
*** NeoComm ***
|
|
===============
|
|
A decentralized chat room network aiming to work against censorship. The
|
|
objective is to create a secure form of chat room communication similar to that
|
|
of IRC, but decentralized in order to remove any kind of power structure or
|
|
model, attempting to prevent censorship of the network by outside forces as
|
|
well as censorship within the network itself.
|
|
|
|
NeoComm is a library and not an application unto itself, and is meant to be
|
|
incorporated into applications to take advantage of its decentralized nature.
|
|
Feel free to use it in your own software.
|
|
|
|
# Network Model
|
|
---------------
|
|
Unlike a federated network model, NeoComm does not require a master server or
|
|
reliance on the benevolence of a few slave servers, but rather uses a
|
|
decentralized P2P network model using Distributed Hash Tables[0], and more
|
|
specifically the OpenDHT library[1]. With this model each client serves as a
|
|
node in the network that can be used to relay information, and those that
|
|
forward ports can even be used as entry nodes to the network itself, therefore
|
|
removing reliance on servers hosted by particular individuals (including
|
|
myself).
|
|
|
|
This also means that the larger the network gets, the more resistant it will
|
|
become and the easier it will be for users to bypass censorship.
|
|
|
|
[0] https://en.wikipedia.org/wiki/Distributed_hash_table
|
|
[1] https://github.com/savoirfairelinux/opendht
|
|
|
|
# API Documentation
|
|
-------------------
|
|
For documentation, NeoComm uses Doxygen[0], which generates easy to read HTML
|
|
documentation from the comments within the header files of the project. If you
|
|
install Doxygen you can generate the documentation by running the `doxygen'
|
|
command in the root directory of the project.
|
|
|
|
Public documentation will be posted every major version.
|
|
|
|
[0] http://www.stack.nl/~dimitri/doxygen/
|
|
|
|
# Clients
|
|
---------
|
|
There are currently no clients for NeoComm. If you would like to add one to
|
|
this list then contact <nortega@themusicinnoise.net> with relevant information.
|
|
|
|
# Compiling
|
|
-----------
|
|
To build the project you will require the following dependencies:
|
|
|
|
- A C++11 compatible compiler (GNU GCC is recommended)
|
|
- OpenDHT >=v1.4.0 (https://github.com/savoirfairelinux/opendht)
|
|
- msgpack-c (https://github.com/msgpack/msgpack-c)
|
|
- CMake (https://cmake.org/)
|
|
|
|
You can then run the following commands to compile the project:
|
|
|
|
cd build/
|
|
cmake ..
|
|
make
|
|
|
|
This will create a static release binary of the project. If you wish to compile
|
|
with debug options then you can append the `-DCMAKE_BUILD_TYPE=debug' flag to
|
|
the `cmake' command. Likewise, to create a dynamic binary use the
|
|
`-DBUILD_SHARED_LIB=ON' flag.
|
|
|
|
For installation or packaging you will want to use the
|
|
`-DCMAKE_INSTALL_PREFIX=<install_dir>' option. If you are installing it
|
|
manually then you should probably use `/usr/local/' as the installation
|
|
directory. Otherwise, if you are packaging, please consult your distribution's
|
|
policies.
|
|
|
|
# Contributing
|
|
--------------
|
|
NeoComm is free/libre software[0]. To contribute simply send a patch file to my
|
|
e-mail: <nortega@themusicinnoise.net>. However, be sure to read the
|
|
contributors guide in the `CONTRIBUTING' file before doing so.
|
|
|
|
[0] https://www.gnu.org/philosophy/free-sw.html
|
|
|
|
# License
|
|
---------
|
|
This project is licensed under the terms & conditions of the GNU Affero General
|
|
Public License version 3 or greater (see `LICENSE' file for more information).
|