Schlagwort: PubSubHubbub

A simple, open, web-hook-based pubsub protocol & open source reference implementation.

  • Dave Winer (@davew) stellt (sich) auf seinem Blog und auf Mastodon die Frage:

    What does ActivityPub does that RSS doesn’t?

    und nimmt vorweg:

    Off the top of my head, it’s not the ability to syndicate, RSS already does that. I can follow anyone on any server.

    Es macht natürlich Sinn, erstmal zu klären was RSS ist und kann, um auf die Vorteile von ActivityPub einzugehen!

    Also RSS steht für „Really Simple Syndication“ und ist eine Art „Digitale Einbahnstraße“, so zu sagen der Newsletter oder Podcast für Texte auf Webseiten. Und weil es dem Podcast so ähnlich ist (und eigentlich auch dessen technische Basis) nennt es Dave Winer auch neuerdings „Textcasting„, was ich großartig finde!

    Applying the philosophy of podcasting to text.

    Und technisch gesehen ist das auch der große Unterschied zu ActivityPub. Während ich bei Textcasting, Texte nur abonnieren kann, habe ich durch ActivityPub auch einen Rückkanal, der mir ermöglicht, die Texte auch zu liken, mit meinen Freunden Followern zu teilen und zu kommentieren!

    In den Kommentaren zu Daves Mastodon Post wird auch fast ausschließlich über diese technischen Aspekte diskutiert. Es geht um Push vs. Pull und immer wieder darum, dass RSS ja eigentlich vollkommen ausreichend und viel simpler ist.

    @manton fasst es ganz gut zusammen:

    I think RSS + Webmention (for sending replies) gets you 90% of the way there. ActivityPub does provide a comprehensive framework for the rest, though, and perhaps follows modern social network conventions more closely, e.g. liking posts, approving follows.

    https://micro.blog/manton/34864514

    Aber ist die Technik das, was hier wirklich den Unterschied macht?

    Die Diskussion erinnert mich sehr an den RSS vs. Atom „War“, von dem @tantek.com in einem IndieWeb Vortrag spricht.

    Hier klicken, um den Inhalt von YouTube anzuzeigen.
    Erfahre mehr in der Datenschutzerklärung von YouTube.

    I saw the best minds of my time waste our time arguing about syndication formats, arguing about plumbing, user don’t care about plumbing but for some reason we thought that that mattered, we thought that actually really mattered which XML tags to use in RSS versus Atom. […] So we focused on the wrong things we argued about plumbing instead of user experience.

    Tantek Çelik – The once and future IndieWeb

    Vielleicht kommt man mit RSS, WebSub und Webmentions auf ein relativ ähnliches Ergebnis und es ist technisch gesehen wahrscheinlich auch etwas einfacher umzusetzen… Aber sind RSS und ActivityPub wirklich so weit auseinander?

    Für mich ist ActivityPub einfach nur die logische Weiterentwicklung, oder auch die nächste Generation von RSS. Wer sich die erste Version von ActivityStreams (das Format, welches ActivityPub benutzt um Aktivitäten auszuzeichnen) etwas genauer ansieht, erkennt vielleicht ein alt bekanntes Format.

    <entry xmlns="http://www.w3.org/2005/Atom"
           xmlns:activity="http://activitystrea.ms/spec/1.0/">
      <id>tag:photopanic.example.com,2009:photo/4352</id>
      <title>My Cat</title>
      <published>2010-11-02T15:29:00Z</published>
      <link rel="alternate" type="text/html" href="..." />
      <activity:object-type>photo</activity:object-type>
      <activity:verb>post</activity:verb>
    </entry>Code-Sprache: HTML, XML (xml)

    ActivityStreams wurden 2011 als Namespace für Atom definiert um RSS/Atom Feeds mit Informationen anzureichern, die man aus den sozialen Netzwerken kennt. Das ist hauptsächlich der object-type um neben Texten auch Bilder oder Videos auszuzeichnen, und verb um klar zu machen um was für eine Aktion es sich genau handelt.

    OStatus, der Vorgänger von ActivityPub, benutzte übrigens genau dieses Format um Aktivitäten auszuzeichnen!

    Erst 6 Jahre später wurde die Version 2.0 als reines JSON Format veröffentlicht, was aber auch Sinn macht, da JSON das Format ist, welches moderne APIs eben sprechen.

    Das heißt ActivityStreams ist im Prinzip eine moderne Form von RSS und ActivityPub ist einfach „nur“ ein PubSub System welches drumherum gebaut wurde.

    Aber zurück zur Usability!

    Die Frage ist für mich nicht RSS oder ActivityPub… Die wesentlich interessantere Frage ist: Feed-Reader oder Mastodon?

    Die RSS oder IndieWeb Community (und ich zähle mich zu beiden, es geht hier nicht um Blaming) hat bisher leider kein massentaugliches Tool etabliert, welches mit der Usability und Reichweite von Mastodon (und Mastodon ist hier nur exemplarisch für eine Fediverse Platform… Pixelfed, Misskey und andere machen einen ähnlich guten Job) mithalten kann. Mastodon ermöglicht das dezentrale folgen, abonnieren, kommentieren, liken und sharen in einer simplen Oberfläche. Kein RSS-Reader, den man zum Kommentieren verlassen muss und kein IndieWeb-Reader, der eine eigene Webseite mit diversen Login- und Ping-Mechanismen voraussetzt!

    Mastodon zeigt außerdem sehr deutlich dass Technik austauschbar ist, immerhin ging die Plattform 2016 mit OStatus an den Start und schwenkte erst zwei Jahre später auf ActivityPub!

    Ich beschäftige mich jetzt seit ungefähr +/-15 Jahren mit dem Thema, welches man heute als Fediverse oder IndieWeb zusammen fassen würde, und habe auch ein gutes Jahrzehnt an Arbeit in diverse IndieWeb Projekte gesteckt, aber Mastodon und ActivityPub sind in ihren Auswirkungen bisher konkurrenzlos!

    Dank Mastodon und ActivityPub habe ich wieder bis zu 50 Kommentare auf einen einzigen Blog-Post (Likes und Boosts nicht mit gezählt) während über RSS (gemessen an Kommentaren über das WordPress Formular) und Webmentions vielleicht eine Reaktion im Monat kommt.

    11 Kommentare zu ActivityPub – The evolution of RSS
  • Farewell OStatus

    Schon seit der ersten Version von Mastodon wollte ich eine Lobeshymne auf OStatus schreiben! Sowas wie „OStatus hat auch nach über 6 Jahren an Relevanz nicht verloren“ oder „selbst nach 6 Jahren, setzen neue Plattformen mit Erfolg auf OStatus“ oder „mein 6 Jahre altes OStatus WordPress Plugin funktioniert mit nur wenigen Anpassungen auch mit Mastodon„…

    Das kann ich mir jetzt leider sparen. Eugen Rochko, der Gründer von Mastodon, schrieb schon 2018:

    I can’t wait until I can begin removing OStatus-related code from Mastodon. I think GNU social is the last remaining fediverse project that hasn’t yet switched to ActivityPub?

    Eugen Rochko auf Mastodon

    Über Patreon hat er seinen Plan jetzt nochmal konkretisiert:

    […] OStatus […] has overstayed its welcome in the code […] and now that most of the network uses ActivityPub, it’s time for it to go.

    Eugen Rochko auf Patreon

    …und der Pull-Request, der PubSubHubbub und Salmon ausbaut, wurde am 6. Juli ge-merged.

    🙁

    Wie geht’s weiter?

    OStatus war wegweisend! Statt ein komplett neues Protokoll zu beschreiben, hat OStatus bestehende De-Facto-Standards in einer Spezifikation zusammen geführt. Für viele Plattformen, war es dadurch relativ einfach, OStatus einzusetzen, da sie in der Regel Teile der Spezifikation sowieso schon betrieben.

    Protokoll-Übersicht von the-federation.info (Stand: 23. Juli 2019)

    In den letzten Jahren habe ich aber gelernt, nicht zu sehr an Standards, Protokollen oder Technologien fest zu halten. OStatus wurde von ActivityPub eingeholt und aktuell ist GNU.social die einzige Plattform die ausschließlich auf OStatus setzt.

    Zeit los zu lassen.

    Ist ActivityPub die Zukunft?

    Wie gerade schon geschrieben, ist es mir prinzipiell egal, welches Format sich durchsetzen wird. Mir ist nur wichtig dass sich ein Protokoll durchsetzt. Der Trend scheint zwar zu ActivityPub zu gehen… aber wer weiß?!?

    Diaspora sieht bisher jedenfalls keinen Grund ActivityPub einzusetzen:

    ActivityPub tries to work for everything and everyone. And because of that, they introduced a lot of flexibility and, sadly, a lot of ambiguity. Even though they tried, I found some reasons as for why we, as diaspora* developers, would not be able to build upon this new protocol without using heavily customized objects and activities.

    Dennis Schubert in „ActivityPub – one protocol to rule them all?“

    und vor ein paar Wochen habe ich außerdem gelesen, dass HubZilla versucht sein Protokoll Zot zu standardisieren:

    Join the efforts to standardize the Zot protocol, currently used in Hubzilla and Zap platforms. This is a community initiative to push Zot adoption for federated social web.

    fediverse.party

    Ich bin gespannt!

    — via wedistribute.org

    1 Kommentar zu Farewell OStatus
  • App.net hat endlich alles nachgereicht was Dalton Caldwell vor fast genau einem Jahr versprochen hat. Die Liste kann sich echt sehen lassen:

    Mal schauen was sich damit alles basteln lässt, immerhin hab ich im SCREENGUIDE-Magazin (Ausgabe 18) noch groß getönt:

    Mit ein paar wenigen Änderungen und dem Support von z. B. Microformats, RSS/Pubsubhubbub, AtomPub oder Pingbacks, wäre App.net kompatibel zu fast allen Blogs oder IndieWeb-Systemen. Das hätte zum Vorteil, dass sich App.net ohne weitere Anpassungen über RSS-Reader konsumieren und über Blogging-Tools befüllen ließe. Außerdem könnten Posts und Kommentare zwischen App.net und z.B. WordPress ausgetauscht werden, ohne auf komplizierte, dezentrale Protokolle im Sinne von Diaspora oder Tent.io zurückgreifen zu müssen.

    😉

    via Carsten Pötter

    1 Kommentar zu Open App.net
  • pubsubhubbub-logo

    Seit ein paar Wochen scheint die Version 0.4 von PubSubHubbub relativ stabil zu sein… immerhin so stabil, dass Google und Superfeedr ihre Hubs an die neue Spec angepasst haben.

    Die wesentlichen Unterschiede zu der Vorgängerversion sind:

    • Alle Datentypen werden unterstützt: Neben RSS/Atom können jetzt auch vCards, beliebige XML oder JSON Datein oder auch Bilder ge-push-t werden
    • Statt HTML/Atom-Links werden HTTP-Link-Header benutzt
    • Der Pubslisher-Prozess ist nicht mehr über die Spezifikation definiert

    Für die zwei großen Hubs sollte es reichen wenn ihr eure Feed-<link />s („hub“ und „self“):

    <?xml version="1.0"?>
    <atom:feed>
      <link rel="hub" href="http://myhub.example.com/endpoint" />
      <link rel="self" href="http://publisher.example.com/happycats.xml" />
    </atom:feed>Code-Sprache: HTML, XML (xml)

    …zusätzlich über die HTTP-Header ausliefert:

    HTTP/1.1 200 OK
    Date: Tue, 03 Apr 2012 08:02:19 GMT
    Content-Type: text/html
    Content-Length: 11261
    Link: <http://http://myhub.example.com/endpoint>; rel="hub"
    Link: <http://publisher.example.com/happycats.xml>; rel="self"Code-Sprache: HTTP (http)

    Leider ist die Version 0.4 aber nicht 100% abwärts-kompatibel… Die wahrscheinlich größte (und für mich enttäuschendste) Änderung ist das bewusste Weglassen des Publisher-Prozesses:

    The publisher MUST inform the hubs it previously designated when a topic has been updated. The hub and the publisher can agree on any mechanism, as long as the hub is eventually able send the updated payload to the subscribers.

    Auf der einen Seite kann das ein enormer Vorteil für Publisher sein, da Hubs in Zukunft auch per E-Mail, SMS, Pingbacks/Trackbacks oder XMPP über Updates informieren werden könnten. Auf der anderen Seite ist es aber auch sehr Wahrscheinlich, dass man für jedes v0.4 Hub eine individuelle Implementierung benötigt. Bisher unterstützen beide großen Hubs (Google und Superfeedr) aber weiterhin das alte Verfahren, also kein Grund sich jetzt schon Sorgen zu machen…

    Alles in allem finde ich die Änderungen aber ganz nett und hoffe dass „Polling“ bald der Vergangenheit angehört…

    Keine Kommentare zu Änderungen in PubSubHubbub v0.4
  • Google hat sein PubSubHubbub-Hub aktualisiert und unterstützt jetzt die aktuelle Spezifikation (0.4). Dank des Updates können jetzt neben RSS und Atom auch andere Datentypen, wie z.B. JSON, vCard/iCalendar-Files oder HTML-Seiten ge-PuSH-t werden. Superfeedr hat übrigens schon seit einiger Zeit umgestellt.

    1 Kommentar zu Google hat sein PubSubHubbub-Hub aktualisiert
  • Glow.io ist das neue DiSo-Projekt von Darren Bounds (Cliqset):

    The simple fact is, Glow is my personal attempt at building a social network that doesn’t sacrifice simplicity, features or user-experience in an effort to promote decentralization, user privacy and data ownership.

    Keine Kommentare zu Glow.io
  • Neue Version von „Contacts in the Browser“

    Contacts in the Browser kann jetzt auch OAuth:

    Where possible, Contacts now uses the industry-standard OAuth login mechanism to access websites. You will need to re-connect your browser to your services once to set it up.

    » Contacts in the Browser 0.4 released

    Mozillas „Prototype of an Open Web App Ecosystem“

    Und nochmal Firefox: Mozilla arbeitet an der Verschmelzung von Webservices und dem Browser:

    Apps built using HTML/CSS/JavaScript that work both on computers and mobile phones, have many of the characteristics that users find compelling about native apps and provide developers with open and flexible distribution options.

    » Prototype of an Open Web App Ecosystem

    PubSubJubhub

    PubSubHubBub mit JavaScript abonnieren:

    A little web service that allows you to subscribe to PubSubHubbub feeds from Javascript!

    » PubSubJubhub

    W3Cs FederatedSocialWebCharter

    Das W3C will jetzt auch im OpenWeb mit mischen und ruft das (oder den) FederatedSocialWebCharter ins leben:

    The mission of the Federated Social Web Incubator Group is to provide a set of community-driven specifications and a test-case suite for a federated social web.

    » FederatedSocialWebCharter

    Keine Kommentare zu OpenWeb-Notizen: Contacts in the Browser, Open Web Apps, PubSubJubhub, FederatedSocialWebCharter
  • How to implement OStatus?

    Evan Prodromou (der Gründer von StatusNet) hat eine Schritt-für-Schritt-Anleitung veröffentlicht, wie man die eigene Seite verOStatust!

    Making your application a full-fledged participant in the federated social web is not easy, but gradual and incremental improvements can make your users‘ activities visible to others.

    » How to OStatus-enable Your Application

    Is your Site OStatus-Ready?

    …und jede neue Implementierung will auch überprüft werden!

    » Are you ready for Ostatus .. or not ?

    pubsubhubbub + json

    Facebooks Real-time-API ist eine Art Mischung aus pubsubhubbub+json+OAuth2.

    » pubsubhubbub
    » Real-time Updates

    Keine Kommentare zu OpenWeb-Notizen: OStatus, Facebook, pubsubhubbub
  • Durch einen Artikel auf ReadWriteWeb (5 Great YQL One-Liners) bin ich nach langer Zeit mal wieder auf Yahoos YQL-Plattform gelandet und habe nicht schlecht gestaunt, was die Yahoo Query Language mittlerweile alles leistet (mehr über YQL hier). Ich hatte z.B. keine Ahnung, dass man auch eigene table definition schreiben kann und dass es auch schon eine ziemlich fleißige Community um diese Definitionen gibt.

    Meine Favoriten sind:

    Microformats

    select * from microformats where url='http://wait-till-i.com'Code-Sprache: JavaScript (javascript)

    …findet diverse Microformats. » Direct Link

    Mehr dazu hier: SELECT * FROM microformats

    OpenID

    select * from openid.discover where normalizedId="http://www.yahoo.com/"Code-Sprache: JavaScript (javascript)

    …klassische OpenID-Discovery. » Direct Link

    select * from openid.yadis where uri="http://www.yahoo.com/"Code-Sprache: JavaScript (javascript)

    …YADIS-Discovery. » Direct Link

    …und es gibt noch ’ne Reihe anderer OpenID Queries… es sollte sogar möglich sein einen kompletten OpenID-Client mit YQL zu bauen.

    OAuth

    select * from oauth where uri='http://example.com' and consumerKey='asd123' and consumerSecret='zxc456' and callbackUri='http://example.com';Code-Sprache: JavaScript (javascript)

    …sendet einen OAuth-Request. » Direct Link

    pubsubhubbub

    insert into pubsubhubbub.publisher (hub_url, topic_url) values ('http://pubsubhubbub.appspot.com/publish', 'http://developer.yahoo.com')Code-Sprache: JavaScript (javascript)

    …sendet ein Update an das angegebene Hub. » Direct Link

    Webfinger

    select * from webfinger where account='pfefferle@gmail.com'Code-Sprache: JavaScript (javascript)

    …Webfinger-Discovery. » Direct Link

    OpenSocial

    select * from opensocial.peopleCode-Sprache: JavaScript (javascript)

    …sendet eine OpenSocial People-Anfrage. » Direct Link

    Social Graph API

    select * from socialgraph.lookup where q = "notiz.blog" AND edo = "1"Code-Sprache: JavaScript (javascript)

    …ermöglicht Zugriff auf Googles Social Graph API. » Direct Link

    Atom

    select * from atom where url='https://notiz.blog/feed/atom'Code-Sprache: JavaScript (javascript)

    …interpretiert Atom-Feeds mit allen möglichen Erweiterungen, beispielsweise der ActivityStreams-Extension. » Direct Link

    Vielleicht bekomm‘ ich die Tage ja auch mal eine Query zusammen 🙂

    3 Kommentare zu Accessing the OpenWeb with YQL
  • Das (OpenWeb-) Thema, welches die letzten Tage die meisten Netizens beschäftigt hat war wohl die Veröffentlichung des Diaspora-Codes. Irgendwie kam das Tool dabei nicht ganz so gut weg. Hier ein paar Meinungen aus deutschen Quellen:

    Lange hat es nicht gedauert, bis die ersten sicherheitsrelevanten Lücken aufgedeckt wurden. Wie The Register meldet, haben Experten bereits Möglichkeiten entdeckt fremde Accounts zu übernehmen, ohne Erlaubnis neue Kontakte aufzubauen oder Fotos zu löschen.

    Entwickler haben sich den Code bereits genauer angesehen und sind enttäuscht: Diaspora ist eine einfache Rails App, mit der man Fotos hochladen kann“, zitiert Mashable den Entwickler J. Chris Anderson. Daraus könne man schließen, dass die Codebasis keinesfalls ausreicht, um daraus in den nächsten Monaten einen echten Konkurrenten für Facebook zu machen.

    t3nWelche Chancen hat die dezentrale Facebook-Alternative?

    Nun wurde Diaspora mit Ruby on Rails geschrieben zusätzlich braucht es eine Mongo Database – zwei dinge die jetzt nicht jeder installiert hat – oder ums spezifizieren – so gut wie niemand installiert hat. Das sind schonmal zwei Hürden die so gleich vorneweg mal 80% aller Hostingoptionen ausschliessen. Man braucht dafür dann schon ein Hostingprovider der einen Kram installieren lässt was bei den meisten Shared Massen Hostern(tm) nicht funktioniert – oder man hat nen eigenen Server irgendwo stehen.

    Blog RebellenDiaspora – Ein erster Eindruck

    Die eigenen Server stehen übrigens auch einer großen Verbreitung von Diaspora entgegen. Denn wie viele an Social Networking interessierte Nutzer gibt es, die einen eigenen Server betreiben? Selbst wenn es Hoster in der Art von WordPress.com geben sollte, dürfte die Nutzerzahl begrenzt bleiben.

    Nur mal so: Jeder kann einen Mail Server betreiben, jeder kann OpenID Provider werden. Frage: Wie viele Leute betreiben einen eigenen Mail Server und wie viele Leute sind ihr eigener OpenID Provider? Genau.

    NeunetzCarsten Pötter in den Kommentaren

    Neben den Sicherheitsmängeln und den anspruchsvollen „Server Requirements“ gibt es aber vor allem ein Problem: Diaspora basiert auf den gleichen Ideen wie z.B. auch Noserub oder StatusNET und übernimmt auch all deren Probleme. Um einen Kontakt einer anderen Diaspora-Node hinzufügen zu können muss man seinen Identifier kennen (z.B. pfefferle@diaspora.t3n-magazin.de)… ein Problem mit dem beispielsweise die OpenID-Community schon seit Jahren kämpft. Des Weiteren spricht Diaspora eine eigene Sprache und kann nicht mit funktionierenden, etablierten und dezentralen Systemen (basierend auf offenen Standards) wie StatusNET, verbunden werden!

    Technische Mittel ein dezentrales Netzwerk zu erstellen gibt es genug: OStatus, Salmon Protocol, Pubsubhubbub, OpenID uvm. (von denen Diaspora übrigens keine einzige nutzt) und wir brauchen wirklich nicht noch eine neue offene Plattform… viel wichtiger wäre doch die bestehenden Netzwerke untereinander zu verbinden oder einen Weg zu finden, dem normalen Surfer das Thema Identifier näher zu bringen…

    Ich will keine Software installieren müssen um dann nur User der gleichen Software folgen zu können, ich will Google-User mit meinem Twitter-Account verbinden! Ich will meine Bilder bei Flickr hoch laden und bei MySpace referenzieren. Ein dezentrales „federated social web“ bedeutet für mich, das verbinden von verschiedenen Diensten, anstatt einer offenen Kopie von Facebook!

    2 Kommentare zu OpenWeb-Notizen: Diaspora Special