Go to file
Nicolás Ortega Froysa ef1ddb1133
Moved main header file.
2018-12-23 14:22:17 +01:00
build Add build directory. 2018-03-30 13:12:31 +02:00
include/neocomm Moved main header file. 2018-12-23 14:22:17 +01:00
src Changed channel to a class. 2018-09-04 15:52:10 +02:00
.gitignore Moving to full C++. 2018-03-29 15:04:17 +02:00
CHANGELOG Moving to full C++. 2018-03-29 15:04:17 +02:00
CMakeLists.txt Add channel.cpp and message.hpp 2018-09-04 15:51:41 +02:00
CONTRIBUTING Moving to full C++. 2018-03-29 15:04:17 +02:00
Doxyfile Moving to full C++. 2018-03-29 15:04:17 +02:00
LICENSE Moving to full C++. 2018-03-29 15:04:17 +02:00
README Adding Bitmessage as a means of collaboration. 2018-09-15 12:19:52 +02:00
TODO Update TODO 2018-09-02 12:33:03 +02:00

README

===============
*** 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]. Before contributing any code, please look at
the `CONTRIBUTING' file for contribution policy. You can send patch files with
contributions to <nortega@themusicinnoise.net> or to the community via
Bitmessage (see the 'Community' section below).

[0] https://www.gnu.org/philosophy/free-sw.html

# Community
-----------
NeoComm uses Bitmessage[0] for community collaboration. To receive updates on
NeoComm subscribe to the following address:

BM-NBHAvmbVbUnGxLDmGhZQ66uWUijd7uGi

There is also a public broadcast channel available:
Chan name/passphrase: neocomm
Chan address: BM-2cTDst8Xf8afFXFNdtT3qhU4vAJ4nXTYUW

[0] https://bitmessage.org/wiki/Main_Page

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