[feat] Support RSS 2.0 cloud and Atom 1.0 rel="hub" link elements in feeds #389

Open
opened 2022-12-22 00:32:44 +00:00 by pzingg · 0 comments

The idea

Provide an implementation of RSSCloud and WebSub protocols, so that subscribers can be notified of updates to user and tag RSS feeds in near realtime.

Then add server configuration options to potentially expose each protocol:

  1. In a cloud element of Akkoma's RSS 2.0 user and tag feeds, for readers to discover the RSS Cloud hub server.
  2. In a link rel="hub" element of Atom 1.0 user and tag feeds, for readers to discover the WebSub hub server.

Two configuration options, one for RSS Cloud and the other for WebSub should be provided under the :feed config option. For example (in config/description.exs):

      %{
        key: :rss_cloud_hub,
        type: :string,
        description: "URL of an external RSSCloud hub, or 'local' to use internal hub",
        suggestions: ["local", "none"]
      },
      %{
        key: :web_sub_hub,
        type: :string,
        description: "URL of an external WebSub hub, or 'local' to use internal hub",
        suggestions: ["local", "none"]
      }

A configuration value of a valid URL (with scheme, host, port and path items) would expose an external hub URL in the feeds, and the corresponding internal hub endpoints would return 404 status.

A configuration value of "local" would expose the URL of the internal RSS Cloud or Websub hub implementation in the feeds.

Any other configuration value (nil, "", "none", or an invalid URL) means that no hub would be exposed in the feeds, and the corresponding internal hub endpoints would return 404 status.

REST access to the internal hub server

Should the internal hub server support the subscribing and publishing endpoints for any HTTP REST client and any "topic" URL, or only for valid topics (feeds) on the same server, and/or only for users who can authenticate to the server for any topic, or not exposing a publishing endpoint at all (only accept the publishing of topics from the server via direct function calls)?

Leaving the internal hub server completely open to publishing invites DDOS attacks. Similarly, if unauthenticated subscribers are allowed to use the hub server, some kind of rate limiting might need to be implemented.

The reasoning

Dave Winer, the creator of RSS 2.0 is very interested in getting Fediverse systems to support notifications via RSS Cloud, so that they can interoperate in two-way communications). He is building demos and other tools around these capabilities, and is urging that Mastodon servers supply the necesary elements in the their public RSS feeds.

RSSCloud is fully supported in Wordpress.com, and an RSSCloud plugin is available for Wordpress.org sites.

A WebSub plugin is also available for Wordpress.org.

StatusNet also provides an RSSCloud server plugin, implemented in PHP, in its distribution.

Have you searched for this feature request?

  • I have double-checked and have not found this feature request mentioned anywhere.
  • This feature is related to the Akkoma backend specifically, and not pleroma-fe.
### The idea Provide an implementation of RSSCloud and WebSub protocols, so that subscribers can be notified of updates to user and tag RSS feeds in near realtime. Then add server configuration options to potentially expose each protocol: 1. In a `cloud` element of Akkoma's RSS 2.0 user and tag feeds, for readers to discover the RSS Cloud hub server. 2. In a `link rel="hub"` element of Atom 1.0 user and tag feeds, for readers to discover the WebSub hub server. Two configuration options, one for RSS Cloud and the other for WebSub should be provided under the `:feed` config option. For example (in config/description.exs): ``` %{ key: :rss_cloud_hub, type: :string, description: "URL of an external RSSCloud hub, or 'local' to use internal hub", suggestions: ["local", "none"] }, %{ key: :web_sub_hub, type: :string, description: "URL of an external WebSub hub, or 'local' to use internal hub", suggestions: ["local", "none"] } ``` A configuration value of a valid URL (with scheme, host, port and path items) would expose an external hub URL in the feeds, and the corresponding internal hub endpoints would return 404 status. A configuration value of "local" would expose the URL of the internal RSS Cloud or Websub hub implementation in the feeds. Any other configuration value (`nil`, "", "none", or an invalid URL) means that no hub would be exposed in the feeds, and the corresponding internal hub endpoints would return 404 status. #### REST access to the internal hub server Should the internal hub server support the subscribing and publishing endpoints for any HTTP REST client and any "topic" URL, or only for valid topics (feeds) on the same server, and/or only for users who can authenticate to the server for any topic, or not exposing a publishing endpoint at all (only accept the publishing of topics from the server via direct function calls)? Leaving the internal hub server completely open to publishing invites DDOS attacks. Similarly, if unauthenticated subscribers are allowed to use the hub server, some kind of rate limiting might need to be implemented. ### The reasoning Dave Winer, the creator of RSS 2.0 is very interested in getting Fediverse systems to support [notifications via RSS Cloud](http://scripting.com/2022/11/16.html#a221533), so that they can interoperate in two-way communications). He is building [demos](http://scripting.com/2022/12/20/164540.html) and other tools around these capabilities, and is urging that Mastodon servers supply the necesary elements in the their public RSS feeds. RSSCloud is fully supported in Wordpress.com, and an [RSSCloud plugin](https://github.com/wp-plugins/rsscloud/) is available for Wordpress.org sites. A [WebSub plugin](https://wordpress.org/plugins/pubsubhubbub/) is also available for Wordpress.org. StatusNet also provides an [RSSCloud server plugin](https://github.com/zcopley/StatusNet/tree/master/plugins/RSSCloud), implemented in PHP, in its distribution. ### Have you searched for this feature request? - [x] I have double-checked and have not found this feature request mentioned anywhere. - [x] This feature is related to the Akkoma backend specifically, and not pleroma-fe.
pzingg added the
feature request
label 2022-12-22 00:32:44 +00:00
floatingghost added the
extremely low priority
label 2022-12-22 05:01:13 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: AkkomaGang/akkoma#389
No description provided.