Archiv der Kategorie: Social Web

FrOSCon 2019: Die Rückeroberung des Social Web (Video)

Ich bin war dieses Jahr auf der FrOSCon mit einem Talk über Solid präsent:

Die Rückeroberung des Social Web

Eine Einführung in Solid

Video auf media.ccc.de öffnen

Folien des Vortrags: Web | PDF

Solid tritt an die Misstände im Social Web zu beheben. Dieser Vortrag erklärt die grundlegenden Konzepte und Technologien hinter Solid. Was macht Solid einzigartig? Welche Probleme löst es? Wie kann man mitwirken?

Letztes Jahr ging Web-Erfinder Tim Berners-Lee mit einem neuen, spannenden Projekt an eine größere Öffentlichkeit. Social Linked Data – kurz Solid – soll die Misstände des zentralisierten Social Webs beheben indem es das dezentrale WWW um soziale Funktionen erweitert und die Nutzer:innen in den Mittelpunkt stellt.

In diesem Vortrag erkläre ich die grundlegenden Konzepte und Technologien hinter Solid, erkläre warum dieser Ansatz so revolutionär ist und was Solid von verteilten Anwendungen wie Diaspora und Mastodon unterscheidet.

Ich werde zeigen, was mit Solid bereits heute möglich ist, was uns in Zukunft erwartet und wie jede:r diese Zukunft mitgestalten kann.

Vollständiges FrOSCon Programm

Solid – Social Linked Data

Die Idee eines Social Webs, losgelöst von zentralen Plattformen, rückt mit dem Solid-Projekt in greifbare Nähe.

Was ist Solid? – Solid steht für Social Linked Data. Das Projekt basiert auf Linked Data und vereint zahlreiche W3C-Standards aus diesem Umfeld, um das World Wide Web als Plattform für soziale Interaktionen zu nutzen.

Damit unterscheidet es sich wesentlich von verteilten sozialen Netzwerken wie Diaspora, Mastodon und Co., die im Grunde nur verteilte Daten-Silos sind. Mit Solid kann jede Website, jede Webanwendung, Teil des neuen Social Webs werden.

Eine Grundidee von Solid besteht in der Trennung von Anwendungen und Datenspeichern. Die Daten können an beliebigen Orten im Web gespeichert werden. Als Benutzer:in habe ich freie Wahl, wo ich meine Daten speichern will und wem ich Zugriff darauf gebe. Ebenso kann ich wählen, mit welchen Anwendungen ich die Daten verwalten möchte.

Dieses Prinzip möchte ich an einem konkreten Beispiel verdeutlichen:

Unter https://angelo.veltens.org/ läuft ein Solid-kompatibler Server. Aus dem dokumentenbasierten Web kennen wir Server wie nginx oder Apache httpd. Ein Solid-Server ist diesen sehr ähnlich, stellt aber darüber hinaus Funktionen für das Social Web bereit. Es ist auch denkbar, dass bestehende Webserver um Solid-Funktionen erweitert werden.

Der Server stellt mir eine Identität in Form einer WebID zur Verfügung und dient als „Personal Online Datastore“ (POD) zum Speichern von Daten. Unter meiner WebID https://angelo.veltens.org/profile/card#me sind einige Basis-Informationen zu meiner Person abrufbar. Alle weiteren Daten, die ich im POD, oder an anderen Orten im Web gespeichert habe, sind von dort aus verlinkt. Unter https://angelo.veltens.org/public/bookmarks liegen zum Beispiel einige meiner öffentlichen „Social Bookmarks“.

Der Solid-Server stellt auch ein rudimentäres Web-Interface zum Anzeigen und Bearbeiten der Daten bereit. Das spannende an Solid ist jedoch, dass ich beliebige Solid-Apps im Web verwenden kann. Zum Anlegen von Bookmarks zum Beispiel markbook.org. Ich habe markbook.org dazu schreibenden Zugriff auf https://angelo.veltens.org/public/bookmarks erteilt. Wenn ich mich mit meiner WebID einlogge, kann die App meine Lesezeichen verwalten.

Das gute an Solid ist, dass diese Lesezeichen eben nicht auf dem Server von markbook.org gespeichert werden, sondern in meinem POD. Wenn ich mit der Anwendung nicht mehr zufrieden bin, kann ich zu einer anderen Bookmark-App wechseln und die Daten einfach dort verwalten. Ebenso kann ich unterschiedliche Daten in unterschiedlichen PODs speichern und so im Web verteilen. Ich muss dabei auch nicht unbedingt einen eigenen Server betreiben, sondern kann auf Provider, wie z.B. inrupt.net zurück greifen. Dank Linked Data können alle Daten untereinander verknüpft und beliebigen Web-Apps zugänglich gemacht werden.

Dies geht soweit, dass jede Nutzer:in volle Kontrolle über die eigenen Daten hat. Während Alice einen Beitrag unter https://alice.example/articles/hello-world veröffentlicht, schreibt Bob einen Kommentar dazu unter https://bob.example/comments/my-two-cents und Trudy äußert ihre Zustimmung zu Bobs kommentar mit einem „Like“ unter https://trudy.example/likes/2019/02#123. Durch die Verlinkung der Daten kann alles aggregiert direkt beim Artikel angezeigt werden, liegt in Wahrheit jedoch in den PODs der jeweiligen User.

Dies ist soweit die Grundidee hinter Solid, ohne zu sehr auf die technischen Details einzugehen. Über einzelne davon werden sicher noch Blogposts folgen.

Wenn ich eurer Interesse für Solid geweckt habe, hier einige Follow-Up-Resourcen:

WebID: Das Web als Social Network

In Ausgabe 03/2013 von „java aktuell“ gehe ich auf die Grundlagen von WebID ein und erkläre, wie daraus ein Social Web ohne digitale Mauern entsteht:

Mit Linked Data lassen sich Daten im Web verbinden. Weitet man das Konzept auf Personen und deren Interaktion aus, entsteht ein „Social Web of Data“. Anstelle Dutzender Accounts bei unzähligen Diensten tritt eine globale Identität, die WebID. Sie dient Angeboten im WWW als Quelle von Profil-Informationen und zur Authentifizierung. Auch als Single Sign-on im Unternehmens-Intranet kann WebID eine Option sein.

Der Artikel ist nun auch als PDF verfügbar.

Der in Augabe 04/2013 erscheinende Praxisartikel wird zeigen, wie man WebID in eigenen Anwendungen nutzen kann.

[important]Die bisher von mir veröffentlichen Zeitschriftenartikel findet ihr hier.[/important]

Einreichung zur SIGINT 2013: Dezentrales Social Web mit Linked Data und WebID

Ich habe folgenden Talk zur SIGINT 2013 eingereicht. Die Entscheidung, ob er genommen wird, fällt bis spätestens 5. Juni. Update: Die Einreichung wurde angenommen, der Talk findet statt.

Let’s tear down these walls – „Mit Links“ die Mauern Sozialer Netzwerke überwinden.

Seit jeher verlinkt das Web seine Inhalte, ganz gleich auf welchen Servern sie liegen. Interessanterweise scheint dieses Prinzip noch nicht im Social Web angekommen zu sein. Statt uns mit unseren Freunden, und Inhalten die wir mögen, zu verlinken, pflegen wir unzählige Accounts. Nicht selten stehen wir vor technischen Mauern, die unsere die Vernetzung verhindern. Diese Mauern können wir wahrsten Sinne „mit Links“ überwinden.

Das Web 1.0 – ein dunkler Ort, an dem man niemandem followen, nichts liken und nichts sharen kann. Niemand möchte mehr dort sein. Daher bietet jeder Dienst, der etwas auf sich hält ein „Connect with Facebook“, ein „Login with Twitter“ und ein „Share at Google+“ an.

Doch statt als ein soziales Wesen im Web zu agieren, sind wir nur die Summe unserer Accounts. Ein neuer Dienst, ein neuer Account. Zwar schnell erstellt per Facebook-Connect, doch inkompatibel zum Rest des Webs.

Die Mauern des Web 2.0 sind künstlich. Wir können und müssen sie einreißen. Jetzt.

Das Web war nie eine Anhäufung inkompatibler Dienste, sondern das genaue Gegenteil: Durch Hyperlinks können Webseiten miteinander verknüpft werden, ganz gleich auf welchen Servern sie liegen.

Dieses Prinzip der Links können wir auf Daten und Personen anwenden, um uns mit einer Identität global zu vernetzen. Dazu werden die Prinzipien von Linked Data und das WebID-Protokoll vorgestellt. Statt Dienste mit sozialen Funktionen im Web, wird das Web selbst zu einem gigantischen Social Network.

Der Vortrag erklärt:

  • die Grundlagen von Linked Data, d.h. wie über URIs Dinge und Personen global identifiziert und verlinkt werden können
  • wie man mit Hilfe der Friend-of-a-Friend-Ontologie (FOAF) ein maschinenlesbares Social-Web-Profil erzeugt und dezentral hostet
  • wie das WebID-Protokoll ein Ein-Klick-Login ohne zentralen Authentifizierungsdienst ermöglicht, um mit einem FOAF-Profil im Web zu agieren.

picserv unterstützt WebID-Login

Meine in Entwicklung befindliche Bilder-Plattform picserv unterstützt nun auch ein WebID-Login.

WebID ist ein aufstrebender Standard, der uns losgelöst von zentralen Netzwerken wie Facebook und Google+ eine Identität im Social Web geben kann. WebID ist gleichzeitig ein Login-Verfahren und euer Profil im Social Web. Ein solches Profil könnt ihr z.B. bei my-profile.eu mit wenigen Klicks einrichten, ihr seid aber nicht von einzelnen Anbietern abhängig. Wer mag kann auch selbst ein Profil hosten.

Wenn ihr euch mit eurer WebID bei picserv einloggt, könnt ihr dort Bilder hochladen und kommentieren. Euer Name und eurer Bild wird aus eurem Profil ausgelesen und muss nicht nochmals bei picserv hinterlegt werden. Das ist das Schöne im dezentralen Social Web: Eure Identität und die Dienste, die ihr mit dieser Identität nutzt können auf völlig unterschiedlichen Servern liegen. Statt monolithischer Social-Network-Plattformen wird das Web zum Social Network. picserv leistet mit dem WebID-Login einen Beitrag zu dieser Entwicklung.

[notice]Bitte beachtet aber, dass sich picserv noch stark in Entwicklung befindet. Verlasst euch nicht darauf, dass der Dienst oder eure Bilder dauerhaft verfügbar sind![/notice]

[important]Ihr habt Fragen zu WebID oder Probleme beim Einrichten eines Profils? Ich helfe gerne weiter. Auch Anregungen zu picserv nehme ich gerne entgegen.[/important]

WebID-Authentifizierung mit Node.js

Ein Leser des letzten Artikels hatte Schwierigkeiten, die Signatur von foafssl.org mit Hilfe von Node.js zu überprüfen. Es war etwas tricky, aber ich habe es inzwischen hinbekommen und möchte die Lösung niemandem vorenthalten:

Grundsätzlich funktioniert die Überprüfung der Signatur bei Node.js mit verifier.verify(object, signature, [signature_format]). Als 1. Parameter gebt ihr den (PEM encodierten) Public Key an, als zweites die Signatur und als letztes das Format ‚base64‘.

Allerdings ist die übermittelte Signatur nicht Base64, sondern Base64-URL encodiert! Ihr müsst also in der Signatur zunächst alle ‚_‘ durch ‚/‘ und alle ‚-‚ durch ‚+‘ ersetzen. Bevor ihr die Signatur an die verify-Function übergebt, müsst ihr aber außerdem noch ‚==‘ hinten anfügen. Die korrekte Signatur ergibt sich also wie folgt:

var signature = signatureBase64Url.replace(/\_/g, '/').replace(/-/g, '+') + '=='

Ein funktionierendes, online ausführbares Code-Beispiel habe ich auf der Plattform jsapp.us hinterlegt.