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/

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

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

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 hab WhatsApp gelöscht!

Facebook ist mir ja schon länger ein Dorn im Auge und vor ein paar Wochen hat Tantek Çelik im IndieWeb Chat folgendes vorgeschlagen:

Just suggested „Blocktober“ for October as a CTA for The Social Dilemma, as in, make your October the month you Blocktober social media

Perfekte Gelegenheit!

Ich hab schon vor knapp zwei Jahren meinen Facebook und Instagram Account gelöscht aber WhatsApp ist mir bisher wirklich schwer gefallen.

Die Entwicklung (Rechtsruck, Alternative Fakten, Verschwörungstheorien) der letzten Jahre hat das geändert. Facebook ist sicherlich nicht die Ursache dieser Entwicklung, aber ist ein wesentlicher Verstärker!

Mit seinen Algorithmen und Echo-Chambers, mit seinen Regeln und seinem eigenem kleinen Ökosystem sorgt Facebook für eine Radikalisierung seiner Nutzer, es diskriminiert, es experimentiert mit der Psyche, es duldet Aufrufe zum Mord, es verkauft Drogen, es manipuliert und es überwacht.

Warum fällt es uns trotz dieser Überschriften so schwer Facebook, Instagram oder WhatsApp zu löschen?

Tim Kendall, der ehemalige „Director of Monetization“ von Facebook schreibt folgendes über seinen ehemaligen Arbeitgeber:

We took a page from Big Tobacco’s playbook, working to make our offering addictive at the outset. The social media services that I and others have built over the past 15 years have served to tear people apart with alarming speed and intensity. At the very least, we have eroded our collective understanding — at worst, I fear we are pushing ourselves to the brink of a civil war.

businessinsider.com

Facebook macht süchtig! Pubertierende definieren sich über ihre Instagram Profile, ihre großen Geschwister haben nahezu ihr ganzes Leben auf Facebook veröffentlicht und ihre Eltern planen die Elternabende über WhatsApp. Egal welches Alter, ohne Facebook & Co. erfährt man Ausgrenzung.

Da ich so langsam in die letzte Kategorie rutsche, war es für mich besonders schwer WhatsApp zu ersetzen. Einzelne Kontakte waren einfach zu überzeugen auf eine andere App zu wechseln, aber für viele WhatsApp Gruppen habe ich bisher keine Alternative. Ein Freund meinte, dass ich mit meiner Aktion andere indirekt zwingen würde, mich auf alternativen Wegen zu kontaktieren… Perfekt! Vielleicht schaffe ich es ja sogar, dass sie das Medium komplett wechseln!

Mit WhatsApp lösche ich auf alle Fälle meine letzte Facebook App! …auch wenn das Facebook nur wenig interessieren wird!

Noch ein Grund mehr!

Ich war, zusammen mit Sebastian Lasse, zu Gast beim Working Draft und wir haben mit Peter Kröner ein wenig über das „Open, Decentralized, Federated und Indie„-Web gesprochen.

Download MP3 | Apple Podcast | Spotify

Die Folge ist ein schöner Rundumschlag von ActivityPub bis Zot (naja, Zot hatten wir nicht wirklich angesprochen, aber es passt einfach so schön 😉 ) geworden:

Beginnend mit einem Versuch, die Begriffe Open, Decentralized, Federated, Indie etc. zu definieren steigen wir, wie die Nerds die wir sind, recht bald in die technischen Untiefen herab. Neben Protkollen wie ATOM, RSS und ActivityPub sind auch die solche Protokolle nutzenden Software wie Mastodon, Diaspora, oStatus, Identica, Status.net, Tent.io, Friendica ein Thema. Dezentral betriebene Software-Instanzen mit konpatiblen Protokollen bilden das Fediverse, dessen technische Inkompatibilitäten (u.A. betreffend Peer Tube und WebFinger, registerProtocolHandler) ebenso wie nichttechnische Aspekte (unter anderem Monetarisierung, Gouvernance, Nazis, Fake News (siehe Eunomia), End-User-Features wie den universellen Follow-Button und Förderungsmöglichkeiten) durchgekaut werden. Gegen Ende legen wir den Fokus auf das IndieWeb (komplett mit IndieWebCamps und Homebrew Website Clubs), Self-Hosting und wagen Rückgriffe auf das Web 2.0 mit Bestandteilen wie Flickr, Ping- und Trackbacks (in neu und cool: Webmention) und die von uns erst kürzlich abfällig betrachteten Microformats. Zuletzt darf der Verweis auf die mehrfacht erwähnte Offizielle ActivityPub Konferenz 2020 nicht fehlen – die Anmeldungs-Phase läuft! Ceterum censeo faciem liber esse delendam.

(Ein paar Links in den Shownotes von Working Draft wurden von mir nachträglich geändert)

Meine letzten beiden Blogposts wurden glaube ich etwas falsch verstanden, deshalb hier eine kleine Richtigstellung.

Ich hatte mich sehr gefreut (als ich fälschlicherweise dachte hoffte), dass WordPress vielleicht Matrix kompatibel wird und ich hatte mich etwas geärgert, als sich dann herausstellte, dass es nie darum ging WordPress in die Matrix zu bringen.

Frank hat mir dann auf Twitter geschrieben, dass es ja auch andere Wege gibt um ans gleiche Ziel zu kommen.

Ich ne, vielleicht per Trac in den core bringen.

…und Stefan hat es dann in den Kommentaren noch etwas konkretisiert.

Genau! WordPress ist OpenSource. Was hindert uns dem Wunsch zur Vaterschaft zu verhelfen?!

Macht Sinn! WordPress ist OpenSource Software und hat eine ziemlich umfassende Plugin API…

Warum also nicht einfach selber machen?

…und genau das ist die entscheidende Frage!

Mir ging es nie darum, dass speziell Matrix in WordPress integriert wird und ich war auch nie wirklich traurig, dass es nur ein Missverständnis war. Ich bin nicht mal ein großer Fan von Matrix und es gibt eine ganze Reihe an Protokollen die ich viel liebe integriert sehen würde.

Ich hatte statt dessen gehofft, dass sich eine Firma wie Automattic für das Thema dezentrale Netze, Fediverse, IndieWeb, oder wie auch immer man es nennen will, interessieren könnte und sogar Geld in die Hand nehmen würde um WordPress zu einem Teil dieser Bewegung zu machen.

„Selber machen“ probiere ich jetzt seit DataPortability.org (also seit ungefähr 2007/2008) mit nur mäßigem Erfolg. Für ein Side-Project ist das Thema einfach zu groß und investieren will leider auch niemand so wirklich.

Naja… vielleicht zieht ja irgendwann mein geheimer Masterplan 😉

Ich hab was Dummes gemacht!

Ich hab mir ein Plugin installiert um fehlerhafte und verwaisten Links auf meinem Blog zu finden und das Ergebnis ist echt frustrierend! Von 5.000 Links sind über 1.000 nicht mehr erreichbar und täglich kommen neue dazu.

Noch schlimmer: Es handelt sich fast ausschließlich um private Webseiten, Blogs und OpenWeb Projekte/Initiativen.

Willkommen im „open, portable, interoperable, social, synaptic, semantic, structured, distributed, (re-)decentralized, independent, microformatted and federated social web“ 🙁 .

Ein Bild von Matthias Pfefferle vom Humans of WordPress Interview

Martin Wolfert hat mich für sein Projekt „Humans of WordPressinterviewed.

Grundsätzlich möchte ich mit Humans of WordPress Menschen aus der WordPress-Community, aber auch dem erweiterten WordPress-Ecosystem mit Hilfe von ästhetischen Bildern und interessanten Interviewtexten vorstellen.

Wir sprechen über meine „WordPress-Story“ , über notiz.Blog, über dezentrale Netzwerke und das IndieWeb, über Gutenberg, Theme Entwicklung und über die Verantwortung der WordPress Community auch über die reine Software-Entwicklung hinaus.

Zum Interview.

Publish (on your) Own Site, Syndicate Elsewhere kurz POSSE ist ein zentraler Building Block des IndieWeb.

POSSE is an abbreviation for Publish (on your) Own Site, Syndicate Elsewhere, a content publishing model that starts with posting content on your own domain first, then syndicating out copies to 3rd party services with permashortlinks back to the original on your site.

https://indieweb.org/POSSE

Die Idee: Alles (Texte, Bilder, Podcasts, Videos, …) zuerst auf der eigenen Seite veröffentlichen und dann „Kopien“ über die sozielen Netzwerke teilen.

Vor ungefär 6 Jahren schrieb der hackr folgendes über POSSE:

das indieweb differenziert nicht in ‚text‘ der tatsächlich indiewertig ist und text, der im driveby entsteht und jeweils einer ganz konkreten logik entspricht. (das sozial dysfunktionale verhalten wäre, dass syndizierer auf den jeweiligen plattformen eher als spammer / bzw. eben genau als lästige syndizierer wahrgenommen werden, die die jeweilige plattform weder verstehen, noch die spezifität berücksichtigen, noch sich darum kümmern und nur gwm ‚melken‘ wollen)

hackr

Zusammengefasst: Die syndizierten Posts werden durch POSSE aus dem Kontext gerissen und könn(t)en dadurch in den entsprechenden sozialen Netzwerken nicht richtig eingeordnet werden.

Damals habe ich noch stark dagegen argumentiert:

Es geht eben nicht darum ein(en) Text/Bild/Video in so viele Netzwerke wie möglich zu streuen, sondern genau umgekehrt… Man schreibt den Text den man beispielsweise sonst explizit auf Twitter geschrieben hätte eben nicht auf Twitter sondern auf seiner eigenen Seite und pushed ihn danach in das Netzwerk um die Kontrolle über seinen und eine Kopie von seinem Text zu behalten.

ich

Es geht eben nicht um das syndizieren an sich, sondern um das „twittern/facebooken/… über die eigene Seite“.

guter punkt, nur stelle ich gwm. das vorhandensein eines tweets ausserhalb von twitter selbst in frage.

hackr

Durch Zufall hab ich mich vor ein paar Wochen an die Diskussion erinnert…

Es fehlt letztendlich nicht der Kontext auf Twitter & Co. sondern auf der „eigenen“ Webseite. Immer mehr Blogger in meinem direkten Umfeld POSSEen, aber nur die Wenigsten trennen diese Posts von ihren klassischen Artikeln. Das heißt in meinem Feed-Reader tauchen immer mehr zusammenhanglose Kurznachrichten, teilweise direkte Antworten auf Tweets oder sogar Issues für GitHub Projekte auf.

Im Prinzip ist es egal, wie man es dreht… durch das syndizieren geht der Kontext verloren und der hackr hatte damals doch recht 😉

Zusammen mit dem „microbloggen über die eigene Webseite“ wird POSSE zu einem echten Problem in meinem Feed-Reader 🙁