Podcasting 2.0 RSS support #3248

Closed
opened 2026-02-22 08:10:57 -05:00 by deekerman · 25 comments
Owner

Originally created by @agates on GitHub (Feb 21, 2021).

Hello,

I am interested in adding RSS support for The "podcast" Namespace and possibly optional integration with the Podcast Index.

One of the goals of the project is to eventually add support for multiple "enclosures", via podcast:alternateEnclosure or with my podcast:media proposal (which was heavily influenced by Media RSS from PeerTube), in addition to all sorts of other things to help content creators, application developers, and hosts. You can find out more on the Podcasting 2.0 podcast.

I think it's a great fit for PeerTube specifically as a decentralized video ecosystem.

With that said:

  1. Would the project be interested in mainline support for this feature?
  2. If not, is it currently possible to implement some of these features as a plugin? Some initial things I'm thinking about:
    • Addition of a new RSS option for subscription
    • Addition of fields to a user's account and/or channel (primarily to include podcast:value support at first, but I'm sure this would expand)
Originally created by @agates on GitHub (Feb 21, 2021). Hello, I am interested in adding RSS support for [The "podcast" Namespace](https://github.com/Podcastindex-org/podcast-namespace) and possibly optional integration with the [Podcast Index](https://podcastindex.org/). One of the goals of the project is to eventually add support for multiple "enclosures", via `podcast:alternateEnclosure` or with [my `podcast:media` proposal](https://github.com/Podcastindex-org/podcast-namespace/issues/174) (which was heavily influenced by Media RSS from PeerTube), in addition to all sorts of other things to help content creators, application developers, and hosts. You can find out more on the [Podcasting 2.0 podcast](https://podcastindex.org/podcast/920666). I think it's a great fit for PeerTube specifically as a decentralized video ecosystem. With that said: 1. Would the project be interested in mainline support for this feature? 2. If not, is it currently possible to implement some of these features as a plugin? Some initial things I'm thinking about: - Addition of a new RSS option for subscription - Addition of fields to a user's account and/or channel (primarily to include `podcast:value` support at first, but I'm sure this would expand)
Author
Owner

@agates commented on GitHub (Feb 21, 2021):

Also, I think this a better solution for #2922 primarily because of the enclosure plans.

@agates commented on GitHub (Feb 21, 2021): Also, I think this a better solution for #2922 primarily because of the enclosure plans.
Author
Owner

@rigelk commented on GitHub (Feb 21, 2021):

Also, I think this a better solution for #2922 primarily because of the enclosure plans.

Could you elaborate?

@rigelk commented on GitHub (Feb 21, 2021): > Also, I think this a better solution for #2922 primarily because of the enclosure plans. Could you elaborate?
Author
Owner

@agates commented on GitHub (Feb 21, 2021):

Also, I think this a better solution for #2922 primarily because of the enclosure plans.

Could you elaborate?

The Podcast Namespace project is addressing the issues and lack of necessary features in standard, stagnated RSS with an official, community-supported XML namespace.

This includes, but is not limited to, a proposal to support multiple media formats and transport types. Development here, regardless of the route taken, would be great for feedback particularly as a video platform with optional audio and multiple transport types.

In addition, some of the other proposals could provide a framework to work on other additional features. One example is the podcast:value tag (still in flux) which provides a way for a client to stream bitcoin to the host/content creator via the lightning network.

I envision allowing PeerTube as a way for people to easily host their own video/audio "podcasts," but that's merely a vision in my head and I understand it's not the goal of the PeerTube project.

@agates commented on GitHub (Feb 21, 2021): > > Also, I think this a better solution for #2922 primarily because of the enclosure plans. > > Could you elaborate? The Podcast Namespace project is addressing the issues and lack of necessary features in standard, stagnated RSS with an official, community-supported XML namespace. This includes, but is not limited to, a proposal to support multiple media formats and transport types. Development here, regardless of the route taken, would be great for feedback particularly as a video platform with optional audio and multiple transport types. In addition, some of the other proposals could provide a framework to work on other additional features. One example is the `podcast:value` tag (still in flux) which provides a way for a client to stream bitcoin to the host/content creator via the lightning network. I envision allowing PeerTube as a way for people to easily host their own video/audio "podcasts," but that's merely a vision in my head and I understand it's not the goal of the PeerTube project.
Author
Owner

@rosano commented on GitHub (Sep 23, 2021):

Would be great to subscribe to any channel in a podcast player. Is there a way to accomplish this through plugins? If so, are there any plugins that one could use as a reference?

@rosano commented on GitHub (Sep 23, 2021): Would be great to subscribe to any channel in a podcast player. Is there a way to accomplish this through plugins? If so, are there any plugins that one could use as a reference?
Author
Owner

@agates commented on GitHub (Sep 23, 2021):

I have a fork that does this, but it's woefully out of date as I'm working on other items. You are free to use my fork.

I am interested in submitting a pull request with the new features at some point.

@agates commented on GitHub (Sep 23, 2021): I have a fork that does this, but it's woefully out of date as I'm working on other items. You are free to use my fork. I am interested in submitting a pull request with the new features at some point.
Author
Owner

@agates commented on GitHub (Feb 6, 2022):

FYI I am tracking this here.

Working on it and would like to discuss options for upstreaming soon. Contributions welcome!

https://github.com/users/agates/projects/1/views/7

@agates commented on GitHub (Feb 6, 2022): FYI I am tracking this here. Working on it and would like to discuss options for upstreaming soon. Contributions welcome! https://github.com/users/agates/projects/1/views/7
Author
Owner

@Chocobozzz commented on GitHub (Feb 7, 2022):

Hello,

Please use this fork to implement your podcast changes. I updated rigelk's fork to sync with upstream (that uses Typescript now)

@Chocobozzz commented on GitHub (Feb 7, 2022): Hello, Please use [this fork](https://github.com/Chocobozzz/feed/) to implement your podcast changes. I updated rigelk's fork to sync with upstream (that uses Typescript now)
Author
Owner

@ctlw83 commented on GitHub (Jun 1, 2022):

I second this request. Implementing the Podcast Namespace allows for all sorts of features and for discoverability through supporting podcast apps.

  • Any video's comment thread can be included in the RSS feed for that video allowing for cross-platform federated comment discussions
  • The Live tag allows for a podcast item letting apps know there is a live stream and then the video itself becomes a podcast episode once it is saved as a VOD.
  • The podcast namespace allows for features like streaming value payments through bitcoin lighting and doing one-time boosts through supporting podcast apps. Although, from a streaming perspective it opens up the ability to subscribe to a peertube user and share a certain amount of sats per hour or to do one-time boosts during key moments.
@ctlw83 commented on GitHub (Jun 1, 2022): I second this request. Implementing the Podcast Namespace allows for all sorts of features and for discoverability through supporting podcast apps. - Any video's comment thread can be included in the RSS feed for that video allowing for cross-platform federated comment discussions - The Live tag allows for a podcast item letting apps know there is a live stream and then the video itself becomes a podcast episode once it is saved as a VOD. - The podcast namespace allows for features like streaming value payments through bitcoin lighting and doing one-time boosts through supporting podcast apps. Although, from a streaming perspective it opens up the ability to subscribe to a peertube user and share a certain amount of sats per hour or to do one-time boosts during key moments.
Author
Owner

@agates commented on GitHub (Jun 2, 2022):

Working on it, getting back into the swing of things!

@agates commented on GitHub (Jun 2, 2022): Working on it, getting back into the swing of things!
Author
Owner

@agates commented on GitHub (Aug 25, 2022):

Before continuing further development on this, there are a few architectural decisions that need to be made regarding plugins. In order to outline the need for these decisions, I'll outline a few features that exist within the Podcasting 2.0 (abbreviated PC20) realm but may or may not be desirable in upstream PeerTube as a project.

1. XMPP Chat Support

On the roadmap for supporting live chat within PC20 is using standardize federation protocols. Initial plans for this are via XMPP as it is lightweight enough for many clients to implement, very scalable, moderation-friendly, and federated by design meaning an application only has to have the user sign in once.

Given that there is already a plugin for this by the wonderful @JohnXLivingston, all we will need for PC20 is to include some of the plugin metadata within the RSS feeds.

2. Podping Support

One of the other projects I work on is Podping (see Podcasting 2.0 – Evolution of Podping for example). This is a way to announce updates and live stream notifications within RSS feeds that support PC20. I already have <podcast:liveItem> support in my PeerTube work, but adding Podping will be critical either via the podping-hivewriter project and/or optionally something like podping.cloud. It's possible to do it directly from JavaScript too, of course, though I think it makes more sense to supply with a companion docker container.

In addition to live stream notifications, I also think using Podping + RSS is a phenomenal way to support content discovery given that the podcasting ecosystem already has a built in cultural mechanism if indexing and searching for content.

This notification/update system is already in use today by many podcast and video channels. However, I would understand perfectly if the PeerTube developers do not want to support it upstream due to its current dependency on the Hive blockchain and subsequent use of cryptocurrency. This is not the place for such a debate, I'm just trying to make my intentions for upstreaming clear.

3. Value 4 Value Support

Another feature is Value4Value (abbreviated V4V). Similarly to Podping support, this depends on cryptocurrency. The only current implementation is via Bitcoin on the lightning network, but the standard can support other currencies. (In fact, I'll probably add support for Monero once I get around to it)

The gist of this feature is the creator puts in one or more addresses where they can optionally receive payments. The instance administrators could opt to also include an address for as a sort of "hosting fee" (I currently do this on an instance I host). PeerTube developers could even build in a small % as a project donation.

Another way to think about V4V from a video-platform perspective is it's a decentralized alternative to bits from Twitch or super chats from YouTube.

Obviously the same disclaimer of controversy as the previous feature goes and I understand if PeerTube maintainers do not want it upstream. I'm not here to debate the merits of of the underlying technology.

4. Plugin Support

Given the above information, and likely due to upcoming features I'm still unaware of, there appears to be a need for plugins to hook into RSS feed generation. I need some guidance as to how to go about this, whether it's for only item 1 above or even 2 and 3.

I believe this plugin system would need ways to hook into every level of the RSS feed -- namely the channel and each individual item/liveItem -- and supply custom data structures to be rendered by the underlying RSS XML generator.

And just for reference, this is why I have yet to port my feed generator changes to the TypeScript version.

Conclusion

With all that said, I hope that underlines the need for RSS feed generation plugin support if only for XMPP support in RSS feeds. I would also like to know how I need to approach Podping and V4V support, be it focusing on upstream or holding off for plugin support.

If you're interested, for further information about why we're doing this check out It's not really about RSS and perhaps my appearance on Office Hours episode 7 where I talk about some of the PeerTube work I've been doing.

@agates commented on GitHub (Aug 25, 2022): Before continuing further development on this, there are a few architectural decisions that need to be made regarding plugins. In order to outline the need for these decisions, I'll outline a few features that exist within the Podcasting 2.0 (abbreviated PC20) realm but may or may not be desirable in upstream PeerTube as a project. ## 1. XMPP Chat Support On the roadmap for supporting live chat within PC20 is using standardize federation protocols. Initial plans for this are via XMPP as it is lightweight enough for many clients to implement, very scalable, moderation-friendly, and federated by design meaning an application only has to have the user sign in once. Given that there is already [a plugin](https://github.com/JohnXLivingston/peertube-plugin-livechat) for this by the wonderful @JohnXLivingston, all we will need for PC20 is to include some of the plugin metadata within the RSS feeds. ## 2. Podping Support One of the other projects I work on is Podping (see [Podcasting 2.0 – Evolution of Podping](https://write.agates.io/podcasting-2-0-evolution-of-podping) for example). This is a way to announce updates and live stream notifications within RSS feeds that support PC20. I already have [`<podcast:liveItem>`](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#live-item) support in my PeerTube work, but adding Podping will be critical either via the [podping-hivewriter](https://github.com/Podcastindex-org/podping-hivewriter) project and/or optionally something like [podping.cloud](https://github.com/podcastindex-org/podping.cloud). It's possible to do it directly from JavaScript too, of course, though I think it makes more sense to supply with a companion docker container. In addition to live stream notifications, I also think using Podping + RSS is a phenomenal way to support content discovery given that the podcasting ecosystem already has a built in cultural mechanism if indexing and searching for content. This notification/update system is already in use today by many podcast and video channels. However, I would understand perfectly if the PeerTube developers do not want to support it upstream due to its current dependency on the Hive blockchain and subsequent use of cryptocurrency. This is not the place for such a debate, I'm just trying to make my intentions for upstreaming clear. ## 3. Value 4 Value Support Another feature is [Value4Value](http://value4value.io) (abbreviated V4V). Similarly to Podping support, this depends on cryptocurrency. The only current implementation is via Bitcoin on the lightning network, but the standard can support other currencies. (In fact, I'll probably add support for Monero once I get around to it) The gist of this feature is the creator puts in one or more addresses where they can optionally receive payments. The instance administrators could opt to also include an address for as a sort of "hosting fee" (I currently do this on an instance I host). PeerTube developers could even build in a small % as a project donation. Another way to think about V4V from a video-platform perspective is it's a decentralized alternative to bits from Twitch or super chats from YouTube. Obviously the same disclaimer of controversy as the previous feature goes and I understand if PeerTube maintainers do not want it upstream. I'm not here to debate the merits of of the underlying technology. ## 4. Plugin Support Given the above information, and likely due to upcoming features I'm still unaware of, there appears to be a need for plugins to hook into RSS feed generation. I need some guidance as to how to go about this, whether it's for only item 1 above or even 2 and 3. I believe this plugin system would need ways to hook into every level of the RSS feed -- namely the channel and each individual item/liveItem -- and supply custom data structures to be rendered by the underlying RSS XML generator. And just for reference, this is why I have yet to port my feed generator changes to the TypeScript version. ## Conclusion With all that said, I hope that underlines the need for RSS feed generation plugin support if only for XMPP support in RSS feeds. I would also like to know how I need to approach Podping and V4V support, be it focusing on upstream or holding off for plugin support. *If you're interested, for further information about why we're doing this check out [It's not really about RSS](https://podcasting20.substack.com/p/its-not-really-about-rss) and perhaps my appearance on [Office Hours episode 7](https://www.officehours.hair/7) where I talk about some of the PeerTube work I've been doing.*
Author
Owner

@aprilthepink commented on GitHub (Sep 17, 2022):

would be nice to get at least basic support for podcasts using a RSS feed to work first and then later these optional complex features could be added :)
(maybe there is some work on a plugin already done which could be linked here?)

@aprilthepink commented on GitHub (Sep 17, 2022): would be nice to get at least basic support for podcasts using a RSS feed to work first and then later these optional complex features could be added :) (maybe there is some work on a plugin already done which could be linked here?)
Author
Owner

@emansom commented on GitHub (Sep 17, 2022):

@agates Please address @Chocobozzz's comment of adding support within his fork of the feed library instead for higher changes of this feature being implemented.

If that's not a viable plan for implementation, please elaborate on why and describe a alternative plan to acknowledge with @Chocobozzz.

@emansom commented on GitHub (Sep 17, 2022): @agates Please address @Chocobozzz's [comment of adding support within his fork of the feed library instead](https://github.com/Chocobozzz/PeerTube/issues/3761#issuecomment-1031200109) for higher changes of this feature being implemented. If that's not a viable plan for implementation, please elaborate on why and describe a alternative plan to acknowledge with @Chocobozzz.
Author
Owner

@agates commented on GitHub (Sep 17, 2022):

@agates Please address @Chocobozzz's comment of adding support within his fork of the feed library instead for higher changes of this feature being implemented.

If that's not a viable plan for implementation, please elaborate on why and describe a alternative plan to acknowledge with @Chocobozzz.

As I have discussed in detail, I can't do so until i know how to handle the need for plugin support.

@agates commented on GitHub (Sep 17, 2022): > @agates Please address @Chocobozzz's [comment of adding support within his fork of the feed library instead](https://github.com/Chocobozzz/PeerTube/issues/3761#issuecomment-1031200109) for higher changes of this feature being implemented. > > If that's not a viable plan for implementation, please elaborate on why and describe a alternative plan to acknowledge with @Chocobozzz. As I have discussed in detail, I can't do so until i know how to handle the need for plugin support.
Author
Owner

@emansom commented on GitHub (Sep 17, 2022):

As I have discussed in detail, I can't do so until i know how to handle the need for plugin support.

Please create a separate feature request elaborating on that.

@emansom commented on GitHub (Sep 17, 2022): > As I have discussed in detail, I can't do so until i know how to handle the need for plugin support. Please create a separate feature request elaborating on that.
Author
Owner

@agates commented on GitHub (Sep 17, 2022):

As I have discussed in detail, I can't do so until i know how to handle the need for plugin support.

Please create a separate feature request elaborating on that.

Why? It is part of podcasting 2.0 support. This issue is related to podcasting 2.0 support.

I would know, as I created the issue and many of the standards being implemented.

@agates commented on GitHub (Sep 17, 2022): > > As I have discussed in detail, I can't do so until i know how to handle the need for plugin support. > > Please create a separate feature request elaborating on that. Why? It is part of podcasting 2.0 support. This issue is related to podcasting 2.0 support. I would know, as I created the issue and many of the standards being implemented.
Author
Owner

@emansom commented on GitHub (Sep 17, 2022):

Why? It is part of podcasting 2.0 support. This issue is related to podcasting 2.0 support.

I would know, as I created the issue and many of the standards being implemented.

As you stated in your previous comment, if I understand correctly, you are blocked on lacking functionality within the plugin system.

@emansom commented on GitHub (Sep 17, 2022): > Why? It is part of podcasting 2.0 support. This issue is related to podcasting 2.0 support. > > I would know, as I created the issue and many of the standards being implemented. As you stated in your previous comment, if I understand correctly, you are blocked on lacking functionality within the plugin system.
Author
Owner

@agates commented on GitHub (Sep 17, 2022):

Why? It is part of podcasting 2.0 support. This issue is related to podcasting 2.0 support.

I would know, as I created the issue and many of the standards being implemented.

As you stated in your previous comment, if I understand correctly, you are blocked on lacking functionality within the plugin system.

Yes, however if it is determined that some of the features should be in upstream PeerTube, I can develop them immediately without plugin support.

This will also influence architecture of the code. Making this decision now will reduce the level of effort, of which I am not asking others to participate in developing prior to merging.

So with that said, even if plugin support is not finalized here, I need to know if i should develop podping and/or v4v support in the base project or plan to implement them as plugins.

Asking me, a volunteer in an open source project, to address a specific RSS library implementation does not answer this question.

@agates commented on GitHub (Sep 17, 2022): > > Why? It is part of podcasting 2.0 support. This issue is related to podcasting 2.0 support. > > > > I would know, as I created the issue and many of the standards being implemented. > > As you stated in your previous comment, if I understand correctly, you are blocked on lacking functionality within the plugin system. Yes, however if it is determined that some of the features should be in upstream PeerTube, I can develop them immediately without plugin support. This will also influence architecture of the code. Making this decision now will reduce the level of effort, of which I am not asking others to participate in developing prior to merging. So with that said, even if plugin support is not finalized here, I need to know if i should develop podping and/or v4v support in the base project or plan to implement them as plugins. Asking me, a volunteer in an open source project, to address a specific RSS library implementation does not answer this question.
Author
Owner

@emansom commented on GitHub (Sep 17, 2022):

So with that said, even if plugin support is not finalized here, I need to know if i should develop podping and/or v4v support in the base project or plan to implement them as plugins.

@Chocobozzz?

@emansom commented on GitHub (Sep 17, 2022): > So with that said, even if plugin support is not finalized here, I need to know if i should develop podping and/or v4v support in the base project or plan to implement them as plugins. @Chocobozzz?
Author
Owner

@vid-bin commented on GitHub (Sep 17, 2022):

@emansom I don't think he works weekends. I've never seen him post here or update the git on weekends.

@vid-bin commented on GitHub (Sep 17, 2022): @emansom I don't think he works weekends. I've never seen him post here or update the git on weekends.
Author
Owner

@emansom commented on GitHub (Sep 17, 2022):

@emansom I don't think he works weekends. I've never seen him post here or update the git on weekends.

The comments will still be there during business hours. 😄

@emansom commented on GitHub (Sep 17, 2022): > @emansom I don't think he works weekends. I've never seen him post here or update the git on weekends. The comments will still be there during business hours. 😄
Author
Owner

@Chocobozzz commented on GitHub (Sep 19, 2022):

Hi,

Plugins seem more appropriate for this use case. But I don't have a strong opinion on this

@Chocobozzz commented on GitHub (Sep 19, 2022): Hi, Plugins seem more appropriate for this use case. But I don't have a strong opinion on this
Author
Owner

@agates commented on GitHub (Sep 19, 2022):

Plugins seem more appropriate for this use case. But I don't have a strong opinion on this

Okay, that works for me. I think plugins will be more maintainable anyway.

I will take a look at implementing hooks for plugins. If I can't figure it out, I'll at least be able document the requirements in a separate feature request.

@agates commented on GitHub (Sep 19, 2022): > Plugins seem more appropriate for this use case. But I don't have a strong opinion on this Okay, that works for me. I think plugins will be more maintainable anyway. I will take a look at implementing hooks for plugins. If I can't figure it out, I'll at least be able document the requirements in a separate feature request.
Author
Owner

@agates commented on GitHub (Dec 28, 2022):

PR #5487 implements this as well as adds hooks to be able to add functionality via plugins.

@agates commented on GitHub (Dec 28, 2022): PR #5487 implements this as well as adds hooks to be able to add functionality via plugins.
Author
Owner

@agates commented on GitHub (May 4, 2023):

Awaiting feedback, cleaned up PR #5487 -- one developer is testing the hooks for their user case already.

@agates commented on GitHub (May 4, 2023): Awaiting feedback, cleaned up PR #5487 -- one developer is testing the hooks for their user case already.
Author
Owner

@Chocobozzz commented on GitHub (May 22, 2023):

Implemented in https://github.com/Chocobozzz/PeerTube/pull/5487

@Chocobozzz commented on GitHub (May 22, 2023): Implemented in https://github.com/Chocobozzz/PeerTube/pull/5487
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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
starred/PeerTube#3248
No description provided.