rdf pub logo

rdf-pub - generischer Activity-Pub Server

Einleitung

Sorry guys, there is currently no english version !

Fakten

rdf-pub …​

  • …​ verknüpft verschiedenste Inhalte (Veranstaltung, Ort (POI), Artikel, Notiz, Audio, Video, Bild, …​) miteinander und dient als Schnittstelle zum Ökosystem sozialer Plattformen (Fediverse).

  • …​ ermöglicht Anwendungsentwicklern per "Activity-Pub - Client to Server Interactions" (C2S) ihre Anwendungen mit dem Fediverse zu verknüpfen.

  • …​ spricht die Gruppe von Menschen an, die Daten öffentlich teilen. Es soll kein Messanger sein, dass kann https://matrix.org/ besser.

  • …​ schafft ein Netz von durchsuchbaren, kategorisierbaren, Maschinen-lesbaren, Maschinen-interpretierbaren und somit auffindbaren Inhalten.

  • …​ ist eine Datenbank für Inhalte aller Art (RDF)

Zielgruppen

Anwendungsentwickler

rdf-pub soll in erster Linie Anwendungsentwickler ansprechen, die Anwendungen fürs Fediverse entwickeln wollen oder bestehende Anwendungen mit dem Fediverse verknüpfen wollen.

Activity-Pub Community (W3C Social Web Incubator Community Group)

Die Client to Server Interactions haben noch viel Potenzial. rdf-pub wird hoffentlich dabei helfen Lücken der C2S Spezifikation zu füllen und ggf. eine Referenzimplementierung sein. Siehe auch nextgen-activitypub-social-api

Forschende

rdf-pub soll aber auch forschende ansprechen, die mit dem entstehenden Netz von linked-open-data ein "Neues" Internet schaffen. Warum "Neues" in Anführungszeichen? Da Tim Berners-Lee als er das Internet entwickelt hatte nicht an das Internet wie es heute ist gedacht hat, sondern eher an das Internet, das hoffentlich bald entsteht. Siehe auch Social Linked Data.

  • SoLiD hat als Schwerpunkt die wirkliche Hoheit über die eigenen Daten und damit einer besseren Privatsphäre.

  • rdf-pub hat als Schwerpunkt ein Netz von sozialen, öffentlichen* Inhalten.

(*) Was nicht bedeutet, dass in rdf-pub die Privatsphäre keine Rolle spielt. Jeder Nutzer hat in rdf-pub seine eigene Datenbank, die getrennt ist von den öffentlichen Daten.

Unternehmen

Nicht zuletzt kann rdf-pub auch einen großen Mehrwert für "datenlastige" Unternehmen bieten. Ich behaupte, dass alle Unternehmen ein Problem mit Daten und Datenmodellen haben. Diese Probleme sind jedoch in erster Linie nicht mit Software zu lösen! Es braucht ein Unternehmensdatenmodell. Leider sind die Fachbereiche oft nicht in der Lage in Datenmodellen zu denken, daher erledigen das die Entwickler der vielen Anwendungen im Unternehmen. Dies führt zu verteilten, redundanten Daten. Inwieweit rdf-pub irgendwann für Unternehmen interessant werden kann ist noch offen und auch derzeit keineswegs der Schwerpunkt. Falls Sie mit mir über ihr Unternehmensdatenmodell sprechen wollen, kontaktieren Sie mich.

Lese Anleitung

Das Thema Fediverse, Activity-Pub und daher auch rdf-pub ist recht komplex und anfänglich schwer zu verstehen. Ich versuche in dieser Dokumentation verschiedene Zielgruppen anzusprechen, bitte wähle selbst:

Ich bin Anfänger und weniger an der Technik interessiert

  • Du solltest ein Verständnis des Fediverse haben, sonst kannst Du auch rdf-pub nicht verstehen.

  • Schau Dir bitte auch die Informationen unter Activity-Pub an. Das wird Dir helfen.

  • Nachdem Du obiges verstanden hast, kannst Du Dich an die Dokumentation Grundproblem machen.

  • Danach lese weiter bei Anfänger.

Ich bin Anfänger und möchte alles verstehen

  • Super, das freut mich. Du hast evtl. einen längeren Weg vor Dir.

  • Die Community ist aber offen und unterstützt Dich.

  • Schau Dir alles unter Grundlagen an …​

  • Nachdem Du obiges verstanden hast, kannst Du Dich an die Dokumentation Grundproblem machen.

  • …​ und wage Dich dann an die Dokumentation für Fortgeschrittene.

'Fediverse', 'Activity-Pub', 'Linked-Data', 'RDF', …​ sind für Dich keine Fremdwörter

Grundlagen

Fediverse

Das Fediverse ist ein vernetztes Ökosystem sozialer Plattformen, das auf einem offenen Protokoll namens ActivityPub basiert, mit dem Sie Ihre Inhalte, Daten, …​ zwischen den Netzwerken übertragen können.

Bitte ?!?!

Es würde den Rahmen diese Website sprengen dies im Detail zu erläutern, daher verweise ich hier auf externe Inhalte

Einen guten Einstieg ins Fediverse (englisch) findet man hier.

Activity-Pub

Activity-Pub ist ein Protokoll (aus heutiger Sicht eher DAS Protokoll), welches das Fediverse ermöglicht. Die Protokolle hinter E-Mail (Was auch ein föderierter Dienst im Internet ist) sind IMAP und SMTP. Man kann also sagen Activity-Pub ist das IMAP/SMTP des Fediverse.

activityPubDiagram

Vereinfacht kann man sich Activity-Pub wie sein E-Mail-Programm vorstellen. Alles, was man an andere sendet, landet in der eigenen outbox und alles, was an einen gesendet wird, landet in der eigenen inbox. Gesendet wird an Akteure (Person, Group, Organization, Application, Service) oder an Sammlungen (Collections). Eine Sammlung ist z.B. alle Menschen die einem folgen 'follower'. Eine spezielle Sammlung ist 'public' dies bedeutet, dass die Nachricht von allen gesehen werden kann. Wichtig zu wissen ist hier eben der Unterschied zu Plattformen wie Facebook, Instagramm & Co. dass Akteure auf allen Plattformen im Fediverse adressierbar sind und nicht nur auf der eigenen Instanz. (Also @max@rdfpub-organisation1 kann mit @maria@rdfpub-organisation2 Nachrichten austauschen, ebenso wie mit @john@mastodon.sozial)

Hier versucht arthurpizza dies zu erläutern, was ihm mehr oder weniger gelingt. Für Neulinge oder nicht Techniker könnte das etwas verwirrend sein. Das liegt an der Komplexität des Themas, es ist nicht einfach dies zu verstehen und erst gar nicht es zu erläutern. Für Nicht-Techniker ist es aber auch nicht nötig das zu verstehen. Es reicht einigermaßen zu verstehen, was das Fediverse ist und zu wissen, dass Activity-Pub das Protokoll ist, welches das Fediverse aus technischer Sicht ermöglicht.

Linked Data

Manu Sporny hat dazu ein exzellentes Erklärungsvideo englisch erstellt

"Kurz" auf Deutsch:

Es gibt die Adresse: Musterstrasse 13; 1234 Musterstadt. Dieser Adresse können wir die ID 'http://example.com/1234_musterstrasse_13' geben (Id’s sind im Linked Data Kontext immer URL’s).

Es gibt die Person 'Klaus' und die Person 'Petra', beide wohnen an der Adresse 'http://example.com/1234_musterstrasse_13'.

Auch 'Klaus' und 'Petra' bekommen eine ID 'http://example.com/Klaus' & 'http://example.com/Petra'.

Unsere Adresse hat die Eigenschaften: Straße, Hausnummer, Postleitzahl, Ort. Im Kontext von Linked Data sind Eigenschaften wiederum URL’s. Man kann das z.B. so darstellen:

Table 1. http://example.com/1234_musterstrasse_13

http://example.com/strasse

Musterstrasse

http://example.com/hausnummer

13

http://example.com/postleitzahl

1234

http://example.com/ort

Musterstadt

Und da dies schnell unübersichtlich wird, kann man für Urls sogenannte Präfixe vergeben. Wenn wir also festlegen, das der Präfix 'example' für 'http://example.com/' steht, schaut es so aus:

Table 2. example:1234_musterstrasse_13

example:strasse

Musterstrasse

example:hausnummer

13

example:postleitzahl

1234

example:ort

Musterstadt

Und für Klaus und Petra:

Table 3. example:klaus

example:name

Klaus

example:adresse

example:1234_musterstrasse_13

Table 4. example:petra

example:name

Petra

example:adresse

example:1234_musterstrasse_13

Oder als Diagramm so:

LinkedDataSample

Linked Open Data

Auszug aus Wikipedia:

Idee offener vernetzter Daten

Offene vernetzte Daten sind sämtliche Datenbestände, die im Interesse der Allgemeinheit der Gesellschaft ohne jedwede Einschränkung zur freien Nutzung, zur Weiterverbreitung und zur freien Weiterverwendung frei zugänglich gemacht und über das World Wide Web miteinander vernetzt sind. Ein Beispiel für einen Standard unter der Nutzung dieser Prinzipien ist Akoma Ntoso, auf dessen Grundlage in Deutschland offene, maschinenlesbare, vernetzte und adressierbare Rechtsetzungs- und Parlamentsdokumente veröffentlicht werden sollen.

RDF

Ok, bei RDF geht es ans Eingemachte. RDF ist die Abkürzung für 'R esource D escription F ramework' ein Standard des World Wide Web Consortium (W3C)

Wichtig zu wissen ist, dass Activity-Pub auf JSON-LD basiert und dass JSON-LD eine Repräsentation von RDF ist.

Im Moment scheinen sich zwei Fronten in der Activity-Pub-Community zu bilden:

  • Die einen verstehen RDF und schätzen ihr mächtiges Potenzial und sind PRO JSON-LD.

  • Die anderen verstehen RDF und fürchten, dass nur wenige Entwickler es verstehen und dies die Verbreitung von Activity-Pub behindert. Und sehen daher lieber den puren JSON Anteil an JSON-LD.

Eine schwierige Situation. Ich setze mich sehr für LSON-LD oder eben mehr RDF ein und möchte eine Lösung für beide Zielgruppen finden. Eine einfache Sicht auf bestimmte Typen mit JSON aber auch die Möglichkeit komplexere, generische Daten in RDF abzubilden/verarbeiten. Es bleibt spannend. rdf-pub könnte hier eine Lösung sein.

RDF hier zu erklären ist nicht sinnvoll. Ein erster Einblick kann Wikipedia geben.

Wer tiefer einsteigen möchte, kann sich Folgendes ansehen:

Was ist rdf-pub

Grundproblem

Fehlende Implementierung der 'Client to Server Interactions (C2S)'

Oft findet man Bilder wie dieses, die das Fediverse zeigen:

fediverse simple

Das zeigt aber nur eine sehr vereinfachte Sicht der Dinge. Es zeigt im Wesentlichen die Server (Mastodon, Pixelfed, Peertube,…​). In der Regel redet ein Benutzer aber nicht direkt mit dem Server, sondern mit einer Client-Anwendung, die den Server nutzt.

actor client server

Und hier sehen wir eine unzufriedenstellende Entwicklung. Die Activity-Pub-Spezifikation beschreibt zwei Teile:

  • Client to Server Interactions (C2S)

  • Server to Server Interactions (S2S)

Die Spezifikation an sich lässt viele Fragen offen, das hat Vor- und Nachteile. Im Bereich C2S allerdings sind die Lücken sehr groß, sodas sich nur wenige, bis keine an die Spezifikation gehalten haben, sondern ihre eigene API (Schnittstelle) entwickelt haben. Das bedeutet jedoch, das eine Client-Anwendung nicht generisch verwendet werden kann. Theoretisch sollte eine Client-Anwendung die C2S mit einem Activity-Pub-Server spricht für alle Activity-Pub-Server verwendbar sein. Das würde bedeuten, dass Mastodon, Pixelfed, Peertube alle mit derselben Client-Anwendung verwendbar sind.

AndStatus ist eine Client-Anwendung, die versucht hat die C2S Schnittstelle zu verwenden. Allerdings fehlt es hier im Moment an der Kommunikation und der weiter Entwicklung. Es ist dringend nötig, dass die Community hier weiter forscht und Erweiterung der Spezifikation vorschlägt.

Idealerweise würde es so aussehen:

actor client server Soll

rdf-pub möchte versuchen Client-Anwendungen auschließlich per C2S anzubinden und ggf. 'Fediverse Enhancement Proposals' (FEPs) bereitzustellen, falls die C2S API nicht ausreichend ist. Hier gibt es Interesse und Aktivitäten in der Community.

Server unterstützen 'nur' bestimmte Objekttypen

Im Wesentlichen beschränkt sich die Föderation im Fediverse auf den Austausch von 'Likes', 'Kommentaren' und evtl. noch 'Notitzen'. Mastodon z.B. behandelt schwerpunktmäßig 'Notes', versteht aber auch 'Article'. Leider werden beide irgendwie inkonsistent verarbeitet.

rdf-pub möchte generisch mit Objekttypen umgehen und alle Typen zulassen. Daher auch der Name rdf-pub. Alle RDF Objekttypen sollen akzeptiert werden. Wie sich das in der Praxis gestalten wird, wird noch spannend.

Anfänger

So, ich hoffe, Du hast jetzt einen Überblick über alles nötige bekommen und hast in etwa eine Ahnung, was im Fediverse abgeht.

Abschließende Sätze:

rdf-pub ist wie E-Mail, Du kannst an alle die irgendwo im Fediverse eine Adresse haben Nachrichten (Veranstaltung, Ort (POI), Artikel, Notiz, Audio, Video, Bild, …) senden.

Im Gegensatz zu E-Mail sendet rdf-pub aber selbstbeschreibende Daten (RDF) die von Maschinen interpretiert & verknüpft werden können und somit ein Netzwerk von Inhalten entsteht.

Und ja, das ist im Sinne von Datenschutz und Überwachung ein Problem! Dies ist es ebenso bei Facebook, Instagramm & Co. ein Problem. Handelt es sich jedoch um öffentliche Daten, dann ist genau dies der Wunsch. Ein Netz von durchsuchbaren, kategorisierbaren Inhalten.

Fortgeschrittene

rdf-pub möchte die Lücken, die unter Grundproblem beschrieben sind, füllen.

Stand Dezember 2024 hab ich leider noch nicht so viel Inhalte für Fortgeschrittene.

Die "alte" Website hat evtl. noch ein paar Informationen. Relevant für dich wird wohl die entstehende Spezifikation werden.

Diskussionen über Themen rund um rdf-pub finden in socialhub statt, oder im Fediverse. Ich versuche das HashTag #activitypub bzw. #activitypubdev zu verwenden.

Ach, ganz wichtig! Der Source Code.

About

Team

Fred Hauschel
Software Engineer
http://hauschel.de