Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Podcasting 2.0 RSS support #3761

Closed
agates opened this issue Feb 21, 2021 · 25 comments
Closed

Podcasting 2.0 RSS support #3761

agates opened this issue Feb 21, 2021 · 25 comments

Comments

@agates
Copy link
Contributor

agates commented 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)
@agates
Copy link
Contributor Author

agates commented Feb 21, 2021

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

@rigelk
Copy link
Collaborator

rigelk commented Feb 22, 2021

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

Could you elaborate?

@agates
Copy link
Contributor Author

agates commented Feb 22, 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.

@rosano
Copy link

rosano commented 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?

@agates
Copy link
Contributor Author

agates commented 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
Copy link
Contributor Author

agates commented 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

@Chocobozzz
Copy link
Owner

Hello,

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

@ctlw83
Copy link

ctlw83 commented 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.

@agates
Copy link
Contributor Author

agates commented Jun 2, 2022

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

@agates
Copy link
Contributor Author

agates commented Aug 26, 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.

@CutestNekoAqua
Copy link

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?)

@emansom
Copy link
Contributor

emansom commented 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.

@agates
Copy link
Contributor Author

agates commented 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.

@emansom
Copy link
Contributor

emansom commented 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.

@agates
Copy link
Contributor Author

agates commented 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.

@emansom
Copy link
Contributor

emansom commented 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.

@agates
Copy link
Contributor Author

agates commented 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.

@emansom
Copy link
Contributor

emansom commented 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?

@vid-bin
Copy link

vid-bin commented Sep 18, 2022

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

@emansom
Copy link
Contributor

emansom commented Sep 18, 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. 😄

@Chocobozzz
Copy link
Owner

Chocobozzz commented Sep 19, 2022

Hi,

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

@agates
Copy link
Contributor Author

agates commented 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
Copy link
Contributor Author

agates commented Dec 28, 2022

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

@agates
Copy link
Contributor Author

agates commented May 4, 2023

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

@Chocobozzz
Copy link
Owner

Implemented in #5487

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants