Seit letzter Woche braucht man keinen Invite-Code mehr um sich bei Bluesky anzumelden, die wesentlich spannendere Info steht aber, wie beiläufig erwähnt, im letzten Abschnitt:

This month, we’ll be rolling out an experimental early version of “federation,” or the feature that makes the network so open and customizable. On Bluesky, you’ll have the freedom to choose (and the right to leave) instead of being held to the whims of private companies or black box algorithms. And wherever you go, your friends and relationships can go with you.

https://bsky.social/about/blog/02-06-2024-join-bluesky

Ich bin gespannt wie Bluesky federation umsetzen wird. Auf mich wirkt das ATProtocol immer noch viel zu kompliziert und „overengineered“, aber vielleicht ist das ja auch gerade der Vorteil gegenüber ActivityPub.

Ich hatte vorgestern einen kleinen Plausch mit @deadsuperhero für den Decentered Podcast, in wir unter anderem auch über die Schwierigkeiten bei der Implementierung von ActivityPub sprachen. Da WordPress in vielen verschiedenen Umgebungen laufen muss und sich die Konfiguration des Webservers, die PHP Version, das Caching, die Interferenz mit anderen Plugins und andere spezial Fälle nicht seht gut abschätzen lassen, ist es sehr schwer komplexere Funktionalitäten umzusetzen.

Ein Beispiel: Im Gegensatz zu OStatus, wo die Distribution von neuen Inhalten über PubSubHubbub (jetzt WebSub) geregelt wurde, ist bei ActivityPub der Service selbst dafür verantwortlich. Ein direktes Verteilen der Inhalte, direkt nach dem Veröffentlichen, würde bei großen Follower zahlen, den Prozess unnötig in die Länge ziehen, oder könnte sogar zu einem Fehler oder einem kompletten Abbruch führen. Um dem (so gut es geht) entgegen zu wirken, wird der Prozess asynchron über WP_Cron abgearbeitet. Leider ist aber auch das keine Garantie für einen fehlerfreien Ablauf (Siehe Ende des vorherigen Absatzes).

Lange Rede kurzer Sinn: Abhängig davon wie simpel ein Personal Data Server kurz PDS aufgebaut ist, könnte Bluesky vielleicht doch interessanter sein als ich ursprünglich angenommen habe.

Ich muss mich wohl mal mit @snarfed.org über seine Bluesky Implementierung unterhalten.

Ich bin gespannt!

Das Logo und der Wapuu von dem 20 Jahre WordPress Projekt

WordPress wurde 20 Jahre alt! 20 Jahre!

Vor etwas mehr als 20 Jahren bin ich über Brett Taylors wunderbar nerdiges Blog gestolpert: webfroot.co.nz

Am 04. April 2002 schreibt Brett: „News script is powered by b2, allowing for an RSS XML, better archive system, and improved comments system too.“

Das war Inspiration genug um einen Monat später mit meinem eigenen kleinen b2 Blog an den Start zu gehen.

Mittlerweile begleitet mich das kleine stückchen PHP-Code fast mein halbes Leben und ich hätte nie daran gedacht, dass ich mit meinem Hobby-Projekt irgendwann mein Geld verdienen würde!

Happy Birthday WordPress!

„The early years“

Zum 15. Jubiläum habe ich angefangen meine „WordPress Origin Story“ zu dokumentieren. Der Vollständigkeit halber hier also die folgenden 5 Jahre 😉

2019

2019 stand im Zeichen des ActivityPub Plugins. Hätte ich damals gewusst… 😉

2020

Während meinen 7++ Jahren bei IONOS hatte ich nebenher immer mal wieder mit WordPress zu tun. 2020 bekam ich aber die Möglichkeit, mit einem kleinen Team zusammen, das WordPress Hosting neu/mit zu gestalten. Aus diesem kleinen dreiköpfigen WordPress-Team wurde in den folgenden drei Jahren ein großartiges Haufen von 15+ Personen (inklusive Support, PO, PM, …).

Neben dem daily business haben wir IONOS in dieser Zeit ein kleines bisschen näher an die Community „geschubst“ (zumindest rede ich mir das ein 😉 ). Wir haben einen GitHub Account gestartet, den Entwicklern Zeit für die Five for the Future Initiative frei geräumt und IONOS wurde Teil der (Make) Hosting Community.

In diesem Zuge habe ich mich auch persönlich engagiert und dafür im Juni das Hosting Team Badge „verliehen“ bekommen.

2021

Mein aktivstes Jahr beim Pluginkollektiv. Ich mag die Idee und schätze die Plugins sehr! Ich hoffe ich finde in Zukunft wieder etwas mehr Zeit für das Kollektiv, immerhin arbeite ich ja jetzt hauptberuflich an ActivityPub & Co. und brauche deshalb wieder ein neues Hobbie/Freizeitprojekt 😉

2022

Im März fand der CloudFest Hackathon im Europa-Park statt und ich hatte die Chance, ein Thema zu betreuen. Drei Tage WordPress, IndieWeb und Webmentions <3

2023

…und meine große Klappe auf Twitter, hat dafür gesorgt, dass ich seit diesem Jahr einen neuen Job habe.

Seit April darf ich mich from 9 to 5 mit dem „Open Web“ beschäftigen und bekomme dafür auch noch Geld!

Vielen Dank Matt und vielen Dank Automattic!

…dazu aber später nochmal mehr 🙂

Ich bin gespannt was dieses Jahr noch mit sich bringt und wie die Zukunft von WordPress aussieht.

Wenn es nach mir ginge, dann würde daraus ein „open, portable, interoperable, small, social, synaptic, semantic, structured, distributed, (re-)decentralized, independent, microformatted and federated social“ WordPress 😉

Ein Screenshot von meinem identi.ca Account von 2009

Gestern vor 15 Jahren hat Evan seinen ersten Post ins Fediverse gesendet:

Fifteen years ago tomorrow I published the first post on the fediverse.

https://web.archive.org/web/20080618164355/http://identi.ca/notice/1

It’s still visible on Identi.ca today, although the URL format changed a few years ago, and the redirect plugin stopped working a few years after that.

https://identi.ca/evan/note/Y0QwGyc1QYilqqawkDrQlg

Thanks to everyone who made identi.ca a great place to be, and thanks to everyone who’s expanded the fediverse since then.

Someday soon-ish I’d like to have identi.ca working with ActivityPub. When I get the time for it!

https://cosocial.ca/@evan/110385636249899888

Vor 15 Jahren!!!

Erst laconi.ca/identi.ca dann status.net und jetzt gnu.social.

Von OpenMicroBlogging über OStatus zu ActivityPub.

Es ist faszinierend wie lange sich die Idee gehalten hat und das unabhängig von der Platform und dem Protocol!

Laut dem Screenshot von meinem Profil, bin ich auch schon seit Juli 2008 dabei.

Happy Birthday und mal schauen wie das Fediverse in 15 Jahren aussieht 😉 !

2022 war ein extrem spannendes Jahr! Ein Rückblick!

CloudFest Hackathon

Im März hatte ich die Chance ein Thema für den CloudFest Hackathon zu leiten/betreuen (Danke an Carole und Alain). Auch wenn das Projekt anders lief als ich das insgeheim geplant hatte, hab ich sehr viel über UX gelernt und großartigen Input bekommen, den ich leider noch nicht komplett umsetzen konnte.

WP Sofa

Robert Windisch hat, im Rahmen des Hackathon, Lucas Radke und mich auf das WP Sofa eingeladen und wir haben ein bisschen über die „WordPress Hosting Communtiy“ gesprochen.

In der gleichen Folge erklärt Robert übrigens auch noch das „Hippie Zeug“ an dem wir an den drei Tagen gearbeitet haben 😉

20 Jahre bloggen

Letztes Jahr, vor 20 Jahren, habe ich mit dem Bloggen angefangen! Das heißt ich schreibe jetzt fast mein halbes Leben lang Dinge in’s Internet!

neunetzcast

2022 kamen leider nur drei neunetzcast Folgen zustande, dafür haben wir (aus meiner Sicht) zwei extrem spannende Ausgaben zu Mastodon, ActivityPub und dem Fediverse gemacht.

Eine der Zentralen Fragen des Podcasts: Warum Walled Gardens wie Facebook, Twitter oder TikTok immer noch den Markt der sozialen Netzwerke dominieren, während z.B. im IOT Bereich massiv am Thema Standards und Interoperabilität gearbeitet wird.

These: Der Schmerz ist einfach noch nicht groß genug!

…und als hätte Elon Musk unseren Podcast gehört, hat er promt für den nötigen Schmerz gesorg und viele Twitter-User in die Arme von Mastodon getrieben, was vielleicht der letzte Tropfen war, den das Fediverse Fass gebraucht hat!

Außerdem hat sich ein alter Podcast-Freund zu uns gesellt, mit dem ich seit Jahren nicht mehr gesprochen hatte! Es hat großen Spaß gemacht, Carsten und Marcel und ich freue mich auf nächstes Jahr!

ActivityPub für WordPress

Dank Elon Musk haben sich aber auch die Download-Zahlen von meinem ActivityPub (WordPress) Plugin und meine Follower auf Mastodon mindestens verzehnfacht! Das hat mich beflügelt wieder aktiver am Plugin zu arbeiten und es kamen ein paar großartige Änderungen dabei rum. Alex Kirk hat beispielsweise sein friends Plugin so angepasst, dass man auch Freunde über ActivityPub abonnieren kann.

Um Menschen auf Mastodon oder ähnlichen Plattformen über dein eigenes WordPress zu folgen, kannst du das Friends-Plugin für WordPress benutzen, das über das Plugin Beiträge abruft, in deinem eigenen WordPress anzeigt und es so zu einer eigenen Fediverse-Instanz macht.

Außerdem hat Alex mich (auch durch sein friends Plugin) zu einem neuen Onboarding Screen inspiriert.

Es stehen aber noch weitere großartige Features in den Startlöchern (wie z.B. DjangosFederated Comments“ Vorschlag) die aber noch etwas angepasst werden müssen.

Danke an Elon, Django und Alex!

WWSIV

Ich war im November (2022) zu Gast beim „Wo wir sind ist vorne„-Podcast und durfte über alles reden, worüber ich hier auch schreibe 🙂

Indie Web, Open Web, Websemantics, Microformats, Open Graph, Schema.org!“

Mit unserem Gast Matthias Pfefferle verschaffen wir uns einen Überblick über den aktuellen Stand der Websemantics und wie sie dazu beitragen das Web besser zu strukturieren und durchsuchbar zu machen. Dazu lernen wir, warum die eigene Website immer noch der beste Weg ist im Web zu publizieren, sprechen über den Twitter-Meltdown + Fediverse und zum Abschluss gibt es noch Blasmusik. Wir hatten Spaß. Und ihr?

https://wowirsindistvorne.show/open-web-mit-matthias-pfefferle/

Ich kenne Moritz ( @MoritzGiessmann ) ein bisschen und habe den Podcast auch schon seit einer Weile abonniert… zu meiner Schande muss ich aber gestehen, dass ich bisher nur die Live-Steams geschaut („geschaut“ ist vielleicht auch übertrieben… ich habe ein bisschen rein ge-zappt…), aber noch nie eine Audio-Folge gehört habe…

DIE MEISTEN BEITRÄGE SIND ÜBER 2 STUNDEN LANG!

Aus perspektive des Gastes, verstehe ich jetzt aber warum die Folgen so lange sind! Die beiden haben einfach ’ne menge Spaß an dem was sie tun und eine Aufnahme ist viel mehr als „nur“ das Fachsimpeln zu einem Nerd-Thema. Von den 3 Stunden, die ich mit Moritz und Constantin geredet habe, geht es wahrscheinlich „nur“ 60 min um die oben genannten Themen… in der restlichen Zeit haben wir uns über Bier, Spam, Solar-Panele, Blasmusik und Terence Hill unterhalten (und ich hatte mich anfangs noch gewundert warum sie mich gefragt haben ob ich die ganze Folge dabei sein will).

Es war auf alle Fälle sehr lustig und kurzweilig… Ich hoffe die Beiden laden mich irgendwan nochmal ein und kann jedem nur wärmstens empfehlen den Podcast zu abonnieren!!

„Torque Social Hour“ und „Post Status Draft“

Dann war ich im November außerdem mit Tim Nolte zu Gast bei Doctor Popular und wir haben über „WordPress and the Fediverse“ gesprochen…

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

…und im Dezember hatte ich noch einen gemütlichen Plausch mit Cory Miller „On The Fediverse, WordPress, and Activity Pub“.

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

2023

Dieses Jahr wird mindestens genau so aufregend, wenn nicht noch aufregender…

Mehr dazu gibt es aber ein anderes Mal 🙂

The Logo of the AT Protocol

Vor zwei Jahren wollte Twitter in das „Dezentrale Netzwerke“-Business einsteigen und gründete eigens dafür das Projekt Bluesky. In den folgenden zwei Jahren wurde viel evaluiert und diskutiert, was wohl die beste Lösung für Twitter sei und wir alle fieberten mit ob es nun ActivityPub oder doch Matrix werden würde…

Aber das Warten hat ein Ende! Bluesky hat verkündet wie es weiter geht!

Sie entwickeln ein neues Protokoll!

Das AT Protocol, kurz für Authenticated Transfer Protocol!

Ich hab mir die FAQ mal angeschaut und dort steht warum Bluesky sich gegen ActivityPub entschieden hat:

Account portability is the major reason why we chose to build a separate protocol. We consider portability to be crucial because it protects users from sudden bans, server shutdowns, and policy disagreements. Our solution for portability requires both signed data repositories and DIDs, neither of which are easy to retrofit into ActivityPub. The migration tools for ActivityPub are comparatively limited; they require the original server to provide a redirect and cannot migrate the user’s previous data.

Das erinnert mich ein bisschen an die Subline von meinem OpenWeb-Icons Font:

Why OpenWeb Icons? Because Font Awesome had no RSS-icon […]

Weil ActivityPub keine perfekte Lösung für „Account portability“ hat, bauen sie ein komplett neues Protokoll?

ActivityPub ist sicherlich nicht „feature complete“, aber ein guter erster Wurf, was das Fediverse erfolgreich bewiesen hat! Warum arbeitet Twitter also lieber an einem eigen Format anstatt mit dem W3C zusammen an ActivityPub v2?

Warum macht sich das W3C überhaupt noch die Mühe „Standards“ zu definieren?

Wegen der Interoperabilität!

Würde Twitter mit HTTP(S), HTML oder CSS ähnlich umgehen, würde der Browser einfach leer bleiben, weil das &$%§& Internet nur mit einheitlichen Standards funktioniert!

Und das gleiche gilt auch für dezentralte Netze, zumindest wenn sie erfolgreich sein wollen! Darüber hab ich tragischerweise schon vor 10 Jahren geschrieben!

Diaspora* wurde kaum für „tot“ erklärt und schon steht das nächste Projekt in den Startlöchern! Tent.io soll ein protocol for distributed social networking and personal data storage werden. Alles neu, alles anders, alles besser als OStatus, DiSo oder Diaspora*. Aber mal ganz ehrlich… was haben die Diasporas & Co. bisher geschaffen? Ziel war es Facebooks „Walled Gardens“ aufzubrechen und was kam wirklich dabei rum? Eine ganze Reihe an dezentralen „Walled Gardens“. Na danke!

Dezentrale „Walled Gardens“

Das fediverse hat (wie schon erwähnt) bisher einen großartigen Job gemacht und verschiedenste Netzwerke mit den verschiedensten Ausprägungen vernetzt! Ich glaube bin der festen Überzeugung, dass sich diesmal wirklich das offene Format (ActivityPub) durchsetzen wird und Blueskys Authenticated Transfer Protocol auch in ein paar Monaten oder Jahren keine Rolle spielen wird!

Ben Werdmuller hat eine gesunde Einstellung zu dem Thema:

I’m so burned out by open source social, but I’m glad to see people throw energy at the problem, even if it’s not how I would have gone about it.

Twitter

Mehr hab ich dazu eigentlich nicht zu sagen, außer dass wir in der aktuellen Folge des neunetzcasts sehr ausgiebig über genau dieses Problem gesprochen haben!

Ein Code-Beispiel wie Kommentare als Custom Post Type registriert werden können.

Eine Leseempfehlung vorweg: „Yes, Comments Are Still Relevant, But We Need a Better System“ von Justin Tadlock auf WPTavern!

Soziale Netzwerke haben die Art wie wir kommunizieren drastisch verändert. Wir reagieren selten mit Text, statt dessen liken, re-tweeten, sharen und faven wir was das Zeug hält. Und wenn wir mit Text reagieren, hat dieser spätestens seit Twitter, einen anderen Stellenwert. Ein Kommentar ist nicht länger ein Stück Text unter einem Artikel, ein Kommentar steht für sich alleine und wird durch die Plattform in den richtigen Kontext gesetzt, abhängig vom Einstiegspunkt des lesenden.

Mein Tweet, über meine Timeline, mit Depones Antwort
Daniels Antwort über seine Timeline, mit meinem Tweet als „Reply-Context“.

Die IndieWeb Community nennt das einen Reply-Context.

Diese Art der Darstellung und Handhabung von Reaktionen ist auch in dezentralen Netzwerken sehr populär. Mastodon ähnelt sehr, dem von Twitter gekauften Tweetdeck und imitiert auch dessen Darstellung. Die IndieWeb Bewegung geht sogar noch einen Schritt weiter und schafft mit Webmentions eine Möglichkeit über Blog-Posts dezentral zu kommentieren.

Die Kommentar-Funktion von WordPress ist dagegen bald 20 Jahre alt und dementsprechend antiquiert.

Zeit das zu ändern!?!

Custom Post Type

Ich arbeite seit knapp 15 Jahren daran, WordPress im IndieWeb und Fediverse zu verankern. Das große Problem ist dabei immer wieder die Persistenz und die Darstellung von Reaktionen. Ich habe mir viele Gedanken gemacht, wie man das Problem beheben und WordPress‘ Kommentar System modernisieren könnte, und ende immer an dem Punkt, wo ich versuche die Custom Post Type – Funktionalität für Kommentare nachzubauen.

Aber warum? Wenn ich eh alles nachbauen müsste, wäre es doch viel sinnvoller direkt Post-Types zu benutzen.

register_post_type( 'comment' );Code-Sprache: JavaScript (javascript)

Aktuell bildet WordPress Posts, Pages, Attachments, Revisions, Navigation Menus, Custom CSS und Changesets über Custom Post Types ab… Warum also nicht auch Kommentare und andere Reaktionen?

Durch die Gleichsetzung der Datenstruktur von Posts und Comments, lassen sich diese einheitlich und dadurch einfacher verarbeiten und über z.B. APIs ausgeben. Gerade ActivityPub macht, wie Twitter, keinen Unterschied zwischen Kommentar, Antwort, Like, Boost oder initialem Text.

Die (Custom-)Post Tabelle bietet über post_parent schon jetzt die Möglichkeit komplexe Zusammenhänge wie z.B. auch Threaded-Comments abzubilden. Über den post_status ließen sich außerdem Kommentar-Status sowie eine Spam-Behandlung realisieren und commentmeta kann komplett in postmeta aufgehen.

Neben den klassichen Kommentaren lassen sich aber auch andere Reaktionen umsetzen.

Like, Share, …

Mit Post-Formats hat WordPress ein interessantes Konstrukt um Posts (über eine Taxonomy) weiter zu klassifizieren. Was für Posts das aside, gallery, link oder video Format ist, könnte für Comments das Like, Share oder Bookmark Format sein.

Themes könnten ihren Support wie folgt definieren:

add_theme_support( 'comment-formats', array( 'like', 'share', 'bookmark' ) );Code-Sprache: PHP (php)

Und Plugins, wie Webmention oder ActicityPub, könnten neue Formate wie folgt registrieren:

register_comment_format( string $comment_format, array|string $args = array() )Code-Sprache: PHP (php)

Fazit

Technisch spricht also nichts dagegen, Custom Post Types auch für Kommentare zu benutzen, man muss eigentlich nur noch alle Kommentar-Funktionen und -Klassen anpassen und fertig!

…und direkt über wpdb wird sicherlich eh niemand auf die Kommentar-Tabelle zugreifen! 😉

Spaß beiseite… Ich mag die Idee wirklich, hab aber bisher noch keinen ähnlichen Vorschlag im Trac gefunden… Ob das ein Zeichen ist?

A list of all my WordPress Plugins

Mein erstes WordPress Plugin hab ich vor mehr als 14 Jahren veröffentlicht und über die Jahre sind eine ganze Menge, mehr oder weniger erfolgreiche, Plugins dazu gekommen… Zeit für eine Inventur 🙂

Viele der Plugins schreibe ich in erster Linie für mich selbst (eat your own dogfood), weshalb ich in den wenigesten Fällen über die Plugins spreche oder sie bewerbe. Das, in Verbindung mit meinen eher spärlichen Beschreibungen, sorgt oft für eher zweistellige, maximal dreistellige Download-Zahlen. Wo die Zahlen höher sind, habe ich das Plugin meistens von Anderen übernommen (um die Weiterentwicklung zu gewährleisten) oder ich bin einfach „nur“ Contributor.

Aber Schluss mit der falschen Bescheidenheit!

Selbst wenn ich die Plugins für mich baue, ist die Motivation natürlich größer, wenn sie auch von anderen benutzt werden. Also möchte ich euch hier ein paar meiner Plugins vorstellen.

ActivityPub

ActivityPub ist ein, vom W3C veröffentlichtes, offenes, dezentrales Protokoll für soziale Netzwerke.

The ActivityPub protocol is a decentralized social networking protocol based upon the [ActivityStreams] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.

https://www.w3.org/TR/activitypub/
Schaubild welches die Funktionsweise von ActivityPub zeigt

Es ermöglicht das dezentrale kommunizieren über Text, Bild, Video und Audio über ein simples Inbox/Outbox Prinzip.

WebFinger Plugin

WebFinger ist kein fester Bestandteil von ActivityPub, wird aber von allen großen Netzwerken unterstützt und von Mastodon sogar verlangt. WebFinger ist eine Art Meta-Data System für alle möglichen URIs. Der gängige Identifier im Fediverse ist @username@domain.tld, das Plugin erlaubt aber auch die Author URL oder die Instant-Messaging Accounts eines Users, wenn diese unter der gleichen Domain erreichbar sind.

Mein Identifier ist Beispielsweise pfefferle@notiz.blog und die Meta-Daten können über folgenden API-Endpunkt abgerufen werden: https://notiz.blog/.well-known/webfinger?resource=acct%3Apfefferle%40notiz.blog

NodeInfo Plugin

NodeInfo (2) ist auch kein fester Bestandteil von ActivityPub, wird aber auch von den Meisten Netzwerken unterstützt. NodeInfo stellt, wie der Name schon sagt, Infos über einen „Node“ (Server) bereit. Dank NodeInfo gibt es eine ganze Reihe an Statistik-Seiten wie the-federation.info, die bei der Auswahl der richtigen Plattform bzw. des richtigen Servers helfen.

ActivityPub Plugin

Das eigentliche ActivityPub Plugin macht WordPress zu einem (kleinen) Teil des Fediverse. User von Mastodon, Pleroma, Friendi.ca oder Pixelfed können dem Blog „folgen“ und sehen ab dann alle neuen Blog-Posts in ihrer Timeline und können diese kommentieren. Das Plugin ist immernoch in einem frühen Stadium und bekommt sicherlich noch das ein oder andere Feature, im Fokus soll aber das Bloggen stehen. Wer ein vollwertiges, dezentrales, soziales Netzwerk möchte, sollte sich erstmal für eine der oben genannten Plattformen entscheiden.

IndieWeb

Der IndieWeb Wapuu

Das IndieWeb ist eine Grassroots Bewegung mit dem Ziel, die eigene Webseite als zentralen Kommunikations-Hub zu nutzen.

The IndieWeb is a community of individual personal websites, connected by simple standards, based on the principles of owning your domain, using it as your primary identity, to publish on your own site (optionally syndicate elsewhere), and own your data.

https://indieweb.org/IndieWeb

Mehr zum IndieWeb findet ihr hier oder unter dem Tag „indieweb“ hier im Blog.

IndieWeb Plugin

Das IndieWeb Plugin hat nahezu keine Funktionalität, es ist vielmehr eine Art Installer um die IndieWeb Plugins über eine zentrale Stelle verwalten zu können.

Es gibt immer wieder Kritik am Aufbau des Plugins, bzw. kommt immer wieder die Frage auf, warum das Plugin nicht einfach die komplette Funktionalität der einzelnen Plugins beinhaltet. Meine Antwort darauf: Das IndieWeb ist mehr eine Idee als eine Spezifikation und es gibt verschiedene Möglichkeiten diese Idee mit WordPress umzusetzen. Für einen Usecase gibt es also oft verschiedene Lösungen, die von verschiedenen Personen entwickelt werden. Ein IndieWeb Plugin im Stil von ActivityPub ist in meinen Augen nicht möglich. Ich lasse mich aber gerne eines besseren belehren 😉

Webmention Plugin

Webmentions sind eine moderne Alternative zu Pingbacks und Trackbacks. Im Gegensatz zu der eher unglücklichen Darstellung von Pingbacks ([...] super, wie war nochmal der kontext, oder [...]) versucht das IndieWeb (über Webmentions und Microformats), den Sinn und die Art einer Verlinkung heraus zu bekommen um die Reaktion dann als Like, Bookmark oder vollwertiges Kommentar anzuzeigen.

Das Webmention Plugin implementiert aktuell nur den Kommunikations-Teil, für das Interpretieren der Websemantiken benötigt ihr zusätzlich das „Semantic Linkbacks“ Plugin.

Mehr über Webmentions hier oder unter dem „webmention“ Tag hier im Blog.

Semantic Linkbacks Plugin

Wie oben beschrieben sorgt das Semantic Linkbacks Plugin für die hübsche Darstellung der Webmentions, Pingbacks und Trackbacks. Wir sind gerade dabei, die Funktionalität in das Webmention Plugin zu übertragen, deshalb hat das Plugin aber nur noch temporär Bedeutung.

WebSub Plugin

WebSub (formerly known as: PubSubHubbub) ist ein simples PubSub Protokoll für das Web. Es wurde ursprünglich entwickelt um updates von RSS und Atom Feeds in „echtzeit“ zu konsumieren. Push statt pull. Die Restriktion auf RSS und Atom, wurde mit der aktuellen Version aufgehoben.

WebSub provides a common mechanism for communication between publishers of any kind of Web content and their subscribers, based on HTTP web hooks. Subscription requests are relayed through hubs, which validate and verify the request. Hubs then distribute new and updated content to subscribers when it becomes available. WebSub was previously known as PubSubHubbub.

https://www.w3.org/TR/websub/

Über das WebSub Plugin (ursprünglich entwickelt von Josh Fraser) kann man die Standard-Feeds von WordPress abonnieren. Das Plugin kann aber auch über andere Plugins und Themes erweitert werden.

MF2 Feed Plugin

Das IndieWeb setzt im, Gegensatz zum Fediverse, nicht auf APIs, sondern auf Semantisches HTML:

The idea is rather than publishing something twice (repeating yourself) with (x)HTML for browsers and XML for aggregators – you simply publish once using (x)HTML and allow the tools to take care of the rest.

http://microformats.org/wiki/dry
Das Microformats Logo

In einer Welt in der jeder WordPress Theme Developer Wert auf Microformats, Schema.org oder Ähnliches achtet, funktioniert das Konzept super. Die Erfahrung zeigt aber, dass nur wenige Themes (seit fast 9 Jahren eigentlich sogar nur ein Theme) im WordPress.org Repo Microformats2 unterstützt.

Ich habe viel herum experimentiert um Themes über ein Plugin mit den nötigen Semantiken zu erweitern, was aber, durch Output Escaping, zu komischen Nebeneffekten geführt hat (das alles aber nur der Vollständigkeit halber, das Thema ist eigentlich einen ganzen Artikel wert).

Letztendlich haben wir für WordPress ein Plugin gebaut, das einen Feed bereit stellt, der genau dem JSON Format entspricht, welches auch die Microformats Parser ausspucken. Das Webmention Plugin sucht also erst den pre-parsed Feed und versucht erst im zweiten Schritt, die Seite selbst zu parsen.

Ihr versteht die Ironie? Microformats(2) sind geschaffen worden um XML/JSON APIs abzulösen und weil das bei WordPress nicht wirklich dolle funktioniert bieten wir die Infos als JSON API an! 😀

Decisions, not Options

Ich bin ein Freund von kleinen Plugins die nur einen spezifischen Anwendungsfall abdecken und im besten Fall auch vollkommen ohne Settings aus kommen. Frei nach dem Motto von WordPress:

When making decisions these are the users we consider first. A great example of this consideration is software options. Every time you give a user an option, you are asking them to make a decision. When a user doesn’t care or understand the option this ultimately leads to frustration.

https://wordpress.org/about/philosophy/#decisions

(Ironischerweise führt aber gerade das Fehlen von Settings oft für Verwirrung 😉 )

OpenGraph Plugin

Das Open Graph Protokoll wurde von Facebook entwickelt und hat einen ähnlichen Nutzen wie oEmbed:

The Open Graph protocol enables any web page to become a rich object in a social graph. For instance, this is used on Facebook to allow any web page to have the same functionality as any other object on Facebook.

https://ogp.me

Es wird aktuell von fast jedem großen Netzwerk oder fast jeder Messaging App benutzt und sorgt dafür, dass ihr die kleinen hübschen Vorschausnippets seht, wenn ihr einen Link mit euren Freunden teilt.

Das OpenGraph Plugin wurde ursprünglich von Will Norris geschrieben und generiert alle notwendigen Meta-Tag Header. Keine Settings, keine Entscheidungen, aber mit wohl definierten Filtern zum erweitern.

Hum Plugin

Hum generiert schöne, semantische Short-URLs für WordPress Posts und Pages. Das Plugin ist ursprünglich auch von Will Norris, integriert sich in die WordPress Core-Funktionen und kommt auch komplett ohne Settings aus.

Hum basiert auf Whistle

Whistle is an open source, algorithmically reversible, personal URL shortener.

http://tantek.pbworks.com/w/page/21743973/Whistle

…und New Base 60

A base 60 numbering system using only ASCII numbers and letters.
or
a side effect of building a personal URL shortener

http://tantek.pbworks.com/w/page/19402946/NewBase60

…zwei Specs von Tantek Çelik.

Open Search Document Plugin

Die OpenSearch Spezifikation bietet Möglichkeiten um die lokale Blog-Suche für Browser oder Suchmaschinen zugänglich zu machen.

OpenSearch is a collection of simple formats for the sharing of search results.

https://github.com/dewitt/opensearch

Es gibt Integrationen für alle bekannten Browser wie z.B. Chrome, Safari, Firefox und Microsoft Edge.

Das Plugin wurde ursprünglich von johnnoone Entwickelt, es stellt eine XML Beschreibung der Suche und einen Endpunkt für Such-Vorschläge basierend auf Tags bereit.

Das wars auch schon 🙂

Mehr?

Natürlich gibt es noch mehr, das würde aber den Rahmen sprengen. Ich nutze WordPress gerne um neue Specs und Ideen auszuprobieren und daraus entstehen meist kleine Plugins, die es oft nicht wert sind, auf WordPress.org veröffentlichen zu werden.

Ihr könnt aber gerne:

Ihr könnt fast alle Plugins auch bequem über Composer installieren und updaten.

Ich freue mich IMMER über Hilfe, also feel free to contribute!

Ich hatte es im Januar 2019 schon einmal erwähnt: Ich arbeite gerade an einem ActivityPub Plugin für WordPress. Da ich das ganze in meiner Freizeit mache, hat das auch seine Zeit gedauert, aber gerade ist es in einem ganz stabilen Zustand… immerhin funktioniert es mit den meisten bekannten Plattformen:

Es gibt zwar immer noch ’ne Menge zu tun, aber immerhin kann man:

  • dem eigenen Blog-Profil (Author-URL) auf Mastodon & Co. folgen
  • Blog-Posts werden mit den Followern geteilt
  • Kommentare auf Mastodon & Co. landen wieder im Blog

Ihr könnt das Plugin über WordPress.org oder GitHub installieren.

Wer Ideen hat oder Hilfe braucht, findet mich (immer mal wieder) im SocialHub von ActivitPub.rocks.

Ich bin gespannt auf euer Feedback!