CINXE.COM

WebSub - IndieWeb

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-zebra-design-disabled vector-feature-custom-font-size-clientpref-disabled vector-feature-client-preferences-disabled vector-feature-typography-survey-disabled vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>WebSub - IndieWeb</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-zebra-design-disabled vector-feature-custom-font-size-clientpref-disabled vector-feature-client-preferences-disabled vector-feature-typography-survey-disabled vector-toc-available";var cookie=document.cookie.match(/(?:^|; )wikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"52b80a45041958579098c4ef","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"WebSub","wgTitle":"WebSub","wgCurRevisionId":97922,"wgRevisionId":97922,"wgArticleId":353,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["building-blocks","jargon"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"WebSub","wgRelevantArticleId":353,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":[],"wgRestrictionMove":[]};RLSTATE={"skins.vector.user.styles":"ready","site.styles":"ready","user.styles":"ready","skins.vector.user":"ready","user":"ready","user.options":"loading","codex-search-styles":"ready","skins.vector.styles": "ready","skins.vector.icons":"ready"};RLPAGEMODULES=["site","mediawiki.page.ready","mediawiki.toc","skins.vector.js"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/wiki/load.php?lang=en&amp;modules=codex-search-styles%7Cskins.vector.icons%2Cstyles&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/wiki/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/wiki/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.41.0"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="description" content="WebSub is an open standard (W3C Recommendation) notification-based protocol for web publishing and subscribing to streams and legacy feed files in real time, previously known as PubSubHubbub or PuSH, and briefly PubSub."> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes, minimum-scale=0.25, maximum-scale=5.0"> <link rel="icon" href="/favicon.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/wiki/opensearch_desc.php" title="IndieWeb (en)"> <link rel="EditURI" type="application/rsd+xml" href="https://indieweb.org/wiki/api.php?action=rsd"> <link rel="license" href="/IndieWebCamp:Copyrights"> <link rel="alternate" type="application/atom+xml" title="IndieWeb Atom feed" href="/wiki/index.php?title=Special:RecentChanges&amp;feed=atom"> <meta property="og:type" content="article"> <meta property="og:site_name" content="IndieWeb"> <meta property="og:title" content="WebSub"> <meta property="og:description" content="WebSub is an open standard (W3C Recommendation) notification-based protocol for web publishing and subscribing to streams and legacy feed files in real time, previously known as PubSubHubbub or PuSH, and briefly PubSub."> <meta property="og:url" content="https://indieweb.org/WebSub"> <link rel="webmention" href="https://webmention.io/indiewebcamp/webmention"> <script src="https://cdn.usefathom.com/script.js" site="ZPHFRYAA" defer></script> </head> <body class="skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-WebSub rootpage-WebSub skin-vector-2022 action-view skin--responsive"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site" role="navigation"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-" class="vector-menu mw-portlet mw-portlet- emptyPortlet" > <div class="vector-menu-heading"> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-Explore_the_IndieWeb" class="vector-menu mw-portlet mw-portlet-Explore_the_IndieWeb" > <div class="vector-menu-heading"> Explore the IndieWeb </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-🗽-Principles" class="mw-list-item"><a href="/principles"><span>🗽 Principles</span></a></li><li id="n-📜-Community-posts" class="mw-list-item"><a href="https://stream.indieweb.org/"><span>📜 Community posts</span></a></li><li id="n-🌐-Visit-a-random-site" class="mw-list-item"><a href="https://xn--sr8hvo.ws/random"><span>🌐 Visit a random site</span></a></li><li id="n-🎉-Get-a-personal-site" class="mw-list-item"><a href="/Getting_Started"><span>🎉 Get a personal site</span></a></li><li id="n-ℹ️-FAQ" class="mw-list-item"><a href="/FAQ"><span>ℹ️ FAQ</span></a></li><li id="n-🎁-2024-Gift-Calendar!" class="mw-list-item"><a href="/IndieWeb_Gift_Calendar"><span>🎁 2024 Gift Calendar!</span></a></li> </ul> </div> </div> <div id="p-Join_the_community!" class="vector-menu mw-portlet mw-portlet-Join_the_community" > <div class="vector-menu-heading"> Join the community! </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-🌈-Code-of-conduct" class="mw-list-item"><a href="/code-of-conduct"><span>🌈 Code of conduct</span></a></li><li id="n-📅-Events:-IndieWebCamps,-Homebrew-Website-Clubs-(HWC),-and-more!" class="mw-list-item"><a href="https://events.indieweb.org/"><span>📅 Events: IndieWebCamps, Homebrew Website Clubs (HWC), and more!</span></a></li><li id="n-👥--Meetups:-2025-04-09" class="mw-list-item"><a href="https://events.indieweb.org/tag/hwc"><span>👥 Meetups: 2025-04-09</span></a></li><li id="n-🎪-IWC-San-Diego-12/7…8" class="mw-list-item"><a href="/next-iwc"><span>🎪 IWC San Diego 12/7…8</span></a></li><li id="n-💬-Join-#indieweb-chat" class="mw-list-item"><a href="/discuss"><span>💬 Join #indieweb chat</span></a></li><li id="n-📜-Chat-log" class="mw-list-item"><a href="https://chat.indieweb.org/"><span>📜 Chat log</span></a></li><li id="n-📩-Subscribe-to-newsletter" class="mw-list-item"><a href="/this-week-in-the-indieweb"><span>📩 Subscribe to newsletter</span></a></li><li id="n-❤️-Sponsor" class="mw-list-item"><a href="/how-to-sponsor"><span>❤️ Sponsor</span></a></li> </ul> </div> </div> <div id="p-Developers" class="vector-menu mw-portlet mw-portlet-Developers" > <div class="vector-menu-heading"> Developers </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-🔩-Building-Blocks" class="mw-list-item"><a href="/Category:building-blocks"><span>🔩 Building Blocks</span></a></li><li id="n-📑-Projects" class="mw-list-item"><a href="/Projects"><span>📑 Projects</span></a></li><li id="n-🧰-Standards" class="mw-list-item"><a href="https://spec.indieweb.org/"><span>🧰 Standards</span></a></li><li id="n-💬-Join-developer-chat" class="mw-list-item"><a href="/discuss#dev"><span>💬 Join developer chat</span></a></li> </ul> </div> </div> <div id="p-Wiki_resources" class="vector-menu mw-portlet mw-portlet-Wiki_resources" > <div class="vector-menu-heading"> Wiki resources </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-👤-Login" class="mw-list-item"><a href="https://sso.indieweb.org/login?url=https%3A%2F%2Findieweb.org%2F"><span>👤 Login</span></a></li><li id="n-✳️-Recent-changes" class="mw-list-item"><a href="/Special:RecentChanges"><span>✳️ Recent changes</span></a></li><li id="n-🖼-Recent-uploads" class="mw-list-item"><a href="/Special:ListFiles"><span>🖼 Recent uploads</span></a></li><li id="n-🎲-Random-page" class="mw-list-item"><a href="/Special:Random"><span>🎲 Random page</span></a></li><li id="n-📑-5,602-articles" class="mw-list-item"><a href="/Special:Statistics"><span>📑 5,602 articles</span></a></li><li id="n-©-Wiki-content-is-CC0" class="mw-list-item"><a href="/IndieWebCamp:Copyrights"><span>© Wiki content is CC0</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/Main_Page" class="mw-logo"> <span class="mw-logo-container"> <img class="mw-logo-wordmark" alt="IndieWeb" src="/img/indiewebcamp-logo-lockup-color@1x.png" style="width: 10.125em; height: 4.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" id="" title="Search IndieWeb [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/wiki/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search IndieWeb" aria-label="Search IndieWeb" autocapitalize="none" title="Search IndieWeb [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links" aria-label="Personal tools" role="navigation" > <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet mw-portlet-vector-user-menu-overflow" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item"><a href="https://sso.indieweb.org/login?url=https%3A%2F%2Findieweb.org%2FWebSub" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span>Log in</span></a></li> </ul> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="More options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="https://sso.indieweb.org/login?url=https%3A%2F%2Findieweb.org%2FWebSub" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"></div> </div> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site" role="navigation"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <input type="checkbox" id="vector-toc-collapsed-checkbox" class="vector-menu-checkbox"> <nav id="mw-panel-toc" role="navigation" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark vector-sticky-pinned-container"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Beginning</div> </a> </li> <li id="toc-Why" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Why"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span>Why</div> </a> <ul id="toc-Why-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-How" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#How"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span>How</div> </a> <ul id="toc-How-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-IndieWeb_Examples" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#IndieWeb_Examples"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span>IndieWeb Examples</div> </a> <button aria-controls="toc-IndieWeb_Examples-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon vector-icon--x-small mw-ui-icon-wikimedia-expand"></span> <span>Toggle IndieWeb Examples subsection</span> </button> <ul id="toc-IndieWeb_Examples-sublist" class="vector-toc-list"> <li id="toc-Tantek" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Tantek"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span>Tantek</div> </a> <ul id="toc-Tantek-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Aaron_Parecki" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Aaron_Parecki"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span>Aaron Parecki</div> </a> <ul id="toc-Aaron_Parecki-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Bret_Comnes" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Bret_Comnes"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3</span>Bret Comnes</div> </a> <ul id="toc-Bret_Comnes-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Kyle_Mahan" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Kyle_Mahan"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.4</span>Kyle Mahan</div> </a> <ul id="toc-Kyle_Mahan-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Barnaby_Walters" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Barnaby_Walters"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.5</span>Barnaby Walters</div> </a> <ul id="toc-Barnaby_Walters-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-David_Shanske" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#David_Shanske"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.6</span>David Shanske</div> </a> <ul id="toc-David_Shanske-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Matthias_Pfefferle" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Matthias_Pfefferle"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.7</span>Matthias Pfefferle</div> </a> <ul id="toc-Matthias_Pfefferle-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Christian_Weiske" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Christian_Weiske"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.8</span>Christian Weiske</div> </a> <ul id="toc-Christian_Weiske-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Ben_Werdmuller" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Ben_Werdmuller"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.9</span>Ben Werdmuller</div> </a> <ul id="toc-Ben_Werdmuller-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Pelle_Wessman" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Pelle_Wessman"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.10</span>Pelle Wessman</div> </a> <ul id="toc-Pelle_Wessman-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Andy_Leap" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Andy_Leap"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.11</span>Andy Leap</div> </a> <ul id="toc-Andy_Leap-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-1000s_of_Known_Sites" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#1000s_of_Known_Sites"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.12</span>1000s of Known Sites</div> </a> <ul id="toc-1000s_of_Known_Sites-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Malcolm_Blaney" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Malcolm_Blaney"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.13</span>Malcolm Blaney</div> </a> <ul id="toc-Malcolm_Blaney-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-fluffy" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#fluffy"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.14</span>fluffy</div> </a> <ul id="toc-fluffy-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Silo_Implementations" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Silo_Implementations"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span>Silo Implementations</div> </a> <button aria-controls="toc-Silo_Implementations-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon vector-icon--x-small mw-ui-icon-wikimedia-expand"></span> <span>Toggle Silo Implementations subsection</span> </button> <ul id="toc-Silo_Implementations-sublist" class="vector-toc-list"> <li id="toc-Flickr" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Flickr"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span>Flickr</div> </a> <ul id="toc-Flickr-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Historical/Deprecated" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Historical/Deprecated"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span>Historical/Deprecated</div> </a> <ul id="toc-Historical/Deprecated-sublist" class="vector-toc-list"> <li id="toc-Instagram" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Instagram"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2.1</span>Instagram</div> </a> <ul id="toc-Instagram-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-Consuming_Implementations" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Consuming_Implementations"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span>Consuming Implementations</div> </a> <ul id="toc-Consuming_Implementations-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-How_To" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#How_To"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span>How To</div> </a> <button aria-controls="toc-How_To-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon vector-icon--x-small mw-ui-icon-wikimedia-expand"></span> <span>Toggle How To subsection</span> </button> <ul id="toc-How_To-sublist" class="vector-toc-list"> <li id="toc-Publish_and_Consume_a_WebSub-enabled_feed" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Publish_and_Consume_a_WebSub-enabled_feed"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.1</span>Publish and Consume a WebSub-enabled feed</div> </a> <ul id="toc-Publish_and_Consume_a_WebSub-enabled_feed-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-WordPress_Plugins_for_PuSH" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#WordPress_Plugins_for_PuSH"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.2</span>WordPress Plugins for PuSH</div> </a> <ul id="toc-WordPress_Plugins_for_PuSH-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Subscribing_to_Fragments" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Subscribing_to_Fragments"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.3</span>Subscribing to Fragments</div> </a> <ul id="toc-Subscribing_to_Fragments-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Testing_your_PuSH-enabled_feed" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Testing_your_PuSH-enabled_feed"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.4</span>Testing your PuSH-enabled feed</div> </a> <ul id="toc-Testing_your_PuSH-enabled_feed-sublist" class="vector-toc-list"> <li id="toc-Testing_PuSH_0.4" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Testing_PuSH_0.4"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.4.1</span>Testing PuSH 0.4</div> </a> <ul id="toc-Testing_PuSH_0.4-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Testing_PuSH_0.3" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Testing_PuSH_0.3"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.4.2</span>Testing PuSH 0.3</div> </a> <ul id="toc-Testing_PuSH_0.3-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Testing_your_PuSH_Subscriber" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Testing_your_PuSH_Subscriber"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.5</span>Testing your PuSH Subscriber</div> </a> <ul id="toc-Testing_your_PuSH_Subscriber-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Hubs" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Hubs"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span>Hubs</div> </a> <button aria-controls="toc-Hubs-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon vector-icon--x-small mw-ui-icon-wikimedia-expand"></span> <span>Toggle Hubs subsection</span> </button> <ul id="toc-Hubs-sublist" class="vector-toc-list"> <li id="toc-Testing_your_hub" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Testing_your_hub"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.1</span>Testing your hub</div> </a> <ul id="toc-Testing_your_hub-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Discussion" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Discussion"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span>Discussion</div> </a> <ul id="toc-Discussion-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Brainstorming" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Brainstorming"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span>Brainstorming</div> </a> <button aria-controls="toc-Brainstorming-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon vector-icon--x-small mw-ui-icon-wikimedia-expand"></span> <span>Toggle Brainstorming subsection</span> </button> <ul id="toc-Brainstorming-sublist" class="vector-toc-list"> <li id="toc-Non-Web_Facing_Consumers" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Non-Web_Facing_Consumers"> <div class="vector-toc-text"> <span class="vector-toc-numb">9.1</span>Non-Web Facing Consumers</div> </a> <ul id="toc-Non-Web_Facing_Consumers-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Issues" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Issues"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span>Issues</div> </a> <button aria-controls="toc-Issues-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon vector-icon--x-small mw-ui-icon-wikimedia-expand"></span> <span>Toggle Issues subsection</span> </button> <ul id="toc-Issues-sublist" class="vector-toc-list"> <li id="toc-Too_Complex" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Too_Complex"> <div class="vector-toc-text"> <span class="vector-toc-numb">10.1</span>Too Complex</div> </a> <ul id="toc-Too_Complex-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-FAQ" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#FAQ"> <div class="vector-toc-text"> <span class="vector-toc-numb">11</span>FAQ</div> </a> <ul id="toc-FAQ-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_Also" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#See_Also"> <div class="vector-toc-text"> <span class="vector-toc-numb">12</span>See Also</div> </a> <ul id="toc-See_Also-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> <div class="mw-content-container"> <main id="content" class="mw-body h-entry" role="main"> <header class="mw-body-header vector-page-titlebar"> <label id="vector-toc-collapsed-button" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet vector-button-flush-left cdx-button--icon-only" for="vector-toc-collapsed-checkbox" role="button" aria-controls="vector-toc" tabindex="0" title="Table of Contents"> <span class="vector-icon mw-ui-icon-wikimedia-listBullet"></span> <span>Toggle the table of contents</span> </label> <nav role="navigation" aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">WebSub</span></h1> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/WebSub" title="View the content page [c]" accesskey="c"><span>Page</span></a></li><li id="ca-talk" class="new vector-tab-noicon mw-list-item"><a href="/wiki/index.php?title=Talk:WebSub&amp;action=edit&amp;redlink=1" rel="discussion" title="Discussion about the content page (page does not exist) [t]" accesskey="t"><span>Discussion</span></a></li> </ul> </div> </div> <div id="p-variants" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="p-variants-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-variants" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="p-variants-label" for="p-variants-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/WebSub"><span>Read</span></a></li><li id="ca-viewsource" class="vector-tab-noicon mw-list-item"><a href="/wiki/index.php?title=WebSub&amp;action=edit" title="This page is protected.&#10;You can view its source [e]" accesskey="e"><span>View source</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/wiki/index.php?title=WebSub&amp;action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/WebSub"><span>Read</span></a></li><li id="ca-more-viewsource" class="vector-more-collapsible-item mw-list-item"><a href="/wiki/index.php?title=WebSub&amp;action=edit"><span>View source</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/wiki/index.php?title=WebSub&amp;action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/Special:WhatLinksHere/WebSub" title="A list of all wiki pages that link here [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/Special:RecentChangesLinked/WebSub" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/wiki/index.php?title=WebSub&amp;oldid=97922" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/wiki/index.php?title=WebSub&amp;action=info" title="More information about this page"><span>Page information</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <nav class="vector-page-tools-landmark vector-sticky-pinned-container" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From IndieWeb</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-parser-output"><p><span style="background:white; float:right;"> <span typeof="mw:File/Frameless"><a href="/File:websub.svg" class="mw-file-description" title="WebSub icon"><img alt="WebSub icon" src="/images/thumb/c/cf/websub.svg/128px-websub.svg.png" decoding="async" width="128" height="128" class="mw-file-element" srcset="/images/thumb/c/cf/websub.svg/192px-websub.svg.png 1.5x, /images/thumb/c/cf/websub.svg/256px-websub.svg.png 2x" /></a></span><br /> <span typeof="mw:File/Frameless"><a href="/File:w3c-logo.svg" class="mw-file-description" title="W3C logo"><img alt="W3C logo" src="/images/thumb/5/56/w3c-logo.svg/128px-w3c-logo.svg.png" decoding="async" width="128" height="85" class="mw-file-element" srcset="/images/thumb/5/56/w3c-logo.svg/192px-w3c-logo.svg.png 1.5x, /images/thumb/5/56/w3c-logo.svg/256px-w3c-logo.svg.png 2x" /></a></span> </span></p> <p><span class="p-summary"><b><dfn><a class="external text" href="https://www.w3.org/TR/websub/">WebSub</a></dfn></b> is an open standard (<a href="/W3C" title="W3C">W3C</a> Recommendation) notification-based protocol for web publishing and subscribing to <a href="/streams" class="mw-redirect" title="streams">streams</a> and legacy <a href="/feed_files" class="mw-redirect" title="feed files">feed files</a> in real time, previously known as <dfn>PubSubHubbub</dfn> or <dfn>PuSH</dfn>, and briefly <dfn>PubSub</dfn>.</span> </p> <ul><li>Latest published version: <a class="external free" href="https://www.w3.org/TR/websub/">https://www.w3.org/TR/websub/</a></li> <li>Latest draft: <a class="external free" href="https://websub.net/draft">https://websub.net/draft</a></li></ul> <p><span typeof="mw:File"><a href="/File:w3c-spec-REC.svg" class="mw-file-description"><img src="/images/thumb/1/19/w3c-spec-REC.svg/640px-w3c-spec-REC.svg.png" decoding="async" width="640" height="108" class="mw-file-element" srcset="/images/thumb/1/19/w3c-spec-REC.svg/960px-w3c-spec-REC.svg.png 1.5x, /images/thumb/1/19/w3c-spec-REC.svg/1280px-w3c-spec-REC.svg.png 2x" /></a></span> </p><p>WebSub started as PubSubHubbub, was refined in the W3C <a href="/Social_Web_Working_Group" title="Social Web Working Group">Social Web Working Group</a>, and published as a W3C Recommendation. </p> <h2><span class="mw-headline" id="Why">Why</span></h2> <p>You should implement WebSub for your home page updates so that IndieWeb <a href="/readers" class="mw-redirect" title="readers">readers</a> (like <a href="/Woodwind" title="Woodwind">Woodwind</a> and <a href="/Monocle" title="Monocle">Monocle</a>) can: </p> <ul><li>promptly fetch your posts when you publish them</li> <li>and avoid polling your server with unnecessary traffic</li></ul> <h2><span class="mw-headline" id="How">How</span></h2> <meta property="mw:PageProp/toc" /> <p>See: <a href="/How_to_publish_and_consume_WebSub" title="How to publish and consume WebSub">How to publish and consume WebSub</a> </p> <h2><span class="mw-headline" id="IndieWeb_Examples">IndieWeb Examples</span></h2> <p>There are several indieweb sites producing WebSub notifications, and a few indieweb-centric applications that consume them (see in particular indie <a href="/reader" title="reader">readers</a>, <a href="/Shrewdness" title="Shrewdness">Shrewdness</a> and <a href="/Woodwind" title="Woodwind">Woodwind</a>). Currently there are no known indieweb sites that subscribe to anything via WebSub, but there are a few separate-UI indie-<a href="/readers" class="mw-redirect" title="readers">readers</a> that use WebSub to subscribe to <a href="/h-feed" title="h-feed">h-feed</a> streams. </p> <h3><span class="mw-headline" id="Tantek">Tantek</span></h3> <p><span class="h-card" style="white-space:nowrap"><img src="https&#58;//tantek.com/logo.jpg" class="" style="height:1.1em;vertical-align:-.1em" alt="" /> <a href="/User:Tantek.com" title="User:Tantek.com">Tantek Çelik</a></span> uses <a href="/Falcon" title="Falcon">Falcon</a> to send WebSub notifications from his site tantek.com </p> <ul><li><a class="external text" href="http://tantek.com/2010/032/t3/bits-tweeting-from-my-site-favicon-twitter-pubsubhubbub">2010-02-01 onward</a> PuSH 0.3 notification sent for each entry in his Atom feed file</li> <li><a class="external text" href="http://tantek.com/2015/077/t3/switched-google-hub-to-superfeedr">2015-03-18 onward</a> PuSH 0.4 notification sent for each <a href="/h-entry" title="h-entry">h-entry</a> post on tantek.com HTML + <a href="/h-feed" title="h-feed">h-feed</a> home page</li></ul> <h3><span class="mw-headline" id="Aaron_Parecki">Aaron Parecki</span></h3> <p><span class="h-card" style="white-space:nowrap"><img src="https&#58;//aaronparecki.com/images/profile.jpg" class="" style="height:1.1em;vertical-align:-.1em" alt="" /> <a href="/User:Aaronparecki.com" title="User:Aaronparecki.com">Aaron Parecki</a></span> uses <a href="/p3k" title="p3k">p3k</a> to send PuSH notifications from his site aaronparecki.com </p> <ul><li>2012-08-18 through 2015-02-27 - PuSH 0.3 notification for every entry in his Atom feeds (notes, articles and replies). Using Google's appspot.com hub.</li> <li>2015-02-27 onward - PuSH 0.4 notification for every feed that is updated after a post is created, including <a href="/h-entry" title="h-entry">h-entrys</a> on home page, notes/articles/replies/etc pages, and tag pages. Using Superfeedr's hub.</li> <li>2015-03-26 - changed hub from Superfeedr to <a href="/Switchboard" title="Switchboard">Switchboard</a></li></ul> <h3><span class="mw-headline" id="Bret_Comnes">Bret Comnes</span></h3> <p><span class="h-card"><img src="https&#58;//farm3.staticflickr.com/2926/14055807513_dea2b533b6_s.jpg" class="" style="height:1.1em;vertical-align:-.1em" alt="" /> <a href="/User:Bret.io" title="User:Bret.io">Bret Comnes</a></span> sends PuSH notifications for his bret.io Github Pages/Jekyll Atom feed file <a class="external text" href="http://bret.io/2014/03/16/github-pages-pubsubhubbub-support-levels-up/">since 2014-03-16</a>. </p> <ul><li>PuSH 0.4 support with his home page <a href="/h-entry" title="h-entry">h-entrys</a> <a class="external text" href="https://github.com/bcomnes/bcomnes.github.io/blob/a29b0bf5cb26871f1c1002a2f8078b941c820fca/_includes/head-meta.html">since 2015-03-20</a></li></ul> <h3><span class="mw-headline" id="Kyle_Mahan">Kyle Mahan</span></h3> <p><span class="h-card"><img class="" style="height:1.1em;vertical-align:-.1em" alt="" /> <a href="/User:Kylewm.com" title="User:Kylewm.com">Kara Mahan</a></span> uses <a href="/Red_Wind" title="Red Wind">Red Wind</a> to send PuSH notifications for new/edited posts and new mentions in his kylewm.com Atom feed file since 2014-03-23 </p> <ul><li>Now also sending PuSH 0.4 notifications for updates to the main h-feed at kylewm.com, using a hub at superfeedr.com. Confirmed working 2015-02-21.</li></ul> <h3><span class="mw-headline" id="Barnaby_Walters">Barnaby Walters</span></h3> <p><span class="h-card"><img src="https&#58;//waterpigs.co.uk/photo-2021-04-22-100w.jpg" class="" style="height:1.1em;vertical-align:-.1em" alt="" /> <a href="/User:Waterpigs.co.uk" title="User:Waterpigs.co.uk">Barnaby Walters</a></span> uses <a href="/Taproot" title="Taproot">Taproot</a> to send PuSH notifications for each new post on his WaterPigs.co.uk homepage HTML feed using PuSH 0.4 and Google’s hub since 2014-03-25. </p> <h3><span class="mw-headline" id="David_Shanske">David Shanske</span></h3> <p><span class="h-card" style="white-space:nowrap"><img src="https&#58;//david.shanske.com/avatar/dshanske" class="" style="height:1.1em;vertical-align:-.1em" alt="" /> <a href="/User:David.shanske.com" title="User:David.shanske.com">David Shanske</a></span> uses <a href="/WordPress" title="WordPress">WordPress</a> and the PushPress plugin to send PuSH 0.3 notifications of <a class="external text" href="https://david.shanske.com/feed/">his RSS feed</a> updates since 2014-02-16. </p> <h3><span class="mw-headline" id="Matthias_Pfefferle">Matthias Pfefferle</span></h3> <p><span class="h-card" style="white-space:nowrap"><img src="https&#58;//s.gravatar.com/avatar/a2bdca7870e859658cece96c044b3be5.png" class="" style="height:1.1em;vertical-align:-.1em" alt="" />&#160;<a href="/User:Notiz.blog" title="User:Notiz.blog">Matthias Pfefferle</a></span> uses <a href="/WordPress" title="WordPress">WordPress</a> and the <a class="external text" href="https://wordpress.org/plugins/pubsubhubbub/">WebSub/PubSubHubbub Plugin</a> (selfdogfooding) to send PuSH notifications since 2011-01-29. </p> <ul><li>PuSH 0.4 with h-entrys support since 2012</li></ul> <h3><span class="mw-headline" id="Christian_Weiske">Christian Weiske</span></h3> <p><span class="h-card"><img src="https&#58;//avatar.cweiske.de/avatar/9e263681488308e5e5d5e548b2f9bc99" class="" style="height:1.1em;vertical-align:-.1em" alt="" /> <a href="/User:Cweiske.de" title="User:Cweiske.de">Christian Weiske</a></span> sends PuSH 0.4 notifications since 2015-04-01 using his own hub, <a href="/phubb" title="phubb">phubb</a>. </p> <h3><span class="mw-headline" id="Ben_Werdmuller">Ben Werdmuller</span></h3> <p><span class="h-card"><img src="http&#58;//werd.io/file/538d0a4cbed7de5111a1ad31/thumb.jpg" class="" style="height:1.1em;vertical-align:-.1em" alt="" /> <a href="/User:Werd.io" title="User:Werd.io">Ben Werdmüller</a></span> uses <a href="/Known" title="Known">Known</a> to send PuSH 0.4 notifications for each new post on his werd.io homepage HTML feed since at least 2015-05-04 (Known 0.7.8 release date). </p> <h3><span class="mw-headline" id="Pelle_Wessman">Pelle Wessman</span></h3> <p><span class="h-card" style="white-space:nowrap"><img src="http&#58;//voxpelli.com/avatar.jpg" class="" style="height:1.1em;vertical-align:-.1em" alt="" /> <a href="/User:Kodfabrik.se" title="User:Kodfabrik.se">Pelle Wessman</a></span> uses GitHub Pages + Superfeedr to send PuSH notifications from his site voxpelli.com </p> <ul><li><a class="external text" href="https://github.com/voxpelli/voxpelli.github.com/commit/b767625345d78987e9dce11cb0092353fd7ca81d">2011-08-09 onward</a> - manual PuSH notification sent for each Atom file</li> <li>2015-04-05 - automated notifications using <a class="external text" href="https://developer.github.com/v3/activity/events/types/#pagebuildevent">GitHub page_build webhook</a></li> <li><a class="external text" href="https://github.com/voxpelli/voxpelli.github.com/blob/4d6812d11cb76cabad85eec226403cc4f23fad56/_layouts/default.html">2015-05-16 onward</a> - PuSH 0.4 notification sent for the home page as well</li></ul> <h3><span class="mw-headline" id="Andy_Leap">Andy Leap</span></h3> <p><a href="/User:Vendaria.net" title="User:Vendaria.net">Andy Leap</a> sends PuSH 0.4 notifications for <a class="external text" href="http://vendaria.net">Vendaria.net</a> since 2015-05-16 </p> <h3><span class="mw-headline" id="1000s_of_Known_Sites">1000s of Known Sites</span></h3> <p>1000s of *.withknown.com sites send PuSH 0.4 notifications for each new post on their homepages's HTML feed since at least 2015-05-04 when Known 0.7.8 shipped with reliable PuSH 0.4 support. </p><p>There are also numerous (hundreds?) of <a href="/Known" title="Known">Known</a> installs that are also all likely running Known 0.7.8 or later and thus send PuSH 0.4 notifications. </p> <h3><span class="mw-headline" id="Malcolm_Blaney">Malcolm Blaney</span></h3> <p><span class="h-card" style="white-space:nowrap"><img src="https&#58;//mblaney.xyz/public/profile_thumb.png" class="" style="height:1.1em;vertical-align:-.1em" alt="" /> <a href="/User:Mblaney.xyz" title="User:Mblaney.xyz">Malcolm Blaney</a></span> uses <a href="/dobrado" title="dobrado">dobrado</a> to send PuSH notifications for new and updated posts. Support was added to dobrado on <a class="external text" href="https://gitlab.com/dobrado/dobrado/commit/c77b59f7290bd57975971d26649e7332fe18f2d3">2016-05-13</a> </p> <h3><span class="mw-headline" id="fluffy">fluffy</span></h3> <p><span class="h-card" style="white-space:nowrap"><img src="https&#58;//beesbuzz.biz/static/headshot.jpg" class="" style="height:1.1em;vertical-align:-.1em" alt="" /> <a href="/User:Beesbuzz.biz" title="User:Beesbuzz.biz">fluffy</a></span> uses <a href="/Pushl" title="Pushl">Pushl</a> to send WebSub notifications at site publish time, using <a href="/Superfeedr" title="Superfeedr">Superfeedr</a> as the hub, as of October 2018 </p> <h2><span class="mw-headline" id="Silo_Implementations">Silo Implementations</span></h2> <h3><span class="mw-headline" id="Flickr">Flickr</span></h3> <p>Flickr supports PuSH to subscribe to photos posted within specific locations or with given tags. <a class="external free" href="https://www.flickr.com/services/api/flickr.push.subscribe.html">https://www.flickr.com/services/api/flickr.push.subscribe.html</a> </p> <h3><span id="Historical.2FDeprecated"></span><span class="mw-headline" id="Historical/Deprecated">Historical/Deprecated</span></h3> <h4><span class="mw-headline" id="Instagram">Instagram</span></h4> <p>Instagram previously supported PuSH so that apps can subscribe to notifications whenever a user has posted a new photo. Their documentation page (<a class="external free" href="https://instagram.com/developer/subscriptions">https://instagram.com/developer/subscriptions</a>) now returns 404, which is probably related to deprecation of their API in favor of Facebook's Graph API which only works with business accounts. </p> <h2><span class="mw-headline" id="Consuming_Implementations">Consuming Implementations</span></h2> <p>The following implementations consume and subscribe to PuSH feeds: </p><p>WebSub: </p> <ul><li><a class="external text" href="https://feedmail.org">FeedMail</a></li></ul> <p>PuSH 0.4: </p> <ul><li><a href="/shrewdness" class="mw-redirect" title="shrewdness">shrewdness</a></li> <li><a href="/Woodwind" title="Woodwind">Woodwind</a></li> <li><a href="/dobrado" title="dobrado">dobrado</a></li> <li><a href="/Feed_on_Feeds" title="Feed on Feeds">Feed on Feeds</a></li></ul> <p>PuSH 0.3: </p> <ul><li><a href="/StatusNet" class="mw-redirect" title="StatusNet">StatusNet</a></li> <li><strike><a href="/tt-rss" class="mw-redirect" title="tt-rss">tt-rss</a></strike> WebSub support <a class="external text" href="https://git.tt-rss.org/fox/tt-rss.git/commit/?id=5b6ea1ef914d0d33516ce59df69637576055ce66">removed 2017-05-16</a> (<a class="external text" href="https://discourse.tt-rss.org/t/pubsubhubbub-websub-subscription-not-renewed/184/5">discussion</a>)</li></ul> <h2><span class="mw-headline" id="How_To">How To</span></h2> <h3><span class="mw-headline" id="Publish_and_Consume_a_WebSub-enabled_feed">Publish and Consume a WebSub-enabled feed</span></h3> <div style="text-indent:2em;font-style:italic">Main article: <a href="/How_to_publish_and_consume_WebSub" title="How to publish and consume WebSub">How to publish and consume WebSub</a></div> <p>PuSH 0.4 goes beyond previous versions to allow publishers to send push notifications for <i>any</i> HTTP resource (e.g. <a href="/h-feed" title="h-feed">h-feeds</a>). You should use the newer spec, 0.4. PuSH 0.3 supported push notifications only for legacy XML feed files. </p><p><b>See the main article: <a href="/How_to_publish_and_consume_WebSub" title="How to publish and consume WebSub">How to publish and consume WebSub</a>.</b> </p> <h3><span class="mw-headline" id="WordPress_Plugins_for_PuSH">WordPress Plugins for PuSH</span></h3> <p>The <a class="external text" href="https://wordpress.org/plugins/pushpress/">PushPress</a> plugin can be installed on a self-hosted <a href="/WordPress" title="WordPress">WordPress</a> set up. If you're using <a href="/WordPress.com" title="WordPress.com">WordPress.com</a>, they already support PuSH by default (using a built-in version of this plugin). </p><p>An alternative plugin written by <span class="h-card" style="white-space:nowrap"><img src="https&#58;//s.gravatar.com/avatar/a2bdca7870e859658cece96c044b3be5.png" class="" style="height:1.1em;vertical-align:-.1em" alt="" />&#160;<a href="/User:Notiz.blog" title="User:Notiz.blog">Matthias Pfefferle</a></span>, that supports the more recent PubSubHubbub v0.4 spec, is the <a class="external text" href="https://wordpress.org/plugins/pubsubhubbub/">WebSub/PubSubHubbub Plugin</a>. </p> <h3><span class="mw-headline" id="Subscribing_to_Fragments">Subscribing to Fragments</span></h3> <p>Superfeedr also offers the unique ability to subscribe to fragments on a page, using the # symbol. For example, if you subscribe to <a class="external free" href="http://tantek.com/#.hentry">http://tantek.com/#.hentry</a>, you will receive POST to your webhook/callback endpoint with the content of the first element of class "hentry" on <a class="external free" href="http://tantek.com/">http://tantek.com/</a> </p><p>This should be seen as an optimization. A minimal consumer can simply re-fetch the resource itself when it receives a ping. </p> <h3><span class="mw-headline" id="Testing_your_PuSH-enabled_feed">Testing your PuSH-enabled feed</span></h3> <p>There are several ways you can test whether or not your PuSH feed and pings are working properly: </p> <h4><span class="mw-headline" id="Testing_PuSH_0.4">Testing PuSH 0.4</span></h4> <ul><li><a href="/websub.rocks" title="websub.rocks">websub.rocks</a> - a validator to help you test your WebSub implementation (publisher and subscriber)</li></ul> <p><br /> </p> <ol><li>Subscribe to your home page in one of these indie <a href="/readers" class="mw-redirect" title="readers">readers</a>: <ul><li><a href="/Woodwind" title="Woodwind">Woodwind</a></li></ul></li> <li>Publish a new post and send a PuSH 0.4 notification</li> <li>Watch the reader to see if your post shows up - it should show up in seconds or less.</li></ol> <h4><span class="mw-headline" id="Testing_PuSH_0.3">Testing PuSH 0.3</span></h4> <p><b>RSS Reader</b> </p><p>Most <a class="external text" href="http://blog.superfeedr.com/state-of-pubsubhubbub/">popular RSS Readers</a> do implement PubSubHubbub, you can just subscribe to your feed on one of them, and see if the update as been propagated after you added content. </p><p><b>Status.net</b> </p> <ol><li>subscribe to your home page from a Status.net account</li> <li>publish stuff on your home page</li> <li>see updates appear in real time on your Status.net account</li></ol> <p><b>Bots</b> </p><p>There are several <a href="/XMPP" title="XMPP">XMPP</a>/<a href="/IRC" title="IRC">IRC</a> bots which allow you to subscribe to feeds and be notified of updates via any <a href="/XMPP" title="XMPP">XMPP</a> or <a href="/IRC" title="IRC">IRC</a> client. You’ll need an XMPP account, or an IRC client. </p> <ul><li><a class="external free" href="https://github.com/julien51/notifix">https://github.com/julien51/notifix</a> (see below)</li> <li><a class="external free" href="http://blog.superfeedr.com/notifixlight/">http://blog.superfeedr.com/notifixlight/</a></li> <li><a class="external free" href="http://push-bot.appspot.com/">http://push-bot.appspot.com/</a></li></ul> <p><b>Notifix</b> </p><p>Notifix is a bot (see above for source code). It's constantly connected to irc.freenode.net. Send him a private message like +help to see available commands. Subscribe with +subscribe &lt;feed&gt;, publish your content and see if you get the ping straight via IRC. </p> <ul><li>I have had better experiences with notifixlite than PuSH Bot --<a href="/User:Waterpigs.co.uk" title="User:Waterpigs.co.uk">Waterpigs.co.uk</a> 03:16, 5 June 2013 (PDT)</li></ul> <h3><span class="mw-headline" id="Testing_your_PuSH_Subscriber">Testing your PuSH Subscriber</span></h3> <ul><li><a href="/websub.rocks" title="websub.rocks">websub.rocks</a> - a validator to help you test your WebSub implementation (publisher, subscriber, and hub)</li> <li><a class="external free" href="http://push-tester.cweiske.de/">http://push-tester.cweiske.de/</a> is a useful application for testing your subscribing code. This is a known-working WebSub publisher, so you can subscribe to it, post an update, and confirm that you received a ping from its hub.</li></ul> <ul><li><a class="external text" href="http://git.cweiske.de/push-tester.git/">push-tester</a> is a tool that mimicks a blog with <a href="/h-feed" title="h-feed">h-feed</a> and <a href="/h-entry" title="h-entry">h-entry</a> and allows posting new articles with a single click. A configurable PuSH hub is notified about the new post. Public instance: <a class="external free" href="http://push-tester.cweiske.de/">http://push-tester.cweiske.de/</a></li></ul> <h2><span class="mw-headline" id="Hubs">Hubs</span></h2> <ul><li><a class="external free" href="http://pubsubhubbub.superfeedr.com/">http://pubsubhubbub.superfeedr.com/</a> <ul><li>You can also register with Superfeedr to get your own subdomain (e.g. <a class="external free" href="https://kylewm.superfeedr.com">https://kylewm.superfeedr.com</a>). This gives you access to useful stats like number of subscribers and notifications.</li></ul></li> <li><a class="external free" href="https://pubsubhubbub.appspot.com/">https://pubsubhubbub.appspot.com/</a> <ul><li>As far as I have been able to tell, development on this hub completely halted in 2011, and it was left in a weird state. Appears to partially support non-XML feeds but for example requires hub.verify (a parameter that was removed in 0.4). For new development and for all h-feeds I strongly recommend <i>not</i> using this hub. <a href="/User:Kylewm.com" title="User:Kylewm.com">Kylewm.com</a> 13:55, 28 February 2015 (PST)</li> <li><a href="/User:Onebigfluke.com" title="User:Onebigfluke.com">User:Onebigfluke.com</a> is aware of the issue and planning to fix it. <a class="external text" href="https://twitter.com/kylewm2/status/571772478910963712">More details on this Twitter thread</a> <a href="/User:Kylewm.com" title="User:Kylewm.com">Kylewm.com</a></li></ul></li> <li><a href="/phubb" title="phubb">phubb</a> - open source PHP PubSubHubbub server</li> <li><a class="external text" href="https://github.com/aaronpk/Switchboard">Switchboard</a> by <span class="h-card" style="white-space:nowrap"><img src="https&#58;//aaronparecki.com/images/profile.jpg" class="" style="height:1.1em;vertical-align:-.1em" alt="" /> <a href="/User:Aaronparecki.com" title="User:Aaronparecki.com">Aaron Parecki</a></span></li> <li><a class="external text" href="https://wordpress.org/plugins/pubsubhubbub/">Wordpress plugin</a></li> <li><a class="external free" href="https://websubhub.com/">https://websubhub.com/</a></li></ul> <p>See <a class="external free" href="https://github.com/pubsubhubbub/PubSubHubbub/wiki/Hubs">https://github.com/pubsubhubbub/PubSubHubbub/wiki/Hubs</a> for more of them. </p> <h3><span class="mw-headline" id="Testing_your_hub">Testing your hub</span></h3> <p><a class="external text" href="https://websub.rocks">websub.rocks</a> has a tool that will generate a page with <a href="/h-entry" title="h-entry">h-entrys</a> that you can subscribe to. </p><p><a class="external text" href="http://git.cweiske.de/push-tester.git/">push-tester</a> is a tool that mimicks a blog with <a href="/h-feed" title="h-feed">h-feed</a> and <a href="/h-entry" title="h-entry">h-entry</a> and allows posting new articles with a single click. A configurable PuSH hub is notified about the new post. </p><p>Public instance: <a class="external free" href="http://push-tester.cweiske.de/">http://push-tester.cweiske.de/</a> </p> <h2><span class="mw-headline" id="Discussion">Discussion</span></h2> <p>Discussion about WebSub primarily occurs on the <a class="external text" href="https://github.com/w3c/websub/issues">GitHub repo</a>, but there's also a W3C community group: </p> <ul><li><a class="external free" href="https://www.w3.org/TR/websub/">https://www.w3.org/TR/websub/</a> - official spec</li> <li><a class="external free" href="https://www.w3.org/community/swicg/">https://www.w3.org/community/swicg/</a> - W3C's Social community group, which works on extensions to the SocialWG's specs, including WebSub. If you're interested in WebSub, and already have a W3C login, you should join as well to help support the overall WebSub effort.</li></ul> <h2><span class="mw-headline" id="Brainstorming">Brainstorming</span></h2> <h3><span class="mw-headline" id="Non-Web_Facing_Consumers">Non-Web Facing Consumers</span></h3> <p>How can we support PuSH consumers that do not have a publicly routable URL, such as devices behind a firewall or NAT? Maybe a hub or an external service could provide an alternative subscription mechanism such as websockets or eventsource, which could then make the PuSH subscription on behalf of the consumer. <span class="h-card"><a href="/User:Aaronparecki.com" title="User:Aaronparecki.com">Aaron Parecki</a></span> 12:32, 26 May 2015 (PDT) </p> <h2><span class="mw-headline" id="Issues">Issues</span></h2> <h3><span class="mw-headline" id="Too_Complex">Too Complex</span></h3> <p>In the past (2013 era) there was controversy about PubSubHubbub being too complex for the indieweb. Since then numerous indieweb sites support PuSH notifications of their published content, and we have a few new PuSH hubs built and maintained by indieweb folks, as well as readers subscribing to PuSH updates. The below is left as historical record of a past issue. </p> <ul><li>"PubSubHubbub (by Google for Google) or any push based solution for the web is unnecessarily complex for #indieweb. Polling works just fine.": <a class="external free" href="http://indiewebcamp.com/irc/2013-05-29#t1369859193">http://indiewebcamp.com/irc/2013-05-29#t1369859193</a> <ul><li>Polling is fine for async but we're past that now. <a href="/User:Kylewm.com" title="User:Kylewm.com">Kylewm.com</a> 22:24, 25 February 2015 (PST)</li></ul></li></ul> <h2><span class="mw-headline" id="FAQ">FAQ</span></h2> <p><b>Q:</b> How do I update the hub I am using and ensure subscribers update accordingly? </p><p><b>A:</b> Subscribers should poll occasionally to see if the hub has been updated. You can list and ping both hubs for a while to speed up the process. <a class="external autonumber" href="http://indiewebcamp.com/irc/2015-06-30#t1435697212867">[1]</a>. Also, hubs should actually notify the hub URL (as part of the discovery links) which means that subscribers will know about the designated hubs with every notification, making it completely optional to have a "routine" polling. It's considered good practice when a feed/publisher changes its hub to have a period during which it *also* pings the old hub (even after the discovery link was removed). </p><p><b>Q:</b> Is it allowed to have the <tt>hub</tt> link in the header, but the <tt>self</tt> link in HTML or vice versa? </p><p><b>A:</b> The spec says: "the publisher SHOULD include at least one Link Header [RFC5988] with rel=hub (a hub link header) as well as exactly one Link Header [RFC5988] with rel=self (the self link header)". That implies that they must be specified together. </p> <h2><span class="mw-headline" id="See_Also">See Also</span></h2> <ul><li><a href="/feeds" class="mw-redirect" title="feeds">feeds</a></li> <li><a href="/streams" class="mw-redirect" title="streams">streams</a></li> <li><a href="/push-vs-pull" title="push-vs-pull">push-vs-pull</a></li> <li><a href="/webmention" class="mw-redirect" title="webmention">webmention</a></li> <li><a href="/webhook" title="webhook">webhook</a></li> <li><a class="external text" href="https://github.com/pubsubhubbub">Prior PubSubHubbub specification</a></li> <li><a href="/Pushl" title="Pushl">Pushl</a></li> <li><a class="external text" href="http://beesbuzz.biz/blog/8139-Some-WebSub-Atom-observations">Some WebSub-Atom observations</a></li> <li><a class="external free" href="https://podnews.net/article/pubsubhubbub-for-podcasters">https://podnews.net/article/pubsubhubbub-for-podcasters</a></li> <li>Silo implementation: YouTube: <a class="external free" href="https://developers.google.com/youtube/v3/guides/push_notifications">https://developers.google.com/youtube/v3/guides/push_notifications</a></li></ul> <!-- NewPP limit report Cached time: 20250408062308 Cache expiry: 86400 Reduced expiry: false Complications: [show‐toc] CPU time usage: 0.055 seconds Real time usage: 0.066 seconds Preprocessor visited node count: 335/1000000 Post‐expand include size: 4272/2097152 bytes Template argument size: 557/2097152 bytes Highest expansion depth: 4/100 Expensive parser function count: 0/100 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 0/5000000 bytes --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 29.950 1 -total 14.18% 4.248 1 Template:t 13.15% 3.939 1 Template:gwg 8.93% 2.675 12 Template:sparkline 7.37% 2.208 1 Template:barnabywalters 7.35% 2.202 1 Template:bret 6.79% 2.033 1 Template:mblaney 6.57% 1.968 2 Template:aaronpk 6.38% 1.912 1 Template:beesbuzz.biz 6.21% 1.859 1 Template:main --> <!-- Saved in parser cache with key wiki:pcache:idhash:353-0!canonical and timestamp 20250408062308 and revision id 97922. Rendering was triggered because: page-view --> </div> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://indieweb.org/wiki/index.php?title=WebSub&amp;oldid=97922">https://indieweb.org/wiki/index.php?title=WebSub&amp;oldid=97922</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/Special:Categories" title="Special:Categories">Categories</a>: <ul><li><a href="/Category:building-blocks" title="Category:building-blocks">building-blocks</a></li><li><a href="/Category:jargon" title="Category:jargon">jargon</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" role="contentinfo" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 23 October 2024, at 15:18.</li> <li id="footer-info-copyright">Content is available under <a href="/IndieWebCamp:Copyrights" class="mw-redirect" title="IndieWebCamp:Copyrights">a CC0 public domain dedication</a> unless otherwise noted.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="/IndieWeb:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/IndieWeb:About">About IndieWeb</a></li> <li id="footer-places-disclaimers"><a href="/IndieWeb:General_disclaimer">Code of Conduct</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="http://creativecommons.org/publicdomain/zero/1.0/"><img src="https://i.creativecommons.org/p/zero/1.0/88x31.png" alt="a CC0 public domain dedication" width="88" height="31" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/"><img src="/wiki/resources/assets/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" srcset="/wiki/resources/assets/poweredby_mediawiki_132x47.png 1.5x, /wiki/resources/assets/poweredby_mediawiki_176x62.png 2x" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul> <li> <button class="cdx-button cdx-button--icon-only vector-limited-width-toggle" id=""><span class="vector-icon mw-ui-icon-fullScreen mw-ui-icon-wikimedia-fullScreen"></span> <span>Toggle limited content width</span> </button> </li> </ul> </div> <script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgBackendResponseTime":182,"wgPageParseReport":{"limitreport":{"cputime":"0.055","walltime":"0.066","ppvisitednodes":{"value":335,"limit":1000000},"postexpandincludesize":{"value":4272,"limit":2097152},"templateargumentsize":{"value":557,"limit":2097152},"expansiondepth":{"value":4,"limit":100},"expensivefunctioncount":{"value":0,"limit":100},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":0,"limit":5000000},"timingprofile":["100.00% 29.950 1 -total"," 14.18% 4.248 1 Template:t"," 13.15% 3.939 1 Template:gwg"," 8.93% 2.675 12 Template:sparkline"," 7.37% 2.208 1 Template:barnabywalters"," 7.35% 2.202 1 Template:bret"," 6.79% 2.033 1 Template:mblaney"," 6.57% 1.968 2 Template:aaronpk"," 6.38% 1.912 1 Template:beesbuzz.biz"," 6.21% 1.859 1 Template:main"]},"cachereport":{"timestamp":"20250408062308","ttl":86400,"transientcontent":false}}});});</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10