Use glossary and clarify deletion process

Part-of: <https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2630>
environments/review-docs-user-s36fyb/deployments/18961
Ciarán Ainsworth 2023-12-12 16:26:39 +01:00 zatwierdzone przez Ciarán Ainsworth
rodzic ba53d03ac5
commit 65f13a379f
2 zmienionych plików z 52 dodań i 59 usunięć

Wyświetl plik

@ -2,59 +2,72 @@
## Funkwhale glossary
```{glossary}
{.glossary}
Pod
A pod is an instance of Funkwhale running on a server. Pods can communicate with one another across the {term}`Fediverse`.
: A pod is an instance of Funkwhale running on a server. Pods can communicate with one another across the {term}`Fediverse`.
Authenticated
Users who have an account on a Funkwhale pod. These users provide their authentication information when accessing content.
: Users who have an account on a Funkwhale pod. These users provide their authentication information when accessing content.
Anonymous
Users who do not have an account on a Funkwhale pod. These users don't provide any authentication when accessing content.
: Users who do not have an account on a Funkwhale pod. These users don't provide any authentication when accessing content.
Permissions
Additional rights that an administrator/moderator can grant to a user. Permissions grant access to menus and actions in Funkwhale.
: Additional rights that an administrator/moderator can grant to a user. Permissions grant access to menus and actions in Funkwhale.
Available permissions:
Available permissions:
- {guilabel}`Moderation` – Grants access to the {guilabel}`Moderation` menu. Enables the user to moderate users, domains, and the allow-list.
- {guilabel}`Manage library` – Grants access to the {guilabel}`Library` menu. Enables the user to make changes to library content. This includes deleting local objects and handling edit suggestions.
- {guilabel}`Manage instance-level settings` – Grants access to the {guilabel}`Settings` menu. Enables the user to make changes to pod-level settings such as security settings and API behavior.
- {guilabel}`Moderation` – Grants access to the {guilabel}`Moderation` menu. Enables the user to moderate users, domains, and the allow-list.
- {guilabel}`Manage library` – Grants access to the {guilabel}`Library` menu. Enables the user to make changes to library content. This includes deleting local objects and handling edit suggestions.
- {guilabel}`Manage instance-level settings` – Grants access to the {guilabel}`Settings` menu. Enables the user to make changes to pod-level settings such as security settings and API behavior.
{.glossary}
Report categories
The different types of report a person can submit to your pod.
: The different types of report a person can submit to your pod.
Available categories:
Available categories:
- {guilabel}`Takedown request` – allow users to request content be removed from your pod.
- {guilabel}`Invalid metadata` – allow users to inform moderators about incorrect metadata on content.
- {guilabel}`Illegal content` – allow users to flag content as illegal.
- {guilabel}`Offensive content` – allow users to flag offensive or hurtful content to moderators.
- {guilabel}`Other` – allow users to submit reports that don't fit into the above categories.
```
- {guilabel}`Takedown request` – allow users to request content be removed from your pod.
- {guilabel}`Invalid metadata` – allow users to inform moderators about incorrect metadata on content.
- {guilabel}`Illegal content` – allow users to flag content as illegal.
- {guilabel}`Offensive content` – allow users to flag offensive or hurtful content to moderators.
- {guilabel}`Other` – allow users to submit reports that don't fit into the above categories.
## Channel glossary
```{glossary}
{.glossary}
Fediverse
A term used to refer to a collection of federated (interconnected) servers. These servers run software that enables users to publish and host their own content.
: A term used to refer to a collection of federated (interconnected) servers. These servers run software that enables users to publish and host their own content.
Podcatcher
A podcatcher is a piece of software that can read podcast feeds. Podcatchers enable listeners to follow and listen to podcast content.
```
: A podcatcher is a piece of software that can read podcast feeds. Podcatchers enable listeners to follow and listen to podcast content.
## Plugin glossary
```{glossary}
{.glossary}
Plugin
A plugin is a piece of software that extends the functionality of another piece of software.
: A plugin is a piece of software that extends the functionality of another piece of software.
Scrobbling
Scrobbling is the act of recording listen data. Services use this information to keep track of listening preferences and recommend music.
: Scrobbling is the act of recording listen data. Services use this information to keep track of listening preferences and recommend music.
```
## ActivityPub glossary
{.glossary}
User
: A **person** with an account on a Funkwhale server or ActivityPub-enabled platform.
Object
: A collection of information - formatted as [`JSON-LD`](https://json-ld.org/) - that represents entities such as content, users, or activities performed in Funkwhale. See the [ActivityPub specification](https://www.w3.org/TR/activitypub/#obj) for more details.
Activity
: A verb that describes an action targeting an **Object**. This informs the receiving server what it needs to do with the object. For example: `Create`, `Delete`, `Undo`, `Follow`, `Block`.
Actor
: An ActivityPub object acting on behalf of another object across federated services. See the [ActivityPub specification](https://www.w3.org/TR/activitypub/#actors) for more details.
Service actor
: A special actor that represents a Funkwhale pod. ActivityPub actors can [follow this actor](https://www.w3.org/TR/activitypub/#follow-activity-outbox) to receive updates to public content stored on the pod.
Tombstone
: A status that marks an object as deleted but leaves some metadata intact to prevent reuse.

Wyświetl plik

@ -1,44 +1,24 @@
# User deletion
## Terminology
The following terminology is used throughout this document:
User
: A **person** with an account on a Funkwhale server or ActivityPub-enabled platform.
Object
: A collection of information - formatted as [`JSON-LD`](https://json-ld.org/) - that represents entities such as content, users, or activities performed in Funkwhale. See the [ActivityPub specification](https://www.w3.org/TR/activitypub/#obj) for more details.
Activity
: A verb that describes an action targeting an **Object**. This informs the receiving server what it needs to do with the object. For example: `Create`, `Delete`, `Undo`, `Follow`, `Block`.
Actor
: An ActivityPub object acting on behalf of another object across federated services. See the [ActivityPub specification][actor] for more details.
Tombstone
: A status that marks an object as deleted but leaves some metadata intact to prevent reuse.
## The issue
Funkwhale users broadcast activities such as Listenings and Favorites both locally and over federation. Users require the ability to fully delete their presence from local and federated servers to comply with their request.
## The solution
User deletions must be actioned as _cascading_ deletions both locally and across federation. Any action associated with a user's actor should be deleted, and the actor itself must be marked as `Tombstoned` to prevent another user from claiming the actor in future.
User deletions must be actioned as _cascading_ deletions both locally and across federation. Any action or information associated with a user's {term}`actor <Actor>` should be deleted, and the actor itself must be marked as {term}`Tombstoned <Tombstone>` to prevent another user from claiming the actor in future.
:::{important}
If the user owns any joint Channels or Playlists, these should only be deleted if the user is the **only** user with access to the {term}`object <Object>`.
:::
When a user deletes their account, the following must happen:
1. The local server must remove all Favorites, Listenings, Collections, and Uploads owned by the actor
:::{info}
If the user owns any joint Channels or Playlists, these should only be deleted if the user is the **only** user with access to the object.
:::
3. The local server must delete the user's actor and mark it as `Tombstoned`
4. The local server must delete the actor of any Channels owned solely by the user and mark them as `Tombstoned`
5. The local server's **Service actor** must broadcast the deletion to the **Service actors** of all servers known to it
6. Remote servers should delete all data associated with the deleted actor, including cached content belonging to the actor
2. The local server must delete the user's profile and mark their actor as `Tombstoned`
3. The local server must delete the profile of any Channels owned solely by the user and mark their actor as `Tombstoned`
4. The local server's {term}`Service actor` must broadcast the deletion {term}`activity <Activity>` to the **Service actors** of all servers known to it
5. Remote servers should delete all data associated with the deleted actor, including cached content belonging to the actor
```{mermaid}
sequenceDiagram