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

2018 war ein durchwachsenes Jahr!

Mein privates „Ich“ hat letztes Jahr sehr viel Raum eingenommen und auch beruflich hat sich viel verändert.

Das heißt ich hatte generell wenig Zeit für mein online „Ich“ und wenn ich doch etwas Zeit hatte, war das Ergebnis meistens eher frustrierend.

Pfefferles OpenWeb

Bilder von "Pfefferles OpenWeb" Artikeln

Ich habe für das SCREENGUIDE/Webstandards-Magazin in den letzten 10 Jahren 36 mal „Pfefferles OpenWeb“, 3 Artikel, 1 Titelthema und 1 Interview geschrieben! Letztes Jahr musste der Verlag das Magazin aus „wirtschaftlichen Gründen“ leider einstellen und ich hab es nicht einmal geschafft darüber zu schreiben!

notiz.Blog

Und zum Bloggen kam ich, trotz der gewonnenen Zeit auch nicht! Wenn ich dieses Jahr so weiter mache, muss ich mir meinen selbstvergebenen Titel als „Chronist des OpenWebs“ wieder selbst aberkennen!

IndieWeb

Das IndieWeb wächst und das ist prinzipiell auch gut so. Neben den ganzen Nerds und Geeks interessieren sich auch immer mehr Blogger und Journalisten für das Thema. In der Community spricht man von der 2. Generation.

Auch das Interesse an WordPress wächst. Das ist nicht verwunderlich, immerhin geht es um die Berufsgruppe der Schreibenden und deren Seiten werden, mit einer Wahrscheinlichkeit von 30%, mit WordPress betrieben.

Dieses Interesse beißt sich aber leider mit meinen Möglichkeiten. Von Anfang an verfolge ich folgende Grundsätze des IndieWebs:

Scratch Your Own Itches. Make tools, templates, etc. for yourself first, not for all of your friends or ”everyone“.

und:

Use what you make! Whatever you build you should actively use. If you aren’t depending on it, why should anybody else?

Ich baue (mittlerweile) ausschließlich Plugins die ich für sinnvoll erachte und ich baue sie so, dass sie für mich funktionieren. Das mag erstmal egoistisch klingen, es ist für mich aber die einzige Möglichkeit dieses „Hobby“ überhaupt zu betreiben.

Ich verstehe, dass Anwender teilweise überfordert sind, meine Plugins zu benutzen, kann sie aber nicht in dem Umfang optimieren, der nötig wäre. Ideal ist wahrscheinlich ein großes IndieWeb Plugin, welches alle Features bereit stellt und, am besten ohne viel Einstellungen, einfach funktioniert. Aktuell nutze ich 50% aller, vom IndieWeb vorgeschlagenen WordPress Plugins, eine allumfassende Plugin Suite würde dann also nicht mehr meinen Anforderungen entsprechen.

Ich habe aktuell keine Ahnung wie ich aus diesem Dilemma heraus kommen soll. Es gibt Plugins die will ich nicht aus der Hand geben und Plugins die ich an die Community übergeben habe, werden aus Mangel an Entwicklern nicht weiter gepflegt. Aktuell arbeiten maximal 3 Personen (mich inbegriffen) an über 10 unterschiedlichen Plugins.

…und wenn das noch nicht genug wäre, kommt das „Microformats Problem“ noch on top.

Microformats

Microformats2 und WordPress scheinen nicht kompatibel zu sein und das ist schade, immerhin sind Microformats DER Building-Block des IndieWebs. Mehr noch: Microformats sind die API des IndieWebs!

Ich habe in den letzten Jahren viel ausprobiert um das Problem zu lösen, aber es gibt keine generische Möglichkeit, ein WordPress Theme mit Microformats2 auszustatten.

Benutzt man ein Plugin, um über Hooks einige zentrale Elemente (wie z.B. den Titel) Semantisch auszuzeichnen, bekommt man nette Effekte, mit Themes die ihre Ausgabe „escapen“:

After activating the last version (1.1.0) of your plugin on WordPress 4.9.8 with understrap theme my meta entry become : Posted on September 12, 2018 by <span class='p-author h-card'>Author</span> instead of : Posted on September 12, 2018 by Author for fun I look into the code and I think the error is here but since I’m totally not a PHP developer I’ll pass on the potential PR

Versucht man es mit einer Art Microformats Feed, bekommt man Probleme, alle Meta-Daten zu integrieren. Schlimmer noch, man arbeitet gegen einen Grundsatz der Microformats:

Design for humans first, machines second

Zusammengefasst: Microformats gehören ins Theme, es gibt aber keine generische Lösung. Eine generische API ist möglich, widerspricht aber der Microformats-Idee.

Aktuell gibt es drei WordPress Themes die Microformats2 voll unterstützen und um sein Blog wirklich IndieWeb tauglich zu machen, muss man eines dieser drei Themes benutzen oder selber HTML bzw. ein Theme schreiben.

Das ist frustrierend! Außerdem liefen die Diskussionen (meines Erachtens) etwas aus dem Ruder, weshalb ich mich letztes Jahr entschieden habe, mich aus dem Microformats-Thema komplett heraus zu nehmen.

OStatus

OStatus ist das zentrale Protokoll, über das identi.ca, status.net, gnu.social und friendi.ca sprechen. Es ist arsch-alt, funktioniert aber immer noch prächtig!

Ich hab mich wie bolle gefreut als OStatus mit Mastodon wieder frischen Wind bekam, hab mein altes OStatus Plugin ein wenig aufpoliert und wollte gerade freudig darüber berichten, als Eugen Rochko, der Macher hinter Mastodon, einen meiner Bugs, mit folgenden Worten schloss:

Closing on the grounds that OStatus is no longer our primary mechanism and will be deprecated in the future.

Mein vorbereiteter Blogpost hatte den Titel „My Blog is my Social-Network“ und der erste Abschnitt lautete:

Ich habe in den letzte Woche an einem Update für ein WordPress Plugin gearbeitet, das ich seit 6 Jahren nicht angerührt habe… Nicht dass das Plugin an sich nicht mehr funktioniert hätte, aber PHP und WordPress haben sich weiter entwickelt.

Schade!

ActivityPub

Aber dann kam ActivityPub! ActivityPub ist der heiße Shit im Fediverse. So zu sagen OStatus in neu und besser! Was AtomPub für Atom ist, ist ActivityPub für ActivityStreams… und noch ein bisschen mehr.

Ein Schaubild des ActivitPub flows

ActivityPub ist außerdem der erste, vom W3C veröffentlicht, „Standard“ (abhängig davon wie man „Standard“ definiert), der versucht ein dezentrales, soziales Netzwerke zu definieren.

Naiv wie ich bin, dachte ich, ich geb‘ dem Ganzen eine Chance. Die Spezifikation ist relativ simpel und ein „Standard“ ist „wohl definiert“, das heißt es gibt nur einen Weg um ihn zu implementieren!

Das Ergebnis (Trommelwirbel): ein ActivityPub Plugin für WordPress!

War es so einfach wie ich gedacht habe? Natürlich nicht! Es hat natürlich doch wieder jede Plattform seine extra Wurst, aber im Gegensatz zu Microformats2, basiert ActivityPub auf einer „echten“ API und lässt sich somit relativ leicht in WordPress integrieren.

ActivityPub und das Plugin waren definitiv das Highlight des Jahres, immerhin ist WordPress jetzt offiziell ein Teil des Fediverse:

und laut dem „2018 Report“ von fediverse.network sogar auf Platz 8 von 13.

Fazit

Die Arbeit an ActivityPub hat eigentlich Spaß gemacht und ich werde mich wahrscheinlich auch 2019 hauptsächlich mit ActivityPub beschäftigen!

2018 war nicht so dolle, 2019 kann nur besser werden!

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

OpenWeb-Kolumne (wsm)

Damit das ganze Zeug über das ich so einmal im Quartal im Webstandards-Magazin schreibe nicht pure Science Fiction bleibt, hab ich mich die letzten Wochen mal daran gemacht, ein bisschen Federated Social Web für WordPress zu basteln!

Vor einigen Monaten kam Pepijn de Vos auf mich zu, ob ich ihm nicht bei einem „OStatus for WordPress“ (noch nicht runterladen! funktioniert noch nicht!) helfen wolle. Das damals größte Problem: Wie können wir so viele besehenden Plugins (pubsubhubbub, webfinger, …) wiederverwenden, ohne die Installation zu kompliziert zu gestalten. Da dieses Problem mittlerweile behoben ist und auch das Salmon-Plugin einigermaßen funktioniert, ist es Zeit für einen Test!

Ich würde mich freuen, wenn ihr zwei, drei oder vier Leser da draußen mal diesen Blog bei Status.net oder Identi.ca (oder bei jedem anderen StatusNet-Klon) abonnieren und wie wild auf diesen Artikel antworten könntet. Dazu müsst ihr einfach pfefferle at notizblog dot org folgen:

…und auf diesen Post antworten:

Was bisher funktioniert:

  • Artikel landen in Echtzeit bei StatusNet/Identi.ca (pubsubhubbub)
  • Antworten auf diese Artikel landen als Kommentare bei WordPress (salmon)

Zukünftige Features:

  • Kommentare auf WordPress-Seite sollen auch nach StatusNet/Identi.ca geschrieben werden
  • Bessere Integration in BuddyPress
  • …alles was euch noch so einfällt!?!

Ich würde mich sehr über Feedback, Fragen, Anregungen, Kritik, … freuen. Viel Spaß beim testen!

…sollte alles gut funktionieren, werde ich die Plugins dann nächste Woche veröffentlichen, also TESTEN!

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 🙂

Inspiriert durch Michromeformats, hab ich mich auch mal an ein Chrome-Addon gemacht 🙂

Das Addon erkennt auf der Seite verlinkte ActivityStrea.ms:

<link rel="activitystream" type="application/atom+xml" href="..." />Code-Sprache: HTML, XML (xml)

oder:

<link rel="alternate" class="activitystream" type="application/atom+xml" href="..." />Code-Sprache: JavaScript (javascript)

Kein Hexenwerk, aber immerhin mal ein Anfang 🙂 Falls euch noch ein paar Features einfallen, immer raus damit.

OStatus Logo

Die OpenMicroBlogging-Spezifikation war eine echt nette Idee und hat auch gar nicht schlecht funktioniert… zwar etwas umständlich aber immerhin ein Anfang.

Nach fast zwei Jahren arbeitet StatusNet (früher laconi.ca und Erfinder von OMB) jetzt an einem Nachfolger. Die neue Spezifikation heißt OStatus und ist eine Art „Best Off“ bestehender Open Web Standards:

…und wenn ich es richtig verstanden habe, scheint das in der aktuellen Version von StatusNet1 (Version 0.9) auch schon ansatzweise zu funktionieren.

Plattformübergreifend Echtzeitkommunikation auf Basis offener Standards… schöne neue Welt 🙂


1 StatusNet (vormals Laconica) ist eine in PHP entwickelte freie Software für Mikro-Blogging-Dienste, die den OpenMicroBlogging-Standard implementiert. Damit ermöglicht StatusNet eine offene Kommunikation zwischen Online-Communitys mit zu Twitter vergleichbarer Funktionalität. (via Wikipedia)

Google Buzz

Google startet mit Google Buzz eine Art Activity Stream integriert in Google Mail.

Google Buzz is a new way to share updates, photos, videos and more, and start conversations about the things you find interesting.

Wie man an Facebook sieht, scheint das Phänomen Activity Stream recht beliebt zu sein, immerhin war friendfeed dem Community-Giganten knapp 50 Millionen Dollar wert. Im Gegensatz zu dem eher geschlossenen Facebook macht Google mit seinem Activity Stream aber mal wieder alles richtig… Eigene Feeds und Feeds der Kontakte werden über die Social Graph API (Microformats/XFN) automatisch erkannt und die Liste der unterstützten offenen Standards ist beeindruckend:

  • Atom/RSS
  • MediaRSS
  • PubSubHubbub
  • Social Graph API (Microformats)
  • Activity Streams
  • AtomPub
  • OAuth
  • Salmon
  • Webfinger

Als nächstes wird der Buzz sicherlich auch fester Bestandteil der Google Profilseite die sich immer mehr zu einer echten Online Identität mausert!

Zuerst die Social Search, dann Google Buzz… mal gespannt was Google sonst noch alles sozialisiert…

Für die Audio/Visuellen unter euch, gibt es auch noch ein kurzes Video von Google: