Skip to content

SocialSpecing & HyperTexting

Vor ein paar Wochen hat mich @voxpelli in einer Bluesky-Diskussion über SocialSpec erwähnt. Caleb Hailey (@calebhailey.com), der Initiator der Spec, hat dort nach Kontakten zu Automattic gesucht. Für Micro.blog gab es schon ein Plugin, für WordPress aber noch nicht. Pelle kenne ich schon eine ganze Weile aus dem IndieWeb-Umfeld und er meinte, dafür sei ich...

Matthias Pfefferle
Nov 7, 20265 min read

or ein paar Wochen hat mich @voxpelli in einer Bluesky-Diskussion über SocialSpec erwähnt. Caleb Hailey (@calebhailey.com), der Initiator der Spec, hat dort nach Kontakten zu Automattic gesucht. Für Micro.blog gab es schon ein Plugin, für WordPress aber noch nicht. Pelle kenne ich schon eine ganze Weile aus dem IndieWeb-Umfeld und er meinte, dafür sei ich wohl der richtige Ansprechpartner. Also hab ich ein bisschen mitgelesen und mir SocialSpec etwas genauer angeschaut.

SocialSpec

SocialSpec macht aus einer Domain eine Art Social-Profil. Neben dem Feed veröffentlicht eine Seite drei einfache Dateien:

  • AboutSpec unter /.well-known/about.md, die About-Seite als Markdown
  • ContactSpec unter /.well-known/contact.vcf, eine Visitenkarte als vCard
  • FollowSpec unter /.well-known/following.opml, die Blogroll als OPML

„single purpose, single file, and single request / No HTML scraping required.“

Im IndieWeb-Chat wurde SocialSpec Mitte Oktober schon ausführlich diskutiert, und auch Herr Montag ordnet SocialSpec in seinem Post ähnlich ein. Kritisiert wurden vor allem die Side-Files.

The sidefile-antipattern is a violation of the DRY principle by the use of secondary files (typically in some one-off XML format) to provide information that is a duplicate of information available in primary files on a website (in HTML), and is an antipattern due to typical DRY violation problems such as out-of-date, missing, corrupted, or outright false data.

indieweb.org/side_file

Caleb hat das aus Sicht der App-Entwicklung erklärt. Nicht jeder kann sein HTML anpassen, eine OPML-Datei oder eine vCard kann aber fast jedes Tool exportieren. Und für eine App ist eine Datei an einer festen Adresse einfacher und zuverlässiger als HTML zu parsen.

Das deckt sich mit meinen Erfahrungen mit WordPress. Ich nutze Microformats seit 20 Jahren, aber als Plug&Play-Lösung in einem CMS funktionieren sie einfach nicht gut. Darüber diskutieren wir im #indieweb-wordpress Channel schon ewig. HTML können die meisten WordPress-User nicht selbst bearbeiten, die Liste an Themes mit Microformats2-Support ist leider überschaubar und über ein Plugin geht es einfach nicht. Es bleiben eigentlich nur Blöcke, über die man Inhalte semantisch auszeichnen kann, so wie bei IndieBlocks… und ausgerechnet der Block-Editor ist in der IndieWeb-Community nicht besonders beliebt, aber das ist ein anderes Thema und einen eigenen Post wert 😉

Ich kann Calebs Punkt also durchaus nachvollziehen.

Die WordPress-Plugins

Wenn mich Pelle schon empfiehlt, muss ich dem natürlich auch gerecht werden 😊

Am meisten Sinn gemacht und direkt einen Mehrwert geboten hat FollowSpec im Blockroll-Plugin, also hab ich dort /.well-known/following.opml eingebaut. Die Datei ist eine einfache Liste mit den Feeds aller gelisteten Blogrolls. Links ohne Feed lasse ich weg und Feeds, die in mehreren Blogrolls stehen, kommen nur einmal rein.

Blockroll kümmert sich aber nur um die following.opml, für alle drei Dateien hab ich ein eigenes Plugin geschrieben. Ist das SocialSpec-Plugin aktiv, liefert Blockroll keine eigene Datei mehr aus, sondern hängt die Feeds der Blogrolls an die following.opml von SocialSpec mit dran.

Beim SocialSpec-Plugin verwende ich, soweit möglich, die Daten, die schon in WordPress stecken. Man muss also nichts neu schreiben. In den Einstellungen wählt man nur aus, wer die Seite repräsentiert (ein User für ein persönliches Blog oder „niemand“ für ein Magazin oder eine Firma) und, wenn man will, eine andere About-Seite.

Für die about.md nehme ich standardmäßig die /about Slashpage und wandle das HTML in Markdown um. Hat man in den Einstellungen eine andere Seite ausgewählt, nehme ich die. Gibt es gar keine About-Seite, nehme ich als Fallback die biografischen Angaben aus dem Profil.

Die About-Seite als Markdown passt übrigens gut zu Dave Winers Idee vom „Web of Markdown“:

How about a Markdown web browser. No CSS, no frameworks, just Markdown files.

Dave Winer – The web of Markdown

Für die contact.vcf nehme ich standardmäßig das Profil des ausgewählten Users, mit Name, Website, biografischen Angaben und Profilbild. Ist kein User ausgewählt, nehme ich als Fallback Titel, Untertitel und Icon der Seite. Die E-Mail-Adresse veröffentliche ich nicht, man kann sie aber über einen Filter ergänzen.

WordPress hat keine Liste mit Blogs, denen man folgt. Für die OPML können andere Plugins wie Blockroll über einen Filter Feeds ergänzen. Außerdem nehme ich die Links aus dem alten Link-Manager, wenn sie einen Feed haben. Und wie bei den anderen XML-Formaten hab ich für die OPML eine Ansicht im Browser gebaut, mit einem „Subscribe“-Button für jeden Feed.

Alle drei Dateien und die normalen Feeds von WordPress schicken außerdem CORS-Header mit, damit Apps sie direkt im Browser laden können.

Auf notiz.blog gibt es meine About-Seite schon als about.md, meine Kontaktdaten als contact.vcf und die Blogs, denen ich folge, als following.opml.

HyperTexting

Eingebaut hab ich SocialSpec vor allem, weil es relativ einfach war. Den Sinn dahinter hab ich aber erst durch HyperTexting wirklich gesehen.

Über HyperTexting bin ich eher zufällig gestolpert. Caleb hat mir in einem kurzen Video gezeigt, wie meine SocialSpec-Implementierung auf notiz.blog in seiner App aussieht.

notiz.blog in HyperTexting (Video von Caleb)

(About-Seite und Kontaktdaten zeigt die App bisher allerdings nur in der TestFlight-Version an.)

Ich mag vor allem, dass sich die App wie ein Social Network anfühlt und trotzdem weitestgehend mit Web-2.0-Technologien wie Blogrolls und RSS funktioniert.

Im Prinzip ist HyperTexting ein Feed-Reader mit einer chronologischen Timeline, ohne Algorithmus und ohne Account. Jede Seite bekommt ein Profil mit Posts, Links, About-Seite, Kontaktdaten und wem sie folgt, und zukünftig soll man auch direkt auf die eigene Seite posten können, wohl auch über Micropub. Damit folgt HyperTexting dem gleichen Muster wie ein Social Reader aus dem IndieWeb. Man liest alles in einer Timeline und antwortet direkt von dort, die eigenen Posts landen aber auf der eigenen Seite und nicht auf einer Plattform. Unter der Haube steckt ein Static-Site-Generator, den es auch als CLI gibt.

sodir.org

Über den Post von Maurice bin ich noch auf sodir.org gestoßen. Das ist eine Art Browser für SocialSpec-Profile. Man gibt eine Domain ein und sieht die letzten Posts, wem die Seite folgt, die About-Seite und die Kontaktdaten. Die Daten kommen direkt von der Seite, ohne Account und ohne Plattform. Maurice überlegt übrigens gerade, wie er SocialSpec in Kirby einbaut.

Ich bin gespannt!

Did you enjoy this article?

Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.

Across the AtmosphereDiscussions