Dscuss is a free software for public discussions. It builds an unstructured pure P2P topic-based publish-subscribe network. The current version is proof-of-concept.
The idea of the project
The purpose of Dscuss is quite similar to the Internet forums, but there is one fundamental difference -- social equality of all members involved (i.e no owners, no moderators, etc). See Classification for details.
This leads to the following key features, which will be provided by Dscuss:
- Decentralization. All the information will be stored on the users' machines.
- Personal moderation. Every user will be able to manage her own copy of data and may share her management operations (edit message, remove message, ban user and so on) with others, who would like to accept them.
Besides that, Dscuss is designed to provide the following features:
- Data authenticity
- Data integrity
- Data availability
- SPAM resistance
- Flood resistance
Dscuss is not intended to provide anonymity. However, this can probably be achieved using anonymizers like Tor
API description generated by godoc is available here.
Progress of development
The current stable version is proof-of-work. It has the following features:
- Command-line interface.
- Basic security based on ECDSA.
- Persistent storage for entities.
- Basic networking (TCP only).
- Registration (via proof-of-work).
- Bootstrapping (via list of rendezvous nodes).
- Peer handshaking.
- Publishing a message.
- Listing a category.
- Subscription to categories (via editing a text file).
- Threading (replying to messages).
- Operations on messages and users.
The version 0.1 is under development. The following features are already implemented:
- Database synchronization with other peers.
- Improved connectivity (bootstrapping via DHT).
- Web interface.
- Improved security (flood resistance).
The following additional features are planned for version 0.1:
- Improved security (SPAM resistance).
Dscuss is written in Go and currently has the following dependencies:
- github.com/abiosoft/ishell - Library for creating interactive cli applications.
- github.com/mattn/go-sqlite3 - SQLite driver.
- golang.org/x/crypto/scrypt - Library implementing "Stronger Key Derivation via Sequential Memory-Hard Functions".
- github.com/nictuku/dht - Kademlia/Bittorrent DHT library that implements BEP 5.
Initially Dscuss was supposed to be built on top of the GNUnet framework, but later it was considered not suitable for the purposes of Dscuss.
How to get the source code
The source code is available under GPL3.
To fetch the latest source code from the git repository, run the following command:
git clone git://vminko.org/dscuss
GitHub contains the backup Dscuss repository: github.com/vminko/dscuss.
If you want to get the proof-of-concept version (which is more or less stable):
git reset --hard proof-of-concept
You can use the web interface to browse the source code online.
Osiris -- a freeware program for creating decentralized web portals.
View notes about the database.