mirror of
https://github.com/status-im/swarms.git
synced 2025-02-26 08:35:22 +00:00
Started with ReqEng for idea 39
This commit is contained in:
parent
a588d45fb8
commit
0ca610a3ce
113
.github/active/39-chat-moderation/README.md
vendored
Normal file
113
.github/active/39-chat-moderation/README.md
vendored
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
## Preamble
|
||||||
|
|
||||||
|
Idea: <to be assigned>
|
||||||
|
Title: Chat moderation
|
||||||
|
Status: Draft
|
||||||
|
Created: 2017-11-23
|
||||||
|
Related: https://github.com/status-im/ideas/issues/15
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
Moderation of public chat groups.
|
||||||
|
|
||||||
|
## Vision
|
||||||
|
|
||||||
|
Users must have greater control over the content in their chat feeds to ensure a positive experience. We can give users that control by providing them with a suite of moderation tools. Our moderation tools will enable users to define their own content rules or subscribe to a moderation provider to do it for them. A marketplace will ultimately exist where users can choose from a range of moderation providers.
|
||||||
|
|
||||||
|
## Swarm Participants
|
||||||
|
|
||||||
|
- Lead Contributor: @james
|
||||||
|
- Testing & Evaluation:
|
||||||
|
- Contributor: @themue
|
||||||
|
- Contributor:
|
||||||
|
- UX (if relevant):
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
## Goals & Implementation Plan
|
||||||
|
|
||||||
|
### Minimum Viable Product
|
||||||
|
|
||||||
|
Goal Date:
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
The MVP provides users with basic moderation tools so that they can block users, filter posts with certain phrases, and reduce spam.
|
||||||
|
|
||||||
|
### User Stories
|
||||||
|
|
||||||
|
#### Blocking a user
|
||||||
|
|
||||||
|
User A enters a public group chat. User B sends a message that User A dislikes. User A blocks User B. All messages from User B no longer show up in any chat feeds of User A.
|
||||||
|
|
||||||
|
#### Reducing spam
|
||||||
|
|
||||||
|
User A enters a public group chat. User A discovers that messages in the chat feed are low quality (spam). User A adjusts the required SNT burn value until the quality of the chat feed improves.
|
||||||
|
|
||||||
|
#### Filter unwanted content
|
||||||
|
|
||||||
|
User A does not want to view any messages that contain the phrase x. User A updates their moderation rules to ignore any messages that contain the phrase x. Messages that contain the phrase x no longer appear in any chat feeds of User A.
|
||||||
|
|
||||||
|
#### Advanced filtering with smart contracts
|
||||||
|
|
||||||
|
User A is a power user. User A configures their moderation rules to include the address of a smart contract that implements a standard rules interface. The smart contract will be called to evaluate new messages as they are received.
|
||||||
|
|
||||||
|
### Requirements
|
||||||
|
|
||||||
|
- A format / schema for moderation rules must be defined.
|
||||||
|
- A standard rules interface for smart contracts must be defined.
|
||||||
|
- A smart contract that must:
|
||||||
|
- Allow a caller to burn any ERC20 token.
|
||||||
|
- Allow a caller to label burn amounts.
|
||||||
|
- Return burn amounts given a token address, user address, and an optional label.
|
||||||
|
- A moderation settings UI must exist where the user may configure:
|
||||||
|
- Blocked users.
|
||||||
|
- Filtered phrases.
|
||||||
|
- The address of a smart contract to call.
|
||||||
|
- Burn amount required.
|
||||||
|
- UserA must be able to block a UserB from UserB's profile.
|
||||||
|
- Messages are evaluated against the moderation rules before they are rendered, aborting render where necessary.
|
||||||
|
- Moderation rules must persist between sessions.
|
||||||
|
- Chat group settings UI must:
|
||||||
|
- Display the user's burn amount for that channel.
|
||||||
|
- Allow users to burn tokens for that channel.
|
||||||
|
|
||||||
|
### Iteration 1
|
||||||
|
|
||||||
|
Goal Date:
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
Users can subscribe to moderation providers.
|
||||||
|
|
||||||
|
### User Stories
|
||||||
|
|
||||||
|
### Requirements
|
||||||
|
|
||||||
|
TBD
|
||||||
|
|
||||||
|
### Iteration 2
|
||||||
|
|
||||||
|
Goal Date:
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
A moderation marketplace.
|
||||||
|
|
||||||
|
### User Stories
|
||||||
|
|
||||||
|
### Requirements
|
||||||
|
|
||||||
|
TBD
|
||||||
|
|
||||||
|
### Iteration 1..N
|
||||||
|
|
||||||
|
Goal Date:
|
||||||
|
|
||||||
|
## Supporting Role Communication
|
||||||
|
|
||||||
|
## Post-Mortem
|
||||||
|
|
||||||
|
## Copyright
|
||||||
|
|
||||||
|
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
|
5
.github/active/39-chat-moderation/glossary.md
vendored
Normal file
5
.github/active/39-chat-moderation/glossary.md
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Glossary
|
||||||
|
|
||||||
|
| Term | Meaning |
|
||||||
|
|--------------------|--------------------------------------------------|
|
||||||
|
| Chat | Textual communication between two or more users. |
|
36
.github/active/39-chat-moderation/requirements/req-1-blocking-menu.md
vendored
Normal file
36
.github/active/39-chat-moderation/requirements/req-1-blocking-menu.md
vendored
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# Requirement 1: Blocking Menu
|
||||||
|
|
||||||
|
## User Stories
|
||||||
|
|
||||||
|
- [1: Blocking a User](https://github.com/ideas/active/39-chat-moderation/user-stories/us-1-blocking-a-user.md)
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
The individual menu for any participant of chat must contain a blocking menu point.
|
||||||
|
|
||||||
|
## Rationale
|
||||||
|
|
||||||
|
Selecting this menu by *User A* for a *User B* leads to the blocking of that user
|
||||||
|
for all feeds of *User A*.
|
||||||
|
|
||||||
|
## Fit Criteria
|
||||||
|
|
||||||
|
- Selecting this menu point leads to a security question.
|
||||||
|
- Confirming the menu point leads to a blinding out of all messages of
|
||||||
|
*User B* in all common feeds of *User A*.
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
## Conflicts
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
## Remarks
|
||||||
|
|
||||||
|
None.
|
9
.github/active/39-chat-moderation/roles.md
vendored
Normal file
9
.github/active/39-chat-moderation/roles.md
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Roles
|
||||||
|
|
||||||
|
| Role | Description |
|
||||||
|
|--------------------|----------------------------------------------|
|
||||||
|
| Owner | Creator and owner of a chat. |
|
||||||
|
| Moderator | User with rights to moderate a chat. |
|
||||||
|
| User | Chat user without special rights. |
|
||||||
|
| Contract Developer | Developer of contracts especially for chats. |
|
||||||
|
| Contract Provider | Provider of contracts especially for chats. |
|
40
.github/active/39-chat-moderation/user-stories/us-1-blocking-a-user.md
vendored
Normal file
40
.github/active/39-chat-moderation/user-stories/us-1-blocking-a-user.md
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# User Story 1: Blocking a User
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
*User A* enters a public group chat. *User B* sends a message that *User A* dislikes. *User A*
|
||||||
|
blocks *User B*. All messages from *User B* no longer show up in any chat feeds of *User A*.
|
||||||
|
|
||||||
|
## Trigger
|
||||||
|
|
||||||
|
Any reason *User A* doesn't want to see posts of *User B* anymore.
|
||||||
|
|
||||||
|
## Actors
|
||||||
|
|
||||||
|
- *User A*
|
||||||
|
- *User B*
|
||||||
|
|
||||||
|
## Pre-Condition
|
||||||
|
|
||||||
|
In a chat room with *User A*, *User B*, and possible more more *User A* can read all
|
||||||
|
messages of *User B*.
|
||||||
|
|
||||||
|
## Post-Condition
|
||||||
|
|
||||||
|
The same chat room with the same visitors, but *User A* doesn't see any post of *User B*.
|
||||||
|
Also in other chat rooms with both users *User A* doesn't see any post of *User B*.
|
||||||
|
|
||||||
|
## Flow
|
||||||
|
|
||||||
|
- *User A* selects account of *User B*.
|
||||||
|
- Menu with multiple options is display, one of those is `Block ...`-
|
||||||
|
- After selecting `Block ...` and confirming a security question posts of *User B* aren't
|
||||||
|
visible anymore to *User A*.
|
||||||
|
|
||||||
|
## Remarks
|
||||||
|
|
||||||
|
- Question: How to remove this blocking? Is *User B* still visible in the list of chat
|
||||||
|
participants and can be selected to open a menu like for blocking? Or does the chat
|
||||||
|
room menu an option to list all blocked users and those can be unblocked there?
|
||||||
|
- Question: How is quoting, mentioning, or forwarding of *User B* messages by *User C*
|
||||||
|
handled?
|
@ -32,7 +32,7 @@
|
|||||||
| @rasom | |
|
| @rasom | |
|
||||||
| @screwyprof | |
|
| @screwyprof | |
|
||||||
| @sla-shi | |
|
| @sla-shi | |
|
||||||
| @themue | |
|
| @themue | [#22](https://github.com/status-im/ideas/issues/22), [#39](https://github.com/status-im/ideas/issues/39) |
|
||||||
| @tiabc | [#10](https://github.com/status-im/ideas/issues/10) |
|
| @tiabc | [#10](https://github.com/status-im/ideas/issues/10) |
|
||||||
| @vkjr | [#34](https://github.com/status-im/ideas/issues/34) |
|
| @vkjr | [#34](https://github.com/status-im/ideas/issues/34) |
|
||||||
| @yenda | [#9](https://github.com/status-im/ideas/issues/9), [#12](https://github.com/status-im/ideas/issues/12) |
|
| @yenda | [#9](https://github.com/status-im/ideas/issues/9), [#12](https://github.com/status-im/ideas/issues/12) |
|
||||||
|
Loading…
x
Reference in New Issue
Block a user