Andrew Jorgensen
It's better than bad, it's good!


WebSub is a publisher / subscriber standard for content on the web. For example, when you subscribe to a blog or news feed in Feedly or Inoreader these services will periodically query the feed to see if there are updates, but there's a better way. If the publisher supports WebSub, the service can instead subscribe to updates by sending a callback URL (a Webhook) to a Hub. When the publisher notifies the Hub that there's an update, the Hub fetches the content and delivers it immediately to all the Subscribers. This reduces the load on the publisher's servers and ensures timely delivery of updates. Draft versions of the standard were called PubSubHubbub or PuSH for short.

Admittedly that's a pretty niche thing. There are a total of, like, three well known services that make use of the standard and a handful of others. Then again, this kind of standard is what makes a vendor neutral, decentralized web possible. Publishers can use whatever Hub they prefer, and can migrate subscriptions to another hub when they want.

I stumbled across WebSub around the time AWS Lambda launched their new Function URLs feature, and I was itching to build something that used them, so I built a Subscriber.

WebSubscriber uses AWS Lambda, Function URLs, and DynamoDB to subscribe to web content, and delivers published content to Amazon SNS. In other words, it bridges the WebSub pub/sub system to the SNS pub/sub system. It's written in pure Python, using only the standard library and Boto3 (the AWS SDK for Python), and released under the MIT License. It passes all Subscriber tests in the WebSub Rocks! test suite. Just a hobby, won't be big and professional, but it was fun to write and combined with my SNS to Webhook Lambda Function I can be notified of updates to... my own blog. Yay!