summaryrefslogtreecommitdiff
path: root/docs/dscuss.mkd
blob: 73f543c5678771cdcafcdf741e9efd24ed3ea7ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
Title:      Dscuss - P2P network for public discussions
Name:       Dscuss
Summary:    Traditional systems for public discussion (like Internet forums) do
            not provide equal rights to all users. Owners of the resource and
            moderators always possess extended rights. Sometimes these rights
            can be abused, which eventually can split the community of the
            resource and lead to its degeneration. As a solution to this problem
            we present Dscuss. It’s a peer-to-peer network for public
            discussions, which provides equal rights to all members of the
            community.
Copyright:  (c) 2011-2019 Vitaly Minko
            Content is available under GNU Free Documentation License 1.3 and
            Creative Commons Attribution-Share Alike 3.0 Unported License
Web:        http://vminko.org/dscuss
Sort by:    Date
Date:       31 Aug 2019
Priority:   4


_<div style="text-align: right">The moderators are dead! Long live the moderators!</div>_


**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][forum_wiki], but
there is one fundamental difference -- social equality of all members involved
(i.e no owners, no moderators, etc). See [Classification][cls] 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][tor_home]

[forum_wiki]: http://en.wikipedia.org/wiki/Internet_forum
[tor_home]: https://www.torproject.org/
[cls]: /dscuss/classification


API
---

API description generated by godoc is available [here][godoc].
[godoc]: /storage/dscuss/godoc/


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


Dependencies
------------

Dscuss is written in Go and currently has the following dependencies:

* [github.com/abiosoft/ishell][ish_home] - Library for creating interactive cli applications.
* [github.com/mattn/go-sqlite3][gosql] - [SQLite][sql_home] driver.
* [golang.org/x/crypto/scrypt][scrpt] - Library implementing "Stronger Key
  Derivation via Sequential Memory-Hard Functions".
* [github.com/nictuku/dht][dht] - Kademlia/Bittorrent DHT library that
  implements BEP 5.

Initially Dscuss was supposed to be built on top of the [GNUnet][gn_home]
framework, but later it was considered not suitable for the purposes of Dscuss.

[ish_home]: https://github.com/abiosoft/ishell
[sql_home]: http://www.sqlite.org/
[gosql]: https://github.com/mattn/go-sqlite3
[scrpt]: https://godoc.org/golang.org/x/crypto/scrypt
[dht]: https://github.com/nictuku/dht
[gn_home]: http://gnunet.org/


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

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][cgit] to browse the source code online.

[cgit]: http://dscuss.org/cgit/dscuss/


Similar projects
----------------

[Osiris](http://www.osiris-sps.org/) -- a freeware program for creating
decentralized web portals.