Add more examples and needs

This commit is contained in:
André Menrath 2023-10-05 11:56:20 +02:00
parent 31dea56de8
commit f3f50ce12c

View file

@ -27,15 +27,16 @@ The following terms are used:
- **post type:** Post type and custom post types within WordPress - **post type:** Post type and custom post types within WordPress
- **Object Type:** ActivityPub [Object-Type](https://www.w3.org/TR/activitystreams-vocabulary/#object-types) - **Object Type:** ActivityPub [Object-Type](https://www.w3.org/TR/activitystreams-vocabulary/#object-types)
- **Transformers:** a piece of code that transfers a WordPress post of a specific WordPress post type to an ActivityPub object of a specific WordPress-object-type. For example a transformer that can transform: - **Transformers:** a piece of code that converts items of a particular WordPress post type to an ActivityPub object of (a) specified type(s). For example a transformer that can transform:
- `post` to a `Note` - `post` to a `Note`
- `post` to a `Article` - `post` to a `Article`
- `post` to `Note`, `Article`, `Image`, `Audio` or `Article` depending on the [post-format](https://wordpress.org/documentation/article/post-formats/) - `post` to `Note`, `Article`, `Image`, `Audio` or `Article` depending on the [post-format](https://wordpress.org/documentation/article/post-formats/)
- `tribe_events` (Event post the of [The Event Calendar](https://wordpress.org/plugins/the-events-calendar/)) to `Event` - `tribe_events` (Event post the of [The Event Calendar](https://wordpress.org/plugins/the-events-calendar/)) to `Event`
- `podcast` (Podcast post of [Podlove Podcast Publisher](https://github.com/podlove/podlove-publisher)) to `PodcastEpisode` as ([proposed and implemented by Castopod](https://code.castopod.org/adaures/castopod/-/blob/main/app/Libraries/PodcastEpisode.php))
## General ## General
- **publish:** Sending a `Create`, `Update` or `Announce` [Activity](https://www.w3.org/TR/activitypub/#create-activity-outbox). - **publish/dispatch:** Sending a `Create`, `Update` or `Announce` [Activity](https://www.w3.org/TR/activitypub/#create-activity-outbox).
# Principals of the changes proposed to the ActivityPub plugin # Principals of the changes proposed to the ActivityPub plugin
@ -47,6 +48,7 @@ The WordPress ActivityPub plugin
- handles the controls collisions of actor names: - handles the controls collisions of actor names:
* collisions that are already present during activation of a WordPress actor type on the settings page * collisions that are already present during activation of a WordPress actor type on the settings page
* collisions that happen afterwards (e.g. a new user registering with the same username as the blog-wide actor) * collisions that happen afterwards (e.g. a new user registering with the same username as the blog-wide actor)
* (maybe) show notifications/warnings when using an actor name which has been used and followed by in the past, as there may be issues due to caching of the old public key.
- maybe distinguishes between the default admin user interface and advanced sections which give the user more fine-grained control: - maybe distinguishes between the default admin user interface and advanced sections which give the user more fine-grained control:
* transformer management * transformer management
* actor management * actor management
@ -58,8 +60,8 @@ Our primary goal is to make it possible that events created within an event plug
Nevertheless, we see a lot of other cases that can benefit, if we achieve this using a modularized approach as proposed below. The following list indicates examples what might be those other benefits: Nevertheless, we see a lot of other cases that can benefit, if we achieve this using a modularized approach as proposed below. The following list indicates examples what might be those other benefits:
- Other types of content get federated in a more feature rich way: - Other types of content get federated in a more feature rich way:
- `PodcastEpisode` (as proposed by CastoPod) - `PodcastEpisode` [as proposed by CastoPod](https://code.castopod.org/adaures/castopod/-/blob/main/app/Libraries/PodcastEpisode.php)
- `Question` (as used by Mastodon) - `Question`
- `Product` - `Product`
- ... - ...
- ActivityPub offers features how to deal with multilingual content ([contentMap - see Example 115](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-contentmap)) which could be implemented differently by multilingual and translation plugins (example search for the current use of `->set_content_map` within the ActivityPub plugin). - ActivityPub offers features how to deal with multilingual content ([contentMap - see Example 115](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-contentmap)) which could be implemented differently by multilingual and translation plugins (example search for the current use of `->set_content_map` within the ActivityPub plugin).
@ -101,7 +103,7 @@ x: ActivityPub object-types, y: WordPress post types
- Should a transformer be always a many-to-one relationship or may it be a many-to-many one. - Should a transformer be always a many-to-one relationship or may it be a many-to-many one.
- Do we really want to manage which transformers apply to what directly or do users prefer a setting like "let a certain plugin take care of this post type"? Then further configuration would have to be managed by the other plugins. - Highly unlikely: Do we really want to manage which transformers apply to what directly or do users prefer a setting like "let a certain plugin take care of this post type"? Then further configuration would have to be managed by the other plugins.
## Backend ## Backend
@ -152,10 +154,11 @@ Possible alternatives and solutions:
- Don't use an interface with implementations, (miss)use class extensions. - Don't use an interface with implementations, (miss)use class extensions.
# Actor Mapping Management # Mapping: Actors and Dispatching
More comprehensive actor management would benefit our project aims and potentially meet the needs of others in the future. Nevertheless, **its importance is considerably lower than that of Transformer management**. In the future, the following factors may become more important when larger websites should be using the ActivityPub plugin. More comprehensive actor management would benefit our project aims and potentially meet the needs of others in the future. Nevertheless, **its importance is considerably lower than that of Transformer management**. In the future, the following factors may become more important when larger websites should be using the ActivityPub plugin.
## Current situation
Currently, the admin user interface in v1.0.0 gives very limited options. Currently, the admin user interface in v1.0.0 gives very limited options.
``` ```
- [ ] Enable `blog`-actor - [ ] Enable `blog`-actor
@ -167,6 +170,9 @@ Note that depending on which options are enabled, the method of federating via A
- If both are enabled the `blog`-actor will announce (boosting) the posts of the - If both are enabled the `blog`-actor will announce (boosting) the posts of the
`author`-actors. `author`-actors.
Currently the whole logic controlling this is written within the `Activity_Dispatcher` [class](https://github.com/Automattic/wordpress-activitypub/blob/master/includes/class-activity-dispatcher.php#L21).
## Possibilities ## Possibilities
ActivityPub knows several [actor types](https://www.w3.org/TR/activitystreams-core/#actors): ActivityPub knows several [actor types](https://www.w3.org/TR/activitystreams-core/#actors):
- Application - Application
@ -183,6 +189,8 @@ The specifications allow for a lot of flexibility in their use. As WordPress web
- Additionally, for example, organizers in [The Event Calendar](https://wordpress.org/plugins/the-events-calendar/) could also offer their own actor of type `Organizer` or `Group` to publicize events, or create events if the `author`-actors are not enabled. - Additionally, for example, organizers in [The Event Calendar](https://wordpress.org/plugins/the-events-calendar/) could also offer their own actor of type `Organizer` or `Group` to publicize events, or create events if the `author`-actors are not enabled.
- Optional: As events are sometimes published a long time before they start, adding the posibility that events get announced again at a scheduled time before the start, e.g. by sending an `Announce` activity.
## Other features ## Other features
Other WordPress actor types might have valid use cases, like actors for categories, or specific post types in general: "I only want to see the blog updates, but I do not want to spam my timeline with each product they post on their site, even if they choose to federate them." Other WordPress actor types might have valid use cases, like actors for categories, or specific post types in general: "I only want to see the blog updates, but I do not want to spam my timeline with each product they post on their site, even if they choose to federate them."