└── 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 |
--------------------------------------------------------------------------------