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).
 |