Podcasting 2.0 – Evolution of Podping

in #podcasting203 years ago (edited)

The beginning

<p dir="auto">For just <a href="https://write.agates.io/podcasting-2-0-the-last-mile" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">under a year, Podping has been available and in use -- through dedicated podcast hosting companies and also self-hosting individuals -- to efficiently notify interested parties of updates to RSS feeds that define podcasts. <p dir="auto">It was a bit rocky in the beginning, mostly because understanding the design simplicity offered by a decentralized message bus and defining a software interface to write to it efficiently are two different tasks. But it worked all along and we largely got through it without incident, thanks to the transparency and resiliency of the Hive blockchain. <p dir="auto">Unfortunately, since it's on a blockchain, some of the initial experiments proving out the concept of the project at large are still around. One of the most important concepts of a project like this is people can depend on a defined schema, even if it's implemented in a schemaless manner (JSON). <p dir="auto">Learning to communicate intent of the Podping project overall was helped by collaborating and putting out a stable release. The 1.0 release of <a href="https://github.com/Podcastindex-org/podping-hivewriter" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">podping-hivewriter, the current primary software we use to manage writing "podpings" to the Hive blockchain, came out several months after the original vision of the project had been laid down in a lowly <a href="https://noagendatube.com/videos/watch/aa312c55-4c26-4c76-b9ca-4e59737f0c8c" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Podcasting 2.0 developer roundtable. <h2>Intent <p dir="auto">While a stable release contributed to our understanding the stability of the system, we had only just begun to realize the potential we had beyond merely a simple podcast update system. <p dir="auto">After all, the original scope of Podping was to help reduce unnecessary polling of RSS feeds when they had no change in content. We had already accomplished this by allowing anyone to announce the following data on the blockchain within a given a "podping" event: <pre><code>{ "version": "0.3", "num_urls": 1, "reason": "feed_update", "urls": ["https://example.com/super-great-pod.xml"], } <p dir="auto">Simple! This tells a user that an update to the RSS feed that defines a fictitious "super great pod" podcast occurred. <p dir="auto">This alone is already more valuable than it would first appear. Not only can one reasonably assume they can stop polling feeds that get submitted via Podping; they also automatically obtain access to an entire history of podcasts. Without compromise. <p dir="auto">That would be enough for most people. <h2>Evolution <p dir="auto">But a few things had happened since the Podping project had been started. <p dir="auto">While the Podcasting 2.0 community had largely agreed that the movement was for <a href="https://write.agates.io/podcasting-2-0-more-than-podcasts" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">more than podcasts, no one really understood how to make that work. <p dir="auto">Eventually, I had postulated that the easiest way to do this was to <a href="https://write.agates.io/podcasting-2-0-when-semantics-matter" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">tell the consumer and shortly after wrote the <a href="https://github.com/Podcastindex-org/podcast-namespace/issues/263" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link"><podcast:medium> specification which was eventually <a href="https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#medium" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">finalized in The Podcast Namespace. <p dir="auto">In parallel, the Podcasting 2.0 community had been throwing around <a href="https://github.com/Podcastindex-org/podcast-namespace/issues/212" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">ways to formalize live streams within RSS feeds. <p dir="auto">Coincidentally, both had been finalized in <a href="https://github.com/Podcastindex-org/podcast-namespace#phase-4-closed-on-1212021" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Phase 4. It just so happens that <em>the type of the live stream depends on the medium. <p dir="auto">Our intent had evolved. <p dir="auto">Since the intention of having a medium is to tell the consumer, and it's to be expected that <em>not all consuming applications will care about all types of mediums, we had decided it was important enough to include in the basic event types of Podping. <p dir="auto">We had also realized decentralized live feeds weren't of much use to anyone without the ability to instantly notify consumers <em>when a live feed actually starts with an indication of priority <em>beyond normal feed updates. <h2>podping-hivewriter version 1.1 <p dir="auto">Given the above information, in addition of some new context about how the particularities of how Hive functions internally, we <a href="https://github.com/Podcastindex-org/podping-hivewriter/issues/18" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">made the decision as a team to improve upon the Podping events by including the above metadata directly in the event names (known as operation IDs in Hive). <p dir="auto">These event names are changing from <code>podping to the format of <code>pp_{medium}_{reason}, prefixed with <code>pp_ to denote podping. <p dir="auto">Where <code>{medium} can be one of, as of this time of writing, the following: <ul> <li><code>podcast <li><code>music <li><code>video <li><code>film <li><code>audiobook <li><code>newsletter <li><code>blog <p dir="auto">And <code>{reason} can be one of, as of this time of writing, the following: <ul> <li><code>update <li><code>live <p dir="auto">Importantly, the podping-hivewriter project will default to the <code>podping medium and <code>update reason to remain compatible with the current scope of users. Official documentation for the above reasons and their meaning will be available on the podping-hivewriter Github project by the time 1.1 stable is released. <p dir="auto">One may replace the <code>pp_ prefix with <code>pplt_ for "podping livetest," which is what we use during development and continuous integration of the podping-hivewriter project. You can use these "livetest" events to test these changes as a consumer before anyone officially adopts them. <h2>Definition <p dir="auto">In addition to the event name changes above, we also decided to change the on-chain Podping format to continue to communicate intent. <p dir="auto">In short, the new schema will use version "1.0" to help compatibility and is defined as follows: <pre><code>{ "version": "1.0", "medium": "<ex: podcast>", "reason": "<ex: update>", "iris": ["list", "of", "iris"], } <p dir="auto">Most noticeably, <code>urls is being changed to <code>iris. This indicates given RSS feeds can be identifiers besides HTTP URLs -- perhaps IPFS CIDs or magnet links, for example -- and the character set is "internationalized," supporting any UTF-8 character. Note that this has been assumed by podping-hivewriter since the 1.0 initial release and this is merely a name change. <p dir="auto">The addition of the <code>medium and <code>reason slugs to this schema is primarily for portability of data and flexibility of filtering. It is redundant to have it both in the schema and the event name, and that is intentional. <p dir="auto">Given the above additions, it's safe to say the following definition of Podping holds true and is identified by the intent of the given data: <blockquote> <p dir="auto">Podping is a mechanism of using decentralized communication to relay notification of updates of RSS feeds that use The Podcast Namespace. It does so by supplying minimum relevant metadata to consumers to be able to make efficient and actionable decisions, allowing them to decide what to do with given RSS feeds without parsing them ahead of time. <h2>Looking forward <p dir="auto">We have some more ideas to expand upon the Podping update reasons listed above. However, many of these will require new Podcast Namespace features as <a href="https://github.com/Podcastindex-org/podcast-namespace/blob/main/proposal-docs/podping/podping.md" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">outlined here by Brian of London. <p dir="auto">For example, we want to be able to allow hosts to use Podping as a way to tell consumers when a feed is changing hosts. In order to prevent abuse, we want to be able to tell consumers to expect this type of event to come from a known Hive account set within the RSS feed. <p dir="auto">After all, feeds already get polled to oblivion. Anyone announcing a feed update via podping is relatively harmless, even if it's not their feed. A host change, on the other hand, is another story altogether. We are trying to be cognizant of that for new features. <p dir="auto">The <code><podcast:podping> proposal also allows consumers to actually know when a feed is set to update via Podping, as opposed to guessing, helping to remove ambiguity. <h2>Conclusion <p dir="auto">In the last year we've turned the Podping project around from an experiment that happens to work well to a full-fledged project with defined scope. <p dir="auto">Podping doesn't just send URLs around to applications in hope that they know what to do with them, nor to funnel a user into clicking on something. It provides context as to why they were sent and how relevant the changes are to applications. <p dir="auto">Because we don't need new ways to send people URLs. People have been trying that for the last 16 years. <p dir="auto"><em><span>Reposted from <a href="https://write.agates.io/podcasting-2-0-evolution-of-podping" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://write.agates.io/podcasting-2-0-evolution-of-podping
Sort:  

Fantastic clear explanation. Very happy to be working alongside you on this.

#posh

Been a fun journey, Brian. Funny how a bit of your hacking around with beem and stumbling upon custom_json got us here.

So great to read about the project's evolution.

Hive-Tube now supports Podping! 😃😃😃😃😃
There are now hundreds of websites installing Hive-Tube every week (npmjs.com/package/peertube-plugin-hive-tube), so with Podping support this will definitely help to decentralize and monetize the Podcasters world. I'm sure they get tired of being censored and de-monetized.
Info: https://Hive-Tube.com

Which RSS feed type does Hive-Tube use in podping?

Media RSS 2.0, native on peertube servers:

Screenshot from 2022-11-12 07-47-47.png

These aren't valid feeds for Podping, we need to get regular podcast feeds in Peertube. I've already done most of the work but I need to get it upstream.

Yeah, Peertube is reeeeeeally limited right now when it comes to podcasts and proper rss. We are adding livestream support as we speak for Podping medium=live. Permanent lives (like webcams and radio stations) as well as occasional livestreams that only last for a couple hours or so. This release will be ready by end of this week.

Yes my RSS peertube feeds already support liveItem.

Is your plugin not open source? I have some ideas on how to integrate plugin support into RSS feed generation.

Congratulations @alecksgates! You have completed the following achievement on the Hive blockchain and have been rewarded with new badge(s):

<table><tr><td><img src="https://images.hive.blog/60x70/http://hivebuzz.me/@alecksgates/payout.png?202201251119" /><td>You received more than 100 HP as payout for your posts and comments.<br />Your next payout target is 250 HP.<br /><sub>The unit is Hive Power equivalent because your rewards can be split into HP and HBD <p dir="auto"><sub><em>You can view your badges on <a href="https://hivebuzz.me/@alecksgates" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">your board and compare yourself to others in the <a href="https://hivebuzz.me/ranking" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Ranking<br /> <sub><em>If you no longer want to receive notifications, reply to this comment with the word <code>STOP <p dir="auto"><strong><span>Check out the last post from <a href="/@hivebuzz">@hivebuzz: <table><tr><td><a href="/hivebuzz/@hivebuzz/pum-202201-22"><img src="https://images.hive.blog/64x128/https://i.imgur.com/nSxk3aq.png" /><td><a href="/hivebuzz/@hivebuzz/pum-202201-22">Hive Power Up Month - Feedback from day 22 <h6>Support the HiveBuzz project. <a href="https://hivesigner.com/sign/update_proposal_votes?proposal_ids=%5B%22199%22%5D&approve=true" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Vote for <a href="https://peakd.com/me/proposals/199" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">our proposal!

I ll really love to know more about this, is there a community on discord. I ll love to know more. In simpler terms. Thanks.

We mostly hang out on the Podcast Index Mastodon server. I know, it's not Hive :), but feel free to join us!

https://podcastindex.social/

That would be enough for most people.

or as we Jews say when discussing the miracles which led the Jews out of bondage in Egypt, דיינו!

Hi brian, I want to make a video in german explaining the podcast 2.0 and highlight youre work with the v4v.app.

Would you be in for a few quetions in february?

Sry tii hitchacknthe coment section here, but I felt this place fits.

Also, love the blog here, great update!
I use podping a lot hahah
🍀
!BEER 🍻

Happy to talk, but not in German!

Haha, yes amazing, of course we will talk in english, but it will set the stage to translate it in german as well 🍀 @yanyanje is a great speaker and could ethen make a voice over in german. But honestly I have to talk to her m about that hahah, shure he is in, I mean no pressure hahah

I will contact you on discord or so, and it would be a honer to spread the word of podcasting 2.0 and highlight youre work with the v4vapp in german.

Greez, 🍻
!BEER 🍻

<center><br /> <p dir="auto"><code>BEER<span>Hey <a href="/@brianoflondon">@brianoflondon, here is a little bit of <span> from <a href="/@sandymeyer">@sandymeyer for you. Enjoy it! <p dir="auto">Did you know that <a href="https://dcity.io/city" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">you can use <b>BEER at dCity game to **buy dCity NFT cards** to rule the world. <div>
<center><br /> <p dir="auto"><code>BEER<span>Hey <a href="/@brianoflondon">@brianoflondon, here is a little bit of <span> from <a href="/@sandymeyer">@sandymeyer for you. Enjoy it! <p dir="auto">Did you know that <a href="https://dcity.io/city" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">you can use <b>BEER at dCity game to **buy dCity NFT cards** to rule the world. <div>


The rewards earned on this comment will go directly to the person sharing the post on Twitter as long as they are registered with @poshtoken. Sign up at https://hiveposh.com.