WIP - WIP - WIP - WIP
Work In Progress
WIP - WIP - WIP - WIP
Moderable board system
The main idea in this specification is to provide a discussion system for Freenet, similar to the Frost one (based on boards, etc), but moderable.
Why ?
Because :
- No more spam (or at least, less spam)
- No more useless trolls (0.5/0.7 ; Linux/Windows ; etc)
- No more offtopic messages
- No more 'Anonymous'
Censorship ?
These moderable boards won't forbid to:
- Create an unmoderate board (just drop the private keys ; but people will have to trust you on this point)
- Create another board to discuss of something forbidden by the moderators
How ?
=> In a normal situation:
Board file (USK@...)
|-- Board settings (in the board file)
|-- Various informations (in the board file)
|-- Moderation file (USK@...)
|-- Thread list file (USK@...)
|-- Thread 1 (USK@...)
|-- Thread 2 (USK@...)
|-- Thread 3 (USK@...)
The board file can be updated only by an admin. An user need the public key of this file to read the content of the board.
The moderation file can be updated only by moderators.
The board file provides the private key for the thread list file: Any user can create a new thread.
The thread list file provides the private key for each thread : Any user can post a new message in this thread.
User programs must always get the board file and the moderation file with negative revisions, to try to get the latest version possible.
To be sure that all the messages are sent correctly and never erased by a bad guy : User programs, if they know a message or a thread that is no more available in the board, must re-add it (take care of collisions). One exception : If the message is specified in the moderation list, the user program must drop the message, or at least not re-add it.
Messages must *all* be signed.
=> When the board is spammed by a bad guy :
Administrator(s) can simply disable public message posting, or activate "full moderation".
> Disable public message posting :
Regenerate key pair for the thread list.
Republish the board file (Don't publish the private key of the thread list file !)
Give the private key to trusted people.
> "Full moderation" :
Regenerate key pair for the thread list.
Generate key pair for a public file : This file will contain all the messages waiting for moderation.
Republish the board file (Don't publish the private key of the thread list file, but publish the public and the private key of the "public file")
Give the private key of the thread list file to the moderators.
Let the moderators moves the acceptable messages from the "public file" to the thread list.
Possible problems
Boards will be f*cking long to refresh.
File details
<?xml version="1.0"?>
<!-- Inserted to have the form : USK@<...>/<boardName>/-<revision>[/...] -->
<!-- The corresponding file extension may be .frbd (FReenet BoarD)-->
<!-- Must always use negative revision to fetch this file -->
<!-- This file must always be fetched before any other -->
<board>
<description>
This is a magic board where you can say anything you want
about Thaw. But anything that the moderators don't like
will be moderated. Trepassers will be shot. Survivors
will be shot again.
</description>
<administators>
<!-- All the guys having the private key for this file / USK@ -->
<!-- Signature system will be similar to the Frost one -->
<!-- TODO : Details signature system -->
<signature>Jflesch@[...]</signature>
</administrators>
<moderators><!-- All the guys having the private key for the moderation file/USK@ rules (see below) -->
<!-- Signature system will be similar to the Frost one -->
<!-- TODO : Details signature system -->
<signature>Jflesch@[...]</signature>
<signature>toad@[...]</signature>
<signature>nextgen$@[...]</signature>
<!-- And all the staff -->
</moderators>
<!-- Must always be fetch with a negative revision -->
<!-- This tag is not present if "full moderation" is activated -->
<moderationRules>USK@[...]<moderationRules>
<links><!-- Links to other moderable boards -->
<link>USK@[...]/[name]/-[revision][/...]</link>
<link>USK@[...]/[name]/-[revision][/...]</link>
</links>
<threadList>
<!-- the public key is changed when "full moderation" is activated -->
<publicKey>USK@[...]</publicKey>
<!-- the private key is not provided when "full moderation" is activated-->
<privateKey>SSK@[...]</privateKey>
</threadList>
</board>
<?xml version="1.0"?>
<!-- Specify messages to never propagate and never show to the user -->
<!--
If, in the user interface, you allow to "disable moderation",
still *don't* propagate the moderated messages, but you can display them.
-->
<!-- This file is not used anymore if "full moderation" is activated -->
<moderationRules>
<moderate thread="25">
Put a reason here.
</moderate>
<moderate thread="3" message="25">
I don't like you.
</moderate>
<moderate thread="5">
Oh ! Come on ! Everybody knows that Windows sucks.
</moderate>
<moderationRules>