Spaces. Smartes Cloud Hosting für anspruchsvolle Webprojekte. Loslegen und Spaces testen. Von Mittwald.
Dieter Petereit 16. September 2009

Pubsubhubbub: Feed-Push für Alle

Kein Beitragsbild

Den ulki­gen Begriff Pubsubhubbub haben Sie in den letz­ten Monaten mit Sicherheit irgend­wo schon mal gele­sen und ver­mut­lich haben Sie sich das Wort sogar halb­wegs gemerkt. Vielleicht ver­such­ten Sie zudem, zu ver­ste­hen, was sich dahin­ter ver­birgt. Wenn Sie dabei nicht beson­ders hart­nä­ckig waren, wird Ihnen das ver­mut­lich miss­lun­gen sein. Denn im Netz fin­det man haupt­säch­lich Diskussionen unter Technikern. Ich ver­su­che heu­te einen all­ge­mein-ver­ständ­li­che­ren Ansatz und klä­re vor allem, wel­che ein­fa­chen Nutzungsmöglichkeiten es jetzt bereits gibt…

RSS/Atom: Das Problem

Zum Verständnis des Nutzens von Pubsubhubbub lässt es sich nicht ver­mei­den, einen  Blick in die “Vergangenheit” zu wer­fen. Keine Sorge. Ich fas­se mich dabei kurz.

Sie alle ken­nen RSS/Atom. Publizieren wahr­schein­lich sel­ber einen oder meh­re­re Feeds. Dann wis­sen Sie, dass ein Feed dar­auf ange­wie­sen ist, vom Client ange­for­dert zu wer­den.

Sie haben einen inter­es­san­ten Blogpost ver­öf­fent­licht. Dieser “liegt” jetzt in Ihrem Feed bereit, aber der Besucherclient ruft ihn nicht ab. Jedenfalls nicht zeit­nah. Umgekehrt fragt Ihr Feedreader alle Nase lang, respek­ti­ve in den von Ihnen defi­nier­ten Intervallen die von Ihnen abon­nier­ten Feeds ab und erhält die meis­te Zeit die Antwort “Nichts Neues da.”

Schöner wäre da doch eine Lösung, die zum einen für eine sehr zeit­na­he Information Ihrer Abonnenten sorgt und zum ande­ren auch Ihren Feedreader vom stän­di­gen Polling, also dem zumeist ver­geb­li­chen Anfragen nach neu­en Nachrichten befreit. Eine Lösung mit­hin, die das Prinzip umdreht. Feeds wer­den nicht mehr vom Abonnenten abge­holt, son­dern ihm direkt aktiv zuge­stellt.

Genau dar­um geht es bei Pubsubhubbub.

Pubsubhubbub: Die Lösung

pubsubhubbub.png

Pubsubhubbub (PuSH) ist im Grunde nur ein HTTP-basier­tes Protokoll. Es fügt eine wei­te­re Ebene in die Kommunikationslinie zwi­schen Publisher (zum Beispiel Blogger) und Endnutzer (zum Beispiel Feedreader) ein. Das Ziel ist das viel beschwo­re­ne Real Time Web, in dem wie bei Twitter neue Inhalte sofort nach Veröffentlichung an alle Interessenten ver­teilt sind. PuSH benö­tigt so genann­te Hubs, die für den Publisher die Verteilung des Content ver­wal­ten.

PuSH funk­tio­niert ver­ein­facht wie folgt:

Der Blogger imple­men­tiert PuSH in sein Blog. Wie erklä­re ich spä­ter noch aus­führ­li­cher. Im Wesentlichen besteht die Implementation dar­in, in den Feed einen link rel=“hub” zu set­zen. Hubs gibt es der­zeit noch nicht vie­le. Prinzipiell kön­nen Hubs aber qua­si von jeder­mann betrie­ben wer­den. Momentan emp­feh­len sich ent­we­der Google oder Superfeedr; wei­te­re Hubs hin­ter die­sem Link. Ein Hub ist ein Server, der die gesam­te Verteilung der Inhalte über­nimmt und die Abonnenten ver­wal­tet.

Schreibt nun unser Blogger einen neu­en Beitrag, wird im Moment der Veröffentlichung der Hub ange­pingt. Daraufhin holt die­ser unver­züg­lich den aktua­li­sier­ten Inhalt ab und infor­miert aktiv die Abonnenten mit­tels Push. Weil der Ping hin zu den Abonnenten nicht nur die Information ent­hält, dass neu­er Content vor­liegt, son­dern die­sen Content gleich kom­plett mit über­mit­telt, spricht man vom “Fat Ping”.

Abonnenten unse­res Bloggers erhal­ten also theo­re­tisch nahe­zu unver­züg­lich nach Veröffentlichung eines neu­en Beitrages eben die­sen frei Haus gelie­fert. Polling ist Vergangenheit, was im Wesentlichen Netzwerktechniker freut. Der Blogger freut sich womög­lich noch dar­über, dass die Contentverteilung nicht mehr sei­nen Server son­dern den Hub belas­tet.

Das Beispiel funk­tio­niert aller­dings tat­säch­lich nur theo­re­tisch, denn prak­tisch ist mir kein Feedreader bekannt, der “ange­pusht” wer­den kann. Google Reader dürf­te da nahe­lie­gen­der­wei­se der ers­te wer­den, denn PuSH setzt einen IP-mäßig ein­deu­tig erreich­ba­ren Client vor­aus. Desktopclients benö­ti­gen des­halb neben der gene­rel­len PuSh-Unterstützung auch noch eine Proxy-Lösung, also einen wei­te­ren Zwischenserver, damit das System funk­tio­nie­ren kann.

Derzeit besteht der Nutzen im Blogbeispiel daher ledig­lich dar­in, dass der Feedreader beim Polling stets sofort die aktu­ells­ten Inhalte fin­det. Abhängig vom Polling-Intervall hat das mit Real Time nicht ganz so viel zu tun, ist aber immer­hin bes­ser als nichts.

Pubsubhubbub: Die Vision

Wenn Sie sich ange­sichts des eben Gesagten nun wun­dern, was jetzt an PuSH der gro­ße Wurf sein soll, soll­ten Sie den Blick in die Zukunft, zumin­dest aber etwas abseits der her­kömm­li­chen RSS/Atom-Pfade rich­ten.

Mittels Feed lässt sich prin­zi­pi­ell jede Kommunikationsaufgabe lösen. Alles, was Twitter aus­macht, wäre bei­spiels­wei­se auch in dezen­tra­li­sier­ter Form feed­ba­siert denk­bar. Auf die­se Weise könn­te sich Social Networking und Microblogging zur neu­en E-Mail ent­wi­ckeln. Eine Kommunikationsform, die nicht auf ein­zel­ne Player ange­wie­sen ist und/oder von die­sen kon­trol­liert wer­den kann.

Wenn man die Gedanken frei schwei­fen lässt, wäre es doch tat­säch­lich schön, wenn die aktu­el­len Infos aus Google Reader, Tweets, Dents, Facebook, Friendfeed and what not unter einer ein­heit­li­chen Oberfläche, also homo­gen genutzt wer­den könn­ten. (Wahrscheinlich gäbe es dann Twitter nicht mehr, weil pro­prie­tär und damit über­flüs­sig. Ist Twitter das neue Compuserve?)

Pubsubhubbub schon heute nutzen

Diese Knülleranwendungen gibt es lei­der noch nicht. Der begrenz­te Nutzen für Blogger und ande­re Feedpublisher ist bereits ange­spro­chen. Die Clientseite ist das Problem. Voll imple­men­tiert ist das Protokoll ledig­lich bei Friendfeed. Gern gezeigt wird ent­spre­chend ein Video, das doku­men­tiert, mit wel­cher (prak­tisch kei­ner) Latenz Google Reader Shared Items hin zu Friendfeed trans­por­tiert wer­den. Ja, Google Reader Shared Items sind PuSH-enab­led.

Kommen wir zurück zum begrenz­ten, aber immer­hin im Vergleich zum bis­he­ri­gen Status Quo beacht­li­chen Nutzen und blei­ben im Blogbeispiel. Das Blogbeispiel gilt natür­lich in der fol­gen­den Feedburner-Implementation auch für sons­ti­ge Websites oder CMSs mit Feedangeboten.

Pubsubhubbub mit Feedburner etc.

Bei einem von Google ent­wi­ckel­ten Protokoll gehört es sicher­lich zum guten Ton, dass Google sel­ber zu den Vorreitern von PuSH gehört. Neben den Shared Items im GReader imple­men­tier­te Google PuSH auch in Blogger, was bereits vom Start weg zu der Aussage, eini­ge Millionen Blogs sei­en PuSH-enab­led geführt hat. Hinzu kom­men über 20 Millionen Blogs aus LiveJournal.

Diejenigen unter Ihnen, die ein Blogspot-Blog oder ein LiveJournal betrei­ben, kön­nen hier auf­hö­ren zu lesen. Alles ist bereits bes­tens vor­be­rei­tet. Gehören Sie jedoch zu den Bloggern oder Publishern ande­rer Couleur ist zusätz­li­cher Aufwand erfor­der­lich.

Hier bie­tet sich Feedburner an, denn Feedburner ist eben­falls PuSH-enab­led. 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 umweg­lo­se Pubsubhubbub-Plugins.

Befindet sich Ihr Blog hin­ge­gen auf WordPress.com oder publi­zie­ren Sie einen Feed aus Ihrer Website, ist etwas Handarbeit erfor­der­lich. 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 fol­gen­den Aufstellung Ihrer bereits vor­han­de­nen Feeds kli­cken Sie den­je­ni­gen an, für den Sie PingShot ein­schal­ten wol­len.

Sie gelan­gen auf die Hauptübersichtsseite des gewähl­ten Feeds. Hier wäh­len Sie den Reiter Publicize. Auf der dann fol­gen­den Seite wäh­len Sie aus dem lin­ken Menü den Navigationspunkt Pingshot. Sie sehen ein Bild wie das fol­gen­de:

publicize-tab.png

Möglicherweise sieht die Darstellung bei Ihnen bereits aus wie auf der obi­gen Abbildung. Dann müs­sen Sie nichts tun. Ihr Feed wird bereits gepubsub­hub­bub­bed. Sollte dort zu lesen sein: “This ser­vice is inac­tive”, kli­cken Sie ein­fach auf den Button “Activate”. Fertig.

Szenario 2: Sie haben Ihren Feed bis­lang nicht bei Feedburner!

In die­sem Fall gilt es noch zu unter­schei­den, ob Sie bereits über einen Google-Account ver­fü­gen oder nicht. Sollte das nicht der Fall sein, müs­sen Sie sich zunächst einen sol­chen besor­gen. Das kön­nen Sie von Feedburner aus erle­di­gen.

feedburner-anmeldescreen.png

Haben Sie die­se Voraussetzung geschaf­fen, log­gen Sie sich mit Ihren Google-Daten auf Feedburner.com ein. Sie sehen eine lee­re Feedübersicht.

leere-feeduebersicht.png

Im unte­ren Teil der Übersicht sehen Sie die Aufforderung “Burn a feed right this instant.” Hier kopie­ren Sie die URL Ihres bestehen­den Feeds ein. Wenn Sie bei­spiels­wei­se Verwender eines WordPress.com-gehosteten Blogs sind, lau­tet 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 neu­en Feed vor­schlägt. Beides kön­nen Sie ändern. Wenn Sie von Ihren Eingaben über­zeugt sind, kli­cken Sie wie­der auf Next.

feedburner-feed-anlegen-02.png

Feedburner bestä­tigt Ihnen nun die erfolg­rei­che Anlage. Im nächs­ten Schritte legen Sie optio­nal noch eini­ge Angaben zum Statistikumfang fest und gelan­gen dann zur Übersichtsseite des soeben ange­leg­ten Feeds.

feeduebersicht-mit-feed.png

Auf die­ser Übersichtsseite erklärt Ihnen Feedburner, wie Sie nun den neu ange­leg­ten Feed in unter­schied­li­che Blogplattformen ein­bin­den kön­nen. Wir betrach­ten jetzt nur die Einbindung in WordPress.com, da es für selbst­ge­hos­te­te WordPress-Installationen ein ent­spre­chen­des Plugin gibt und Blogger und LiveJournal ohne­hin von Haus aus pubsub­hub­bed sind.

Gehen wir also davon aus, Sie hät­ten einen Blog namens blogname.wordpress.com und woll­ten die­sen mit einem Button ver­se­hen, der auf Ihren Feedburner-Feed hin­weist. Beginnen Sie mit einem Klick auf Publicize. Sie gelan­gen auf die bereits unter Szenario 1 beschrie­be­ne Übersichtsseite, auf der Sie bei die­ser Gelegenheit auch gleich PingShot akti­vie­ren kön­nen. Für den Subscribe-Button, den Sie für Ihr Blog brau­chen, kli­cken Sie aber links auf Chicklet Chooser. Sie erhal­ten fol­gen­des Bild.

publicizechickletchooser.png

Wählen Sie nun einen der Subscribe-Buttons an – ich emp­feh­le den mit dem klei­ne­ren RSS-Logo, also den zwei­ten von oben. Ganz unten auf der­sel­ben Seite wird Ihnen dann ein Code-Snippet ange­zeigt, wel­ches Sie bit­te in die Zwischenablage kopie­ren.

chickletchooser-02.png

Nun log­gen Sie sich in Ihr Blog-Backend ein, kli­cken dort auf Darstellung > Widgets und fügen Ihrer Sidebar ein Text-Widget hin­zu. In die­ses Textwidget kopie­ren Sie nun den soeben bei Feedburner aus­ko­pier­ten Codeschnipsel wie­der ein. Bei der Gelegenheit kön­nen Sie auch den Textteil “Subscribe in a reader” gegen zum Beispiel “Feed abon­nie­ren” erset­zen. Wählen Sie spei­chern und danach schlie­ßen. Fertig.

Einen Haken hat die Sache. Sie müs­sen den neu­en Feed aktiv kom­mu­ni­zie­ren, denn es gibt aktu­ell kei­ne Möglichkeit, den nati­ven WordPressfeed auf den Feedburnerfeed umzu­lei­ten. Auch die Browser Ihrer Benutzer wer­den in der Adresszeile immer signa­li­sie­ren, dass Ihr Blog einen Feed anbie­tet, dabei aber stets den Nativen mei­nen.

Zudem gilt es bei der Theme-Auswahl dar­auf zu ach­ten, dass man mög­lichst kei­nes ver­wen­det, was die Feeds an pro­mi­nen­ter Stelle selbst pro­pa­giert, denn der­zeit haben Sie in der kos­ten­frei­en Version von WordPress.com nicht die Möglichkeit, Hand ans Design zu legen. Dafür bedürf­te es des CSS-Upgrades für knap­pe 15 Dollar pro Jahr.

Sind Sie kein WordPress-User, son­dern betrei­ben ein ande­res CMS oder System und haben Zugriff auf Ihren Webspace, fin­den Sie hin­ter die­sem Link eine Anleitung mit deren Hilfe Sie Ihren bestehen­den Feed per htac­cess dau­er­haft auf Feedburner umlei­ten.

Feedburner: Spezifische Einschränkung

Anders als bei einem nati­ven Feed gibt es bei Feedburner das Thema Latenz. Latenz in die­sem Zusammenhang bezeich­net die Verzögerung zwi­schen Veröffentlichung und Feedauslieferung. Auch wenn Feedburner gern behaup­tet, Beiträge wür­den qua­si sofort in den Feed ein­ge­ar­bei­tet, gibt es nicht zuletzt aus dem eige­nen Erleben Zweifel an die­ser Darstellung.

Dave Winer, der Vater der RSS, hat Messungen der Feedburner-Latenz vor­ge­nom­men und ist zu dem Ergebnis gekom­men, dass recht zuver­läs­si­ge 30 Minuten zwi­schen Veröffentlichung und Aufnahme in den Feedburner-Feed lie­gen. Das ist natür­lich kein Real Time-Niveau. Das Feedburner-Team schwört, stets an ent­spre­chen­den Verbesserungen zu arbei­ten und im Grunde bereits jetzt Real Time zu leis­ten.

RSSCloud: Alternative zu Pubsubhubbub

rsscloud.png

Zu guter Letzt sei hier noch eine Alternative zum PuSH-Protokoll erwähnt. (Es gibt wei­te­re). Nach mei­nen Recherchen über­wiegt aller­dings in der Fachwelt die Meinung, dass PuSH nicht zuletzt auf­grund des ein­zig­ar­ti­gen Fat Ping Prinzipes tech­no­lo­gisch die Nase vorn hat und sich vor­aus­sicht­lich durch­set­zen wird.

RSSCloud ist ein Konzept, das der RSS-Erfinder Dave Winer bereits in 2001 funk­ti­ons­fä­hig imple­men­tiert hat­te. Zu die­sem Zeitpunkt jedoch gab es an der Technologie offen­bar noch kei­nen Bedarf, Polling setz­te sich durch und Winer mot­te­te RSSCloud ein. Im Juli 2009 pack­te er es wie­der aus.

Die Modelle RSSCloud und PuSH ähneln sich deut­lich, haben jedoch auch deut­li­che Unterschiede. Die Ähnlichkeiten sind ober­fläch­li­cher Natur. Wie PuSH imple­men­tiert auch RSSCloud einen Hub. Der heißt hier aller­dings Cloud. Beide Protokolle wer­den auf Publisher-Seite mit einem Tag ange­spro­chen. PuSH mit dem Link-, RSSCloud mit dem Cloud-Tag. Beide Lösungen erhal­ten auf die­se Weise von den Publishern unver­züg­lich Meldungen über neue Inhalte und infor­mie­ren die Subscriber.

Hier besteht der größ­te Unterschied. Während PuSH dem Subscriber/Abonnenten mit der Mitteilung über neu­en Content den Content gleich mit­lie­fert (Fat Ping), infor­miert RSSCloud tat­säch­lich nur über die Verfügbarkeit neu­en Contents. Der Subscriber/Abonnent muss die­sen dann eigen­stän­dig beim Publisher abho­len. RSSCloud ist inso­fern nur eine Erweiterung des Polling-Prinzips, wäh­rend PuSH die­ses Prinzip obso­let macht.

Gerade in die­sem Punkt regt sich fun­dier­te Kritik an RSSCloud. Der Punkt ist nach­voll­zieh­bar. Angenommen Sie betrei­ben einen Blog mit rund 150.000 RSS-Subscribern (sie­he zum Beispiel Smashing Magazine). Sie ver­öf­fent­li­chen einen Beitrag und haben RSSCloud inte­griert, pin­gen also den Hub unver­züg­lich an. Dieser Hub pingt nun sei­ner­seits unver­züg­lich die Subscriber an und infor­miert dar­über, dass bei Ihnen neu­er Content vor­liegt. Nun begin­nen (sobald es die­se Clients letzt­lich irgend­wann gibt) alle Subscriber-Clients nahe­zu gleich­zei­tig zu ver­su­chen, den Content bei Ihnen abzu­ho­len. Ihr Server wird also qua­si in der glei­chen Sekunde mit bis zu 150.000 Anfragen fer­tig wer­den müs­sen.

Potenzieren wür­de sich das Problem zusätz­lich, wenn man jetzt nicht einen Blog, son­dern eine Art dezen­tra­les Twitter betrach­tet. Hier kön­nen theo­re­tisch im Sekundentakt neue “Beiträge” gepos­tet wer­den, die dann von den Subscribern/Followern abge­holt wer­den müss­ten. Je nach Postingfrequenz, Zahl der Subscriber und natür­lich Zahl der Poster auf dem glei­chen Server kann hier leicht ein nicht zu bewäl­ti­gen­der Ansturm auf­tre­ten.

Weitere Unterschiede sind von eher unter­ge­ord­ne­ter Bedeutung, wie zum Beispiel die Tatsache, dass sich PuSH HTTP-Post-Methoden bedient, wäh­rend RSSCloud fle­xi­bler ist und mit XML-RPC, SOAP oder REST umge­hen kann.

Der kriegs­ent­schei­den­de Vorteil wird nach mei­ner Meinung der Content-Push sein. So wird das völ­lig offe­ne Twitter der nächs­ten Generation imple­men­tiert wer­den müs­sen. Real Time muss so vie­le Zwischenschritte wie mög­lich eli­mi­nie­ren und Polling kann kei­nen Platz in die­sem Konzept haben. (tm)

Dieter Petereit

Dieter Petereit

ist seit 1994 im Netz unterwegs, aber bereits seit über 30 Jahren in der IT daheim. Seit Anfang des neuen Jahrtausends schreibt er für diverse Medien, hauptsächlich zu den Themenfeldern Technik und Design.

3 Kommentare

  1. Leider ist auch Feedburner, wie twit­ter­feed, nicht immer die idea­le Lösung. So kommt es z. B. vor, dass neue Inhalte aus dem RSS zwar aus­ge­le­sen und ver­öf­fent­licht wer­den, aber der eige­ne twit­ter-Account wird nicht mehr berück­sich­tigt. Fakt: Schön lang­sam kommt es mir vor als ob twit­ter gezielt ande­re Programme zum twit­ter hin nicht dul­den will. Auf jeden Fall funk­tio­nie­ren alle Programme am ers­ten und viel­leicht am zwei­ten Tag noch, aber dann ist wirk­lich tote Hose.

  2. Interessante Technik, wenn das so ein­fach zu imple­men­tie­ren ist wird sich das (oder RSSCloud oder ähn­li­ches) sicher durch­set­zen.
    Gleich mal tes­ten ;-).

  3. Toll.

    Leute, die nichts zu sagen haben erzäh­len Leuten, die nichts ver­ste­hen, mit­tels eines Protokolls, des­sen Namen kei­ner aus­spre­chen kann, unwich­ti­ge Dinge.

    (Womit bloss haben sich mei­ne Eltern die Zeit ver­trie­ben???)

Schreibe einen Kommentar zu Thomas Weise Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.