100 lines
3.2 KiB
Markdown
100 lines
3.2 KiB
Markdown
Social
|
|
======
|
|
|
|
Data Modal
|
|
----------
|
|
```mermaid
|
|
classDiagram
|
|
User .. Piece
|
|
|
|
class Piece {
|
|
+User owner
|
|
+int visibility
|
|
}
|
|
User .. Activity
|
|
class Activity {
|
|
+User owner
|
|
+int visibility
|
|
+Piece action_object
|
|
}
|
|
Activity .. Piece
|
|
Activity .. Item
|
|
class Item {
|
|
+str title
|
|
+str brief
|
|
-enum type
|
|
}
|
|
```
|
|
|
|
Activities
|
|
----------
|
|
Activity data may be used for:
|
|
1. time line view of user and her friends
|
|
2. chronological view of user's action about an item
|
|
3. ActivityStreams `OrderedCollection` for ActivityPub
|
|
|
|
However, 2 is currently implemented separately via `ShelfLogManager` in `journal` app, because users may want to change these records manually.
|
|
|
|
Local Timeline
|
|
--------------
|
|
| Local Timeline Activities | action object class |
|
|
| ------------------------- | ------------------- |
|
|
| Add an Item to Shelf | ShelfMember |
|
|
| Create a Collection | Collection |
|
|
| Like a Collection | Like |
|
|
| Create a Review | Review |
|
|
|
|
|
|
Activity Streams
|
|
----------------
|
|
These are list of activities should be either shown in the site or delivered as ActivityStreams or both:
|
|
|
|
- `Add` / `Remove` an *Item* to / from a *List*:
|
|
+ add / remove *Item* to / from a user *Collection*
|
|
+ mark *Item* as wishlist / progress / complete, which are essentially add to / remove from user's predefined *Collection*
|
|
- `Create` / `Update` / `Delete` a user *Collection*
|
|
- `Create` / `Update` / `Delete` a *Content* with an `Object Link` to *Item*
|
|
+ `Create` / `Update` / `Delete` a *Comment* or *Review*
|
|
+ `Create` / `Update` / `Delete` a *Quote* or *Note*
|
|
- `Create` / `Update` / `Delete` a *Reply* to another *Content*
|
|
- `Announce` / `Like` a *Content* / *Collection*, or `Undo` that
|
|
- Social Graph interaction
|
|
+ `Follow`/`Unfo` `Follow`
|
|
+ `Accept`/`Reject`
|
|
+ `Block`/`Undo` `Block`
|
|
|
|
Supporting these activities above will be essential to a reasonable ActivityPub server implementation.
|
|
|
|
There are additional activities not made into ActivityPub MVP but technically possible to support in future:
|
|
- `Create` / `Update` / `Delete` a *Content* in different flavors, without link to *Item*
|
|
* `Note` or `Article` without link to *Item*
|
|
* DM (`Note`)
|
|
* `Question`
|
|
* `Article`
|
|
* `Page`
|
|
* `Image`
|
|
* `Audio`
|
|
* `Video`
|
|
* `Event`
|
|
- `Add` `Content` to / `Remove` `Content` from a user *Collection*
|
|
* *Pin* / *Unpin*
|
|
- `Move`/`Delete` account
|
|
|
|
ActivityPub
|
|
-----------
|
|
|
|
TBA
|
|
|
|
References:
|
|
- https://www.w3.org/TR/activitypub/
|
|
- https://www.w3.org/TR/activitystreams-core/
|
|
- https://www.w3.org/TR/activitystreams-vocabulary/
|
|
- https://www.w3.org/TR/json-ld/
|
|
- https://codeberg.org/fediverse/fep/src/branch/main/feps/fep-e232.md
|
|
- https://socialhub.activitypub.rocks/t/guide-for-new-activitypub-implementers/479
|
|
- https://docs.joinmastodon.org/spec/activitypub/
|
|
- https://docs.joinbookwyrm.com/activitypub.html
|
|
- https://github.com/Podcastindex-org/podcast-namespace/blob/main/proposal-docs/social/social.md#socialinteract-element
|
|
- https://dev.funkwhale.audio/funkwhale/funkwhale/-/tree/develop/docs/developer_documentation/federation
|
|
- https://github.com/inventaire/inventaire/issues/187
|
|
- https://github.com/inventaire/inventaire/issues/533
|