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