└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Podping 2 | Podping is a global message bus for podcast infrastructure events. Entities that publish feeds can "write" events into the 3 | system and those events are then visible to all parties who "watch" for them. Anyone can watch/monitor for events and 4 | respond appropriately, depending on their needs. It was developed as an alternative to WebSub and rssCloud which both 5 | have major drawbacks when it comes to podcasting infrastructure. 6 | 7 |
8 | 9 | ## Problem 10 | 11 | WebSub is a wonderful technology for the broader RSS world, and for small subscription bases. But, there are four main 12 | issues that make it less than ideal for the open world of podcasting: 13 | 14 | 1. Not all hosting companies have chosen to support it. 15 | 2. The burden of resubscribing on a per-feed basis every 7-15 days goes up exponentially as the feed count grows into 16 | 6 or 7 digits. 17 | 3. The WebSub ecosystem of hubs consists mainly of SuperFeedr and Google. Most feeds are concentrated on those two. 18 | 4. WebSub uses web hooks, so it requires having a server in order to receive notifications. This isn't useful for 19 | standalone apps. 20 | 21 | A final issue is that of reliability. In our experience, hubs have proven to be unreliable at times. Especially the 22 | free ones. We have seen what appear to be outage periods, or just silence. 23 | 24 |
25 | 26 | ## Solution 27 | 28 | A better solution than subscribing and re-subscribing constantly to individual podcast feeds is for aggregators, 29 | directories and apps to just subscribe to a single firehose of all podcast feed urls that publish a new episode. 30 | Podcast publishers notify [Podping.cloud](https://github.com/Podcastindex-org/podping.cloud) that a url they manage 31 | has updated. The podping server validates that publisher's identity and then writes the feed url, and any associated 32 | "reason" and "medium" codes to the [Hive](https://hive.io/) blockchain. In the future, other blockchains and pubsub 33 | protocols will be supported. 34 | 35 | Hive is an open blockchain that writes a new block every 3 seconds, and accepts custom data written into it. We simply 36 | write the urls of the updated feeds as a custom JSON object into the blockchain as we receive them. This allows anyone 37 | to just "watch" the Hive blockchain and see within about 20 seconds that a podcast feed url has updated and be 38 | confident that it's the Hosting company (or self-hosted podcaster) themselves that sent that notification. 39 | 40 | Multiple podping servers in different global regions will be run to ensure that there is no single point of failure. 41 | The "podping.cloud" host name will be load balanced to these servers. Any of the servers can handle receiving and 42 | writing urls to the blockchain. 43 | 44 | The bottom line is that podcasters and hosting companies just send a GET request with the url to a single web address, 45 | and everyone else in the industry can see that update within a few seconds with no subscribing (or re-subscribing) 46 | required by anyone. 47 | 48 |
49 | 50 | ## Rollout 51 | 52 | Initially, podping will be run by Podcastindex.org to facilitate its beta testing and development. Podcast Index will 53 | run multiple servers to distribute load and provide redundancy. But, we are building this software as an open source 54 | project so that it can eventually be run quickly and easily by any hosting provider, or even baked into other 55 | podcasting CMS projects. 56 | 57 | We encourage anyone and everyone to contribute to its development. 58 | 59 |
60 | 61 | ## The Parts 62 | The Podping system consists of multiple components: 63 | 64 | - [Podping.cloud](https://github.com/Podcastindex-org/podping.cloud) - Podping.cloud is the hosted front-end to the 65 | Podping system. It stands in front of the back-end writer(s) to provide a more friendly HTTP based 66 | API. 67 | - [Podping-hivewriter](https://github.com/Podcastindex-org/podping-hivewriter) - A backend writer that writes events 68 | to the Hive blockchain. 69 | - [Podping-hivewatcher](https://github.com/Podcastindex-org/podping-hivewatcher) - A script that anyone can run to 70 | watch the Hive blockchain for Podping events in real time. 71 | - [Podping-hivewatcher-js](https://github.com/Podcastindex-org/podping-hivewatcher-js) - A Javascript version of the 72 | hive watcher script. 73 | - [Podping-schemas](https://github.com/Podcastindex-org/podping-schemas) - The capnproto schema definitions used by 74 | Podping.cloud and the backend writers. 75 | - [Podping-schemas-python](https://github.com/Podcastindex-org/podping-schemas-python) - The Python version of the 76 | schema definitions. 77 | - [Podping-schemas-rust](https://github.com/Podcastindex-org/podping-schemas-rust) - The Rust version of the schema 78 | definitions. 79 | --------------------------------------------------------------------------------