Webdesign

Pubsubhubbub: Feed-Push für Alle

16. September 2009
von

Den ulkigen Begriff Pubsubhubbub haben Sie in den letzten Monaten mit Sicherheit irgendwo schon mal gelesen und vermutlich haben Sie sich das Wort sogar halbwegs gemerkt. Vielleicht versuchten Sie zudem, zu verstehen, was sich dahinter verbirgt. Wenn Sie dabei nicht besonders hartnäckig waren, wird Ihnen das vermutlich misslungen sein. Denn im Netz findet man hauptsächlich Diskussionen unter Technikern. Ich versuche heute einen allgemein-verständlicheren Ansatz und kläre vor allem, welche einfachen Nutzungsmöglichkeiten es jetzt bereits gibt…

RSS/Atom: Das Problem

Zum Verständnis des Nutzens von Pubsubhubbub lässt es sich nicht vermeiden, einen  Blick in die “Vergangenheit” zu werfen. Keine Sorge. Ich fasse mich dabei kurz.

Sie alle kennen RSS/Atom. Publizieren wahrscheinlich selber einen oder mehrere Feeds. Dann wissen Sie, dass ein Feed darauf angewiesen ist, vom Client angefordert zu werden.

Sie haben einen interessanten Blogpost veröffentlicht. Dieser “liegt” jetzt in Ihrem Feed bereit, aber der Besucherclient ruft ihn nicht ab. Jedenfalls nicht zeitnah. Umgekehrt fragt Ihr Feedreader alle Nase lang, respektive in den von Ihnen definierten Intervallen die von Ihnen abonnierten Feeds ab und erhält die meiste Zeit die Antwort “Nichts Neues da.”

Schöner wäre da doch eine Lösung, die zum einen für eine sehr zeitnahe Information Ihrer Abonnenten sorgt und zum anderen auch Ihren Feedreader vom ständigen Polling, also dem zumeist vergeblichen Anfragen nach neuen Nachrichten befreit. Eine Lösung mithin, die das Prinzip umdreht. Feeds werden nicht mehr vom Abonnenten abgeholt, sondern ihm direkt aktiv zugestellt.

Genau darum geht es bei Pubsubhubbub.

Pubsubhubbub: Die Lösung

pubsubhubbub.png

Pubsubhubbub (PuSH) ist im Grunde nur ein HTTP-basiertes Protokoll. Es fügt eine weitere Ebene in die Kommunikationslinie zwischen Publisher (zum Beispiel Blogger) und Endnutzer (zum Beispiel Feedreader) ein. Das Ziel ist das viel beschworene Real Time Web, in dem wie bei Twitter neue Inhalte sofort nach Veröffentlichung an alle Interessenten verteilt sind. PuSH benötigt so genannte Hubs, die für den Publisher die Verteilung des Content verwalten.

PuSH funktioniert vereinfacht wie folgt:

Der Blogger implementiert PuSH in sein Blog. Wie erkläre ich später noch ausführlicher. Im Wesentlichen besteht die Implementation darin, in den Feed einen link rel=”hub” zu setzen. Hubs gibt es derzeit noch nicht viele. Prinzipiell können Hubs aber quasi von jedermann betrieben werden. Momentan empfehlen sich entweder Google oder Superfeedr; weitere Hubs hinter diesem Link. Ein Hub ist ein Server, der die gesamte Verteilung der Inhalte übernimmt und die Abonnenten verwaltet.

Schreibt nun unser Blogger einen neuen Beitrag, wird im Moment der Veröffentlichung der Hub angepingt. Daraufhin holt dieser unverzüglich den aktualisierten Inhalt ab und informiert aktiv die Abonnenten mittels Push. Weil der Ping hin zu den Abonnenten nicht nur die Information enthält, dass neuer Content vorliegt, sondern diesen Content gleich komplett mit übermittelt, spricht man vom “Fat Ping”.

Abonnenten unseres Bloggers erhalten also theoretisch nahezu unverzüglich nach Veröffentlichung eines neuen Beitrages eben diesen frei Haus geliefert. Polling ist Vergangenheit, was im Wesentlichen Netzwerktechniker freut. Der Blogger freut sich womöglich noch darüber, dass die Contentverteilung nicht mehr seinen Server sondern den Hub belastet.

Das Beispiel funktioniert allerdings tatsächlich nur theoretisch, denn praktisch ist mir kein Feedreader bekannt, der “angepusht” werden kann. Google Reader dürfte da naheliegenderweise der erste werden, denn PuSH setzt einen IP-mäßig eindeutig erreichbaren Client voraus. Desktopclients benötigen deshalb neben der generellen PuSh-Unterstützung auch noch eine Proxy-Lösung, also einen weiteren Zwischenserver, damit das System funktionieren kann.

Derzeit besteht der Nutzen im Blogbeispiel daher lediglich darin, dass der Feedreader beim Polling stets sofort die aktuellsten Inhalte findet. Abhängig vom Polling-Intervall hat das mit Real Time nicht ganz so viel zu tun, ist aber immerhin besser als nichts.

Pubsubhubbub: Die Vision

Wenn Sie sich angesichts des eben Gesagten nun wundern, was jetzt an PuSH der große Wurf sein soll, sollten Sie den Blick in die Zukunft, zumindest aber etwas abseits der herkömmlichen RSS/Atom-Pfade richten.

Mittels Feed lässt sich prinzipiell jede Kommunikationsaufgabe lösen. Alles, was Twitter ausmacht, wäre beispielsweise auch in dezentralisierter Form feedbasiert denkbar. Auf diese Weise könnte sich Social Networking und Microblogging zur neuen E-Mail entwickeln. Eine Kommunikationsform, die nicht auf einzelne Player angewiesen ist und/oder von diesen kontrolliert werden kann.

Wenn man die Gedanken frei schweifen lässt, wäre es doch tatsächlich schön, wenn die aktuellen Infos aus Google Reader, Tweets, Dents, Facebook, Friendfeed and what not unter einer einheitlichen Oberfläche, also homogen genutzt werden könnten. (Wahrscheinlich gäbe es dann Twitter nicht mehr, weil proprietär und damit überflüssig. Ist Twitter das neue Compuserve?)

Pubsubhubbub schon heute nutzen

Diese Knülleranwendungen gibt es leider noch nicht. Der begrenzte Nutzen für Blogger und andere Feedpublisher ist bereits angesprochen. Die Clientseite ist das Problem. Voll implementiert ist das Protokoll lediglich bei Friendfeed. Gern gezeigt wird entsprechend ein Video, das dokumentiert, mit welcher (praktisch keiner) Latenz Google Reader Shared Items hin zu Friendfeed transportiert werden. Ja, Google Reader Shared Items sind PuSH-enabled.

Kommen wir zurück zum begrenzten, aber immerhin im Vergleich zum bisherigen Status Quo beachtlichen Nutzen und bleiben im Blogbeispiel. Das Blogbeispiel gilt natürlich in der folgenden Feedburner-Implementation auch für sonstige Websites oder CMSs mit Feedangeboten.

Pubsubhubbub mit Feedburner etc.

Bei einem von Google entwickelten Protokoll gehört es sicherlich zum guten Ton, dass Google selber zu den Vorreitern von PuSH gehört. Neben den Shared Items im GReader implementierte Google PuSH auch in Blogger, was bereits vom Start weg zu der Aussage, einige Millionen Blogs seien PuSH-enabled geführt hat. Hinzu kommen über 20 Millionen Blogs aus LiveJournal.

Diejenigen unter Ihnen, die ein Blogspot-Blog oder ein LiveJournal betreiben, können hier aufhören zu lesen. Alles ist bereits bestens vorbereitet. Gehören Sie jedoch zu den Bloggern oder Publishern anderer Couleur ist zusätzlicher Aufwand erforderlich.

Hier bietet sich Feedburner an, denn Feedburner ist ebenfalls PuSH-enabled. Die PuSH-Implementation heisst bei Feedburner Pingshot und spricht den Referenzhub an. WordPress.org-Nutzer haben die freie Wahl. Denn für WordPress.org gibt es sowohl ein Feedburner-Plugin, wie auch ein, nein, zwei umweglose Pubsubhubbub-Plugins.

Befindet sich Ihr Blog hingegen auf WordPress.com oder publizieren Sie einen Feed aus Ihrer Website, ist etwas Handarbeit erforderlich. So geht es mit Feedburner:

Szenario 1: Sie haben Ihren Feed bereits bei Feedburner!

Loggen Sie sich mit Ihrem Google-Account auf Feedburner.com ein. In der dann folgenden Aufstellung Ihrer bereits vorhandenen Feeds klicken Sie denjenigen an, für den Sie PingShot einschalten wollen.

Sie gelangen auf die Hauptübersichtsseite des gewählten Feeds. Hier wählen Sie den Reiter Publicize. Auf der dann folgenden Seite wählen Sie aus dem linken Menü den Navigationspunkt Pingshot. Sie sehen ein Bild wie das folgende:

publicize-tab.png

Möglicherweise sieht die Darstellung bei Ihnen bereits aus wie auf der obigen Abbildung. Dann müssen Sie nichts tun. Ihr Feed wird bereits gepubsubhubbubbed. Sollte dort zu lesen sein: “This service is inactive”, klicken Sie einfach auf den Button “Activate”. Fertig.

Szenario 2: Sie haben Ihren Feed bislang nicht bei Feedburner!

In diesem Fall gilt es noch zu unterscheiden, ob Sie bereits über einen Google-Account verfügen oder nicht. Sollte das nicht der Fall sein, müssen Sie sich zunächst einen solchen besorgen. Das können Sie von Feedburner aus erledigen.

feedburner-anmeldescreen.png

Haben Sie diese Voraussetzung geschaffen, loggen Sie sich mit Ihren Google-Daten auf Feedburner.com ein. Sie sehen eine leere Feedübersicht.

leere-feeduebersicht.png

Im unteren Teil der Übersicht sehen Sie die Aufforderung “Burn a feed right this instant.” Hier kopieren Sie die URL Ihres bestehenden Feeds ein. Wenn Sie beispielsweise Verwender eines WordPress.com-gehosteten Blogs sind, lautet Ihre Feedadresse in etwa so: http://blogname.wordpress.com/feed/. Klicken Sie auf Next.

feedburner-feed-anlegen-01.png

Sie sehen, dass Feedburner Ihnen einen Namen und eine URL für Ihren neuen Feed vorschlägt. Beides können Sie ändern. Wenn Sie von Ihren Eingaben überzeugt sind, klicken Sie wieder auf Next.

feedburner-feed-anlegen-02.png

Feedburner bestätigt Ihnen nun die erfolgreiche Anlage. Im nächsten Schritte legen Sie optional noch einige Angaben zum Statistikumfang fest und gelangen dann zur Übersichtsseite des soeben angelegten Feeds.

feeduebersicht-mit-feed.png

Auf dieser Übersichtsseite erklärt Ihnen Feedburner, wie Sie nun den neu angelegten Feed in unterschiedliche Blogplattformen einbinden können. Wir betrachten jetzt nur die Einbindung in WordPress.com, da es für selbstgehostete WordPress-Installationen ein entsprechendes Plugin gibt und Blogger und LiveJournal ohnehin von Haus aus pubsubhubbed sind.

Gehen wir also davon aus, Sie hätten einen Blog namens blogname.wordpress.com und wollten diesen mit einem Button versehen, der auf Ihren Feedburner-Feed hinweist. Beginnen Sie mit einem Klick auf Publicize. Sie gelangen auf die bereits unter Szenario 1 beschriebene Übersichtsseite, auf der Sie bei dieser Gelegenheit auch gleich PingShot aktivieren können. Für den Subscribe-Button, den Sie für Ihr Blog brauchen, klicken Sie aber links auf Chicklet Chooser. Sie erhalten folgendes Bild.

publicizechickletchooser.png

Wählen Sie nun einen der Subscribe-Buttons an – ich empfehle den mit dem kleineren RSS-Logo, also den zweiten von oben. Ganz unten auf derselben Seite wird Ihnen dann ein Code-Snippet angezeigt, welches Sie bitte in die Zwischenablage kopieren.

chickletchooser-02.png

Nun loggen Sie sich in Ihr Blog-Backend ein, klicken dort auf Darstellung > Widgets und fügen Ihrer Sidebar ein Text-Widget hinzu. In dieses Textwidget kopieren Sie nun den soeben bei Feedburner auskopierten Codeschnipsel wieder ein. Bei der Gelegenheit können Sie auch den Textteil “Subscribe in a reader” gegen zum Beispiel “Feed abonnieren” ersetzen. Wählen Sie speichern und danach schließen. Fertig.

Einen Haken hat die Sache. Sie müssen den neuen Feed aktiv kommunizieren, denn es gibt aktuell keine Möglichkeit, den nativen WordPressfeed auf den Feedburnerfeed umzuleiten. Auch die Browser Ihrer Benutzer werden in der Adresszeile immer signalisieren, dass Ihr Blog einen Feed anbietet, dabei aber stets den Nativen meinen.

Zudem gilt es bei der Theme-Auswahl darauf zu achten, dass man möglichst keines verwendet, was die Feeds an prominenter Stelle selbst propagiert, denn derzeit haben Sie in der kostenfreien Version von WordPress.com nicht die Möglichkeit, Hand ans Design zu legen. Dafür bedürfte es des CSS-Upgrades für knappe 15 Dollar pro Jahr.

Sind Sie kein WordPress-User, sondern betreiben ein anderes CMS oder System und haben Zugriff auf Ihren Webspace, finden Sie hinter diesem Link eine Anleitung mit deren Hilfe Sie Ihren bestehenden Feed per htaccess dauerhaft auf Feedburner umleiten.

Feedburner: Spezifische Einschränkung

Anders als bei einem nativen Feed gibt es bei Feedburner das Thema Latenz. Latenz in diesem Zusammenhang bezeichnet die Verzögerung zwischen Veröffentlichung und Feedauslieferung. Auch wenn Feedburner gern behauptet, Beiträge würden quasi sofort in den Feed eingearbeitet, gibt es nicht zuletzt aus dem eigenen Erleben Zweifel an dieser Darstellung.

Dave Winer, der Vater der RSS, hat Messungen der Feedburner-Latenz vorgenommen und ist zu dem Ergebnis gekommen, dass recht zuverlässige 30 Minuten zwischen Veröffentlichung und Aufnahme in den Feedburner-Feed liegen. Das ist natürlich kein Real Time-Niveau. Das Feedburner-Team schwört, stets an entsprechenden Verbesserungen zu arbeiten und im Grunde bereits jetzt Real Time zu leisten.

RSSCloud: Alternative zu Pubsubhubbub

rsscloud.png

Zu guter Letzt sei hier noch eine Alternative zum PuSH-Protokoll erwähnt. (Es gibt weitere). Nach meinen Recherchen überwiegt allerdings in der Fachwelt die Meinung, dass PuSH nicht zuletzt aufgrund des einzigartigen Fat Ping Prinzipes technologisch die Nase vorn hat und sich voraussichtlich durchsetzen wird.

RSSCloud ist ein Konzept, das der RSS-Erfinder Dave Winer bereits in 2001 funktionsfähig implementiert hatte. Zu diesem Zeitpunkt jedoch gab es an der Technologie offenbar noch keinen Bedarf, Polling setzte sich durch und Winer mottete RSSCloud ein. Im Juli 2009 packte er es wieder aus.

Die Modelle RSSCloud und PuSH ähneln sich deutlich, haben jedoch auch deutliche Unterschiede. Die Ähnlichkeiten sind oberflächlicher Natur. Wie PuSH implementiert auch RSSCloud einen Hub. Der heißt hier allerdings Cloud. Beide Protokolle werden auf Publisher-Seite mit einem Tag angesprochen. PuSH mit dem Link-, RSSCloud mit dem Cloud-Tag. Beide Lösungen erhalten auf diese Weise von den Publishern unverzüglich Meldungen über neue Inhalte und informieren die Subscriber.

Hier besteht der größte Unterschied. Während PuSH dem Subscriber/Abonnenten mit der Mitteilung über neuen Content den Content gleich mitliefert (Fat Ping), informiert RSSCloud tatsächlich nur über die Verfügbarkeit neuen Contents. Der Subscriber/Abonnent muss diesen dann eigenständig beim Publisher abholen. RSSCloud ist insofern nur eine Erweiterung des Polling-Prinzips, während PuSH dieses Prinzip obsolet macht.

Gerade in diesem Punkt regt sich fundierte Kritik an RSSCloud. Der Punkt ist nachvollziehbar. Angenommen Sie betreiben einen Blog mit rund 150.000 RSS-Subscribern (siehe zum Beispiel Smashing Magazine). Sie veröffentlichen einen Beitrag und haben RSSCloud integriert, pingen also den Hub unverzüglich an. Dieser Hub pingt nun seinerseits unverzüglich die Subscriber an und informiert darüber, dass bei Ihnen neuer Content vorliegt. Nun beginnen (sobald es diese Clients letztlich irgendwann gibt) alle Subscriber-Clients nahezu gleichzeitig zu versuchen, den Content bei Ihnen abzuholen. Ihr Server wird also quasi in der gleichen Sekunde mit bis zu 150.000 Anfragen fertig werden müssen.

Potenzieren würde sich das Problem zusätzlich, wenn man jetzt nicht einen Blog, sondern eine Art dezentrales Twitter betrachtet. Hier können theoretisch im Sekundentakt neue “Beiträge” gepostet werden, die dann von den Subscribern/Followern abgeholt werden müssten. Je nach Postingfrequenz, Zahl der Subscriber und natürlich Zahl der Poster auf dem gleichen Server kann hier leicht ein nicht zu bewältigender Ansturm auftreten.

Weitere Unterschiede sind von eher untergeordneter Bedeutung, wie zum Beispiel die Tatsache, dass sich PuSH HTTP-Post-Methoden bedient, während RSSCloud flexibler ist und mit XML-RPC, SOAP oder REST umgehen kann.

Der kriegsentscheidende Vorteil wird nach meiner Meinung der Content-Push sein. So wird das völlig offene Twitter der nächsten Generation implementiert werden müssen. Real Time muss so viele Zwischenschritte wie möglich eliminieren und Polling kann keinen Platz in diesem Konzept haben. ™

ist seit 1994 im Netz unterwegs, aber bereits seit fast 30 Jahren in der IT daheim. Seit 2008 schreibt er für Dr. Web, seit 2012 ist er Chefredakteur des Magazins. Man findet ihn auch auf Twitter und Facebook, aktiver ist er allerdings auf Google+.

15 Kommentare zu „Pubsubhubbub: Feed-Push für Alle
  1. Klawischnigg am 16. September 2009 um 20:36

    Toll.

    Leute, die nichts zu sagen haben erzählen Leuten, die nichts verstehen, mittels eines Protokolls, dessen Namen keiner aussprechen kann, unwichtige Dinge.

    (Womit bloss haben sich meine Eltern die Zeit vertrieben???)

  2. Netzspuren — bluelectric.org am 16. September 2009 um 23:01

    […] Shared Pubsubhubbub: Feed-Push für Alle. […]

  3. Thomas Weise am 17. September 2009 um 07:17

    Interessante Technik, wenn das so einfach zu implementieren ist wird sich das (oder RSSCloud oder ähnliches) sicher durchsetzen.
    Gleich mal testen ;-).

  4. […] » Pubsubhubbub: Feed-Push für Alle| Dr. Web Magazin […]

  5. […] The full story at Dr. Web >> […]

  6. […] und eingestellt hat. Also im Grunde genommen so eine Art Pubsubhubbub f

  7. […] ausführlich hat man sich an dieser Stelle mit PubSubHubbub auseinander […]

  8. […] lege viel Hoffnung in das Pubsubhubbub-Protokoll, welches ich hier vor kurzem ja bereits recht ausführlich dargestellt hatte. Irritieren tut mich […]

  9. […] Pubsubhubbub: Feed-Push für Alle | Dr. Web Magazin – 16.09.2009 Kurzer Überblick über Pubsubhubbub und die Integration mit Feedburner […]

  10. […] und sehr gute Erklärungen zu PubSubHubbub gibt es darüber hinaus bei drweb.de und auf dem Webkompetenz Blog. Auf jeden Fall werde ich sobald ich diese Post abgeschickt habe, […]

  11. BAYERNMATRIX am 15. März 2010 um 14:45

    Leider ist auch Feedburner, wie twitterfeed, nicht immer die ideale Lösung. So kommt es z. B. vor, dass neue Inhalte aus dem RSS zwar ausgelesen und veröffentlicht werden, aber der eigene twitter-Account wird nicht mehr berücksichtigt. Fakt: Schön langsam kommt es mir vor als ob twitter gezielt andere Programme zum twitter hin nicht dulden will. Auf jeden Fall funktionieren alle Programme am ersten und vielleicht am zweiten Tag noch, aber dann ist wirklich tote Hose.

  12. […] Online-Magazin drweb.de erklärt PuSH so: Pubsubhubbub (PuSH) ist im Grunde nur ein HTTP-basiertes Protokoll. Es fügt eine weitere […]

  13. […] ohne dass der Leser direkte Anfragen an den Server abgeben muss. Eine tolle Zusammenfassung hat das Dr. Web-Magazin veröffentlicht. Wo Google Feed API v2 nun ansetzt: Man kann Feeds (via AJAX) in jede Webseite einbauen und hat […]

  14. […] Wer seinen Feed im Feedburner hat, kann diesen auch dafür aktivieren. Wie das geht, erklärt drweb. […]

  15. […] Updates seines Netzwerkes, der Austausch geschieht aber unabhängig von der Plattform über Push (PubSubHubbub, quasi ein Nachfolger von RSS). Über die Standardisierung dieses Push-Vorganges wird es auch egal […]

Ein Kommentar? Schön!

Wir freuen uns immer über Leser, die durch nützliche und konstruktive Beiträge zum Thema eine Diskussion anstoßen oder den Artikel mit weiteren Informationen anreichern. Alle Kommentare werden in diesem Sinne moderiert. Zum Kommentar-Fairplay gehört für uns auch der Einsatz von rel="nofollow". Bitte verwenden Sie zudem als Namen weder eine Domain noch ein spamverdächtiges Wort. Vielen Dank!