Letzte Woche war WordCamp Europe. Mit weit über 8000 Teilnehmern war es das bisher größte online WordCamp! Bei der Größe ist es klar, dass man auch eine ganze Menge neuer und interessanter Leute trifft. Also schnell auf Twitter und allen folgen!

Ich war auf dem größten online Event, von dem wohl am meisten verbreiteten Indie/OpenSource CMS und ich habe Personen, die ich dort kennen gelernt habe, über Twitter kontaktiert!

Warum?

Warum kam ich auf die Idee, Twitter zu benutzen, anstatt ihre Blogs zu abonnieren?

Auch auf den WordCamp Badges taucht lediglich das Twitter Handle auf und es wird nirgends das eigene Blog erwähnt.

WordCamp Badges mit Twitter Handle und ohne Blog-URL

Eigentlich ist die Antwort klar… Twitter ist ein soziales Netwerk dessen Kern-Kompetenz das Folgen anderer User ist. Außerdem findet der ganze Prozess an einer Stelle statt (twitter.com) und den Twitter-Handle kann man sich zudem leicht merken. Keine komplizierte Domain… keine Feed-URL… keine E-Mail Adresse… einfach nur @username

Wie sieht das Folgen oder Befreunden bei Blogs aus? Ist es das Abonnieren des Feeds? Das heraussuchen der E-Mail Adresse über das Impressum? Das Bookmarken der Kontakt-Seite?

Es gibt leider keine einfache Alternative um einem Blog zu „folgen“.

Aber gehen wir mal davon aus, das Abonnieren des Feeds käme dem am nächsten… Wie bekomme ich die richtige Feed URL heraus? Bei WordPress ist das noch relativ einfach, da die URLs standardisiert sind, aber wie sieht es mit anderen Systemen aus?

Marcus Herrmann will dazu eine /feeds URL etablieren, ähnlich wie /about, /now oder /contact.

People create more content than ever before – but siloed away in the Facebooks, Twitters, Instagrams and Mediums of the world. RSS is considered as something that can’t be monetized in our attention economy and is therefore on its way out. Even when personal blogs offer a feed, it is not obvious anymore in the browser user interface. When I stumble over an interesting blog and want to subscribe to it, I open the dev tools of my browser (which is kind of a knee jerk reaction in my profession anyway) and search the source code for a subscribable URL.

[…]

Personal website owners – what do you think about collecting all of the feeds you are producing in one way or the other on a /feeds page?

Ich mag die Idee, aber ich glaube nicht dass sie das oben beschriebene Problem löst. Es mag sein, dass es durch eine /feeds Seite einfacher ist, den richtigen Feed zu finden, es setzt aber auch voraus, dass man weiß was ein Feed, was RSS, oder was Atom ist.

Was wir eigentlich brauchen ist aber eine Art Indie-Follow oder Indie-Subscribe Button.

Chris Aldrich spricht in seiner Antwort auf Markus‘ Blogpost ein paar wichtige Punkte an.

Worse, suppose I click over to a /feeds page, as an average person I’m still stuck with the additional burden of knowing or learning about what a feed reader is, why I’d need or want one, and then knowing what RSS is and how I might use that. I might see a one click option for Twitter or Mastodon, but then I’m a mile away from your website and unlikely to see you again in the noise of my Twitter feed which has many other lurking problems.

Chris erwähnt SubToMe als bisher einzige offene Alternative, die einem Indie-Follow Button noch am nächsten kommt.

One of the best solutions I’ve seen in the past few years is that posited by SubToMe.com  which provides a single, customizable, and universal follow button. One click and it automatically finds the feeds hidden in the page’s code and presents me with one or more options for following it in a feed reader.

Damit hat er leider recht!

Hier ein SubToMe Beispiel-Button: Follow!

Es gab in den letzten 10 Jahren diverse Ideen, die ein dezentrales „Follow“ ermöglicht hätten: XAuth, WebIntents, Custom-Schemes, WebActions und Rel-Subscribe. Leider hat sich aber keines dieser Format durchgesetzt. Die Gründe dafür reichen von einem Extrem zum anderen.

Mit WebIntents wollte man die eierlegende Wollmilchsau entwickeln:

We didn’t specifically solve a single use case well other than connecting apps. The broad verb-space meant that a lot of developers wanted to design their own actions. I believe that this diluted the message of intents, and is something that if I had researched the Android ecosystem more effectively at the time, I would have probably constrained the verb eco-system to a couple of small but well defined cases.

Mozilla dagegen, hat beim Thema RSS (in meinen Augen) etwas zu schnell klein begegeben:

Die Prüfung der Nutzungsdaten und der Anforderungen zur technischen Wartung dieser Funktionen (unter Berücksichtigung der Tatsache, dass Ihnen bereits alternative Reader für RSS/Atom-Formate zur Verfügung stehen) brachte die Erkenntnis, dass die Funktionen einen unverhältnismäßig großen Aufwand in Bezug auf Wartung und Sicherheit im Verhältnis zu ihrer Anwendung erfordern.

Auf der anderen Seite hat Mozilla schon 2010 einen Artikel über „RegisterProtocolHandler Enhancing the Federated Web“ geschrieben, in dem sie aufzeigen, wie ein dezentraler Follow-Button für das Fediverse funktionieren könnte und theoretisch auch immernoch funktioniert!

Ich verstehe bis heute nicht, warum sich web+custom://scheme nicht durchgesetzt hat… Vielleicht sollte man (ich) mal einen zweiten Anlauf für ActivityPub/Mastodon starten

indiewebcamp-logo

IndieWeb? Schon wieder so ein hippes Buzzword-Dingens wie DataPortability, Synaptic oder Federated Social Web? Naja, irgendwie schon aber irgendwie auch nicht… 😉

Seit dem ich das Internet für mich entdeckt habe hatte ich meine eigene Webseite… Von den ersten Frontpage (das hätte ich vielleicht besser verschweigen sollen) Versuchen auf Geocities mit Kostenlos-Domain-Weiterleitung (wer kennt noch kickme.to?), zum eigenen Webspace und Homesite, zu ersten PHP Erfahrungen und phpNuke, zu diversen Webseiten und Blogs und letztendlich auch zu meinem Beruf. Darum tue ich mich besonders schwer, Inhalte auf Facebook und Co. zu teilen/schreiben, wenn ich sie doch auch auf meiner eigenen Seite veröffentlichen könnte. Außerdem scheint sich meine Generation (oder vielleicht auch nur mein Freundeskreis) nicht sonderlich für Social Networks zu interessieren und man trifft sich lieber oder telefoniert.

Damit stecke ich natürlich in einer Zwickmühle… Einerseits interessiert mich Facebook nicht sonderlich, andererseits bringen Social Networks aber eine Menge Reichweite… und so ist mein Faible für DataPortability, DiSo oder dem Federated Social Web entstanden… Ich will weiterhin der Herr meiner Ideen und Texte bleiben aber schätze die Reichweite und die höhere Dialogbereitschaft von Twitter und Co. sehr.

Bisher hatten alle Bewegungen aber ein großes Problem: Sie hätten nur funktioniert wenn Google, Twitter und Facebook sich angeschlossen und ne Menge hippe „Standards“ eingebaut hätten. Das ist wohl auch der Grund weshalb man von vielen Projekten schon lange nichts mehr gehört hat. Das IndieWeb Credo spricht mir dagegen aus der Seele:

We should all own the content we’re creating, rather than just posting to third-party content silos.
Publish on your own domain, and syndicate out to silos.

Das IndieWebCamp findet in unregelmäßigen abständen statt und beschäftigt sich ausschließlich damit, wie man der Herr seiner Artikel/Tweets bleibt. Im Gegensatz zu DiSo baut die IndieWeb Idee aber nicht auf einem zentralen Framework, CMS oder Blogsystem auf, sondern motiviert jeden selbst aktiv zu werden. Im Vordergrund stehen recht allgemein gehaltene Konzepte und der Slogan eat your own dogfood… Programmiere für deine eigene Bedürfnisse und veröffentliche deinen Code, dass auch andere davon profitieren können. Ein paar Konzepte:

  • POSSE (Publish (on your) Own Site, Syndicate Elsewhere): Veröffentliche alles auf deiner eigenen Seite und verteile es dann über die verschiedenen Kanäle.
  • Comments: Veröffentliche auch Kommentare auf deiner Webseite und setze den Autor über Pingbacks oder Webmentions darüber in Kenntnis.
  • Login: Mit einer Kombination aus rel-me und OAuth (IndieAuth oder RelMeAuth) lassen sich ironischerweise fast mehr Dienste ansprechen als mit OpenID.
  • Web Actions: Ein ähnlicher (wenn auch pragmatischerer) Ansatz wie Web Intents. Share/Like-Buttons sollen sich dem Verhalten des Nutzers anpassen und ihm die Möglichkeiten anbieten die er benötigt, sei es das Teilen über Facebook oder eben über die eigene Seite.

(weitere „Building Blocks“ findet ihr im Wiki)

Ich mag die Idee schon alleine deshalb, weil sie aktuell Funktioniert und nicht von der Fertigstellung oder Einführung von diversen Protokollen abhängig ist (naja fast). So ne Art „Dezentrales Netzwerk für Arme“ 😉

Ich selbst versuche seit ein paar Wochen das NotizBlog IndieWeb tauglich zu machen und habe dazu auch ein paar Plugins auf Github veröffentlicht. Demnächst kommt aber sicherlich noch eine kleiner Anleitung in Form von einem Blogpost dazu.

Vielleicht hat ja jetzt der ein oder andere Blut geleckt und greift mir bei meinem WordPress Projekt ein wenig unter die Arme 😉

Macht euch unabhängig!

(Im Screenguide Magazin Ausgabe 17 gibt es übrigens noch eine etwas ausführlichere Beschreibung der einzelnen IndieWeb Building Blocks)

Ich habe in den letzten Monaten eine Menge über Web Intents gelesen und ich finde immer noch dass der Webmonkey die Thematik bisher am treffendsten beschrieben hat:

In practice Web Intents work a bit like mailto: links, defining an action and then passing it along to the browser, which allows the user to choose how to handle the action. The difference is that instead of opening a desktop app, Web Intents connect to web services.

Der Vergleich ist simple und ich habe mir die Frage gestellt: Wieso nicht einfach wirklich unterschiedliche Schemes für die jeweiligen Anforderungen definieren? Eine App kann beim Browser anmelden dass sie share:// oder subscribe:// unterstützt und bei einem Klick auf einen entsprechenden Link, öffnet sich (statt der E-Mail App) eben die entsprechende Web-App.

…vor kurzem hab ich dann mal ein wenig mit Superfeedrs msgboy herumgespielt und entdeckt dass es bei HTML5 wirklich Custom-Schemes gibt die man frei definieren kann!

Mit folgendem Befehl kann man beim Browser einen eigenen Protocol-Handler setzen:

navigator.registerProtocolHandler('web+share', 'http://spread.ly/?url=%s', 'Spread.ly');Code-Sprache: JavaScript (javascript)

Alle neuen Schemes sollten mit "web+" beginnen, ausnahmen sind schon bestehende Schemes, wie z.B. "mailto", "mms", "nntp", "rtsp" oder "webcal".

Der passende a-Tag zum oben genannten Beispiel müsste also folgendermaßen aussehen:

<a href="web+share:http://pfefferle.org">Share this Page</a>Code-Sprache: HTML, XML (xml)

Klickt ein User den Link, wird einfach das %s vom Handler mit dem href ersetzt und aufgerufen:

http://spread.ly/?url=web+share:http://pfefferle.orgCode-Sprache: JavaScript (javascript)

Bisher war ich ja ein großer Web Intents Fan (und bin es auch immer noch), aber für solche simplen Aktionen wie "Share", "Like", "Subscribe" oder "Follow" reicht doch ein simples Custom-Scheme vollkommen aus. Kein unnötiges JavaScript (mal abgesehen vom Registrieren des Handlers), nur ein wenig HTML. Großartig!

Protocol-Handler lassen sich übrigens auch abhängig vom Mime-Type setzen:

navigator.registerContentHandler('application/atom+xml', 'http://www.google.com/ig/add?feedurl=%s', 'Google Reader')Code-Sprache: JavaScript (javascript)

Bei allen Web-Dokumenten mit dem Mime-Type application/atom+xml sollte der Browser jetzt nachfragen ob er die URL mit dem Google-Reader öffnen soll.

Pfefferles OpenWeb: Web Intents

Seit Freitag ist die zweite Ausgabe des SCREENGUI-Magazins (mit dem Fokus auf E-Payment, CSS4 und Boilerplates) in allen Bahnhofs- oder Flughafen-Buchhandlungen erhältlich.

In „Pfefferles OpenWeb“ geht es diesmal um Web Intents:

Seit Webseitenbetreiber das Potenzial von sozialen Netzwerken erkannt haben, nimmt die Anzahl der share, like, bookmark und +1 Buttons stetig zu und entwickelt sich zu einer regelrechten Plage. Jeder Besucher soll die Möglichkeit bekommen, seine Entdeckung schnellstmöglich mit seinen Freunden zu teilen – egal auf welcher Plattform. Um diesem Problem Herr zu werden, arbeitet Google seit ein paar Wochen an einem Framework namens Web Intents.

Viel Spaß beim lesen!

Erst filtern, dann abonnieren!

Die Informationsflut im Internet nimmt immer mehr zu und FeedReader bieten bisher keine wirkliche Möglichkeit diese Informationen sinnvoll zu filtern und da man nicht wirklich (zeitnah) Einfluss auf die Weiterentwicklung von NetNewsWire, Google Reader & Co. hat, bleibt nur noch eins: Erst filtern, dann abonnieren!

NoisePress erlaubt Seitenbesucher, einen RSS/ATOM-Feed mit Hilfe von APML vorzufiltern.

(Zum ausprobieren braucht man ein APML-Profil. Wer keines hat, sollte sich entweder das WordPress Plugin installieren oder heimlich Carstens Profil benutzen 😉 )

Warum mit APML filtern?

Man könnte natürlich auch mit WordPress-Bordmitteln eine Menge Rauschen ausfiltern, und wirklich nur das abonnieren was gerade wichtig ist:

Das Problem: Ändert sich dieses Interesse, müssen alle Feeds mühsam aussortiert (und neue gesammelt) werden. Außerdem besteht die Gefahr, dass einige spannende Themen, die nicht genau die abonnierte Kategorie/den abonnierten Tag besitzen, durch das Raster fallen können.

Das Prinzip von NoisePress: APML ist eine Art semantische Tag-Clound die das Interesse einer Person widerspiegelt. Das Interessens-Profil wird in der Regel automatisch generiert und sollte sich somit auch den diversen Interessensveränderungen anpassen.

Am Beispiel WordPress Plugin: Das Plugin erstellt ein APML-File anhand der Häufigkeit der verwendeten Tags und Kategorien. Schreibt jemand viel über OpenID, kann man davon ausgehen, dass er das Thema für wichtig hält. Ändert sich der Fokus des Blogs, wird OpenID auch im APML-Feed immer irrelevanter.

Hört sich nach Geek-Zeugs an?

Richtig! 🙂 …aber NoisePress ist auch erst einmal nur ein Test ob meine Idee überhaupt funktioniert! Im besten Fall soll der User von all der Technik gar nichts mitbekommen. Ich hoffe dass sich Firefox‘ Account Manager oder XAuth schnell weiter entwickeln und ich eine dieser Techniken für NoisePress missbrauchen könnte.

Ich würde mich übrigens sehr über ein bisschen Feedback freuen!

Chris Messina erklärt XAuth
XAuth ist eine Art Cross-Domain Cookie mit dem man Versucht die Flut an Share, Like und Login Icons auf ein Minimum zu reduzieren.

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

» XAuth – an introduction
» Offizielle XAuth Seite

OExchange einfach erklärt
OExchange ist ein offenes Protokoll um eine beliebige URL mit einem beliebigen Service im Web zu teilen. Die Demo zeigt die Funktionsweise von OExchange und welche Vorteile sich in Kombination mit z.B. XAuth ergeben.

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

» OExchange in action
» Offizielle OExchange Seite

Firefox Sync
Mozilla benennt das Labs-Projekt Weave Sync in Firefox Sync um und kündigt an, den Sync-Mechanismus in eine der nächsten Firefox Versionen fest zu integrieren. Im Zuge meiner Recherche bin ich außerdem noch auf einen Wiki-Artikel gestoßen, der erklärt wie man den Firefox Sync zukünftig auch mit OpenID oder OAuth koppeln könnte:

The user must have a way of proving to a third-party service that they really are who they claim, and for the Mozilla service to provide information back to the third-party service that access has been granted. The OpenID and OAuth protocols provide what we need here, and the OpenID/OAuth hybrid flow has been described.

Once this is done, the third party service will be able to establish a relationship with the Weave Sync service for a user, without the user disclosing his or her password.

» Stay in Sync With Your Firefox
» Firefox Sync Graduates from Mozilla Labs
» Secure Data Sharing

RDFa 1.1 – Alles neu, alles anders
Dank HTML5 (ohne X) wurde RDFa noch einmal grundlegend überdacht. In der Version 1.1 werden die RDF-Vocabularies beispielsweise nicht mehr über Namespaces definiert. Früher:

<a xmlns:cc="http://creativecommons.org/ns#"
   rel="cc:license"
   href="http://creativecommons.org/licenses/by-nc-nd/3.0/">
</a>.Code-Sprache: HTML, XML (xml)

Jetzt:

<a prefix="cc: http://creativecommons.org/ns#"
   rel="cc:license"
   href="http://creativecommons.org/licenses/by-nc-nd/3.0/">
</a>.Code-Sprache: HTML, XML (xml)

Grund der Änderung: HTML kennt im Gegensatz zu XHTML keine Namespaces und RDFa soll sowohl in HTML5 als auch in XHTML5 integriert werden.

» RDFa Core 1.1

RDFa checker
Toby Inkster hat einen sehr umfangreichen RDFa checker veröffentlicht:

It checks your web page for RDFa and displays any data found there. It also compares your data against the published recommendations from major consumers/users of RDFa data, to see how well your data matches their requirements.

» check rdfa