Pipes ist nun frei
Ich habe mich entschieden, Pipes unter eine freie Lizenz zu stellen. Die Pipes CE ist nun auf Github, steht unter der AGPL und ist einfach installierbar.
Pipes ist ein Projekt von mir, eine Webanwendung, die Yahoo! Pipes nachempfunden ist. Es ist ein grafischer Editor, in den man Daten – gerne RSS-Feeds – hereinzieht und dann bearbeitet, indem Blöcke verbunden werden. Einfachstes Beispiel wäre das Filtern eines Blogs oder eine Nachrichtenseite nach einem bestimmten Thema. Die geteilten Pipes zeigen was andere damit anfangen, und ich hatte im Pipes-Blog eine kleine Artikelsammlung darüber geschrieben, was die Seite so kann.
Auf jeden Fall war diese Webanwendung bisher nicht offen. Auf der einen Seite muss sowas natürlich auch mal okay sein, andererseits ging mir das auch etwas gegen den Strich, und es ist gerade bei Pipes ein bisschen kritisch gewesen. Denn der Vorgänger (mit dem ich nichts zu tun hatte) wurde erst nicht weiterentwickelt, dann abgeschaltet. Klar, dass dann nicht jeder Zeit (oder gar Geld) in eine SaaS-Seite investieren will, bei der das wieder passieren könnte. Die neue freie Version soll gegen solche Bedenken helfen.
Pipes CE ist eine Ruby/Sinatra-Anwendung. Sie kann einfach installiert werden und läuft dann eben auf dem eigenen Rechner oder Server. Der Funktionsumfang ist momentan nicht geringer als bei Pipes, nur Zeug wie die Stripeeinbindung habe ich herausgenommen. Das Design ist auch angepasst, es soll ja nicht identisch aussehen. Im Laufe der Zeit könnte sich noch ändern wie ähnlich die beiden Versionen sich sind. Wie es jetzt weitergeht ist nicht genau durchgeplant und hängt ja auch davon ab, ob noch andere gerne mit der Software spielen wollen.
Mehr Erklärungen für Pipes per Blog!
Von Anfang an war klar, dass es für mich schwierig ist zu beschreiben was Pipes macht. Das ist wahrscheinlich eine höhere Einstiegshürde als die in den meisten Fällen einfache Bedienung. Deshalb war die Dokumentation so früh online.
Die wird jetzt durch einen neuen Blog ergänzt, dessen erste Aufgabe das Zeigen von Anleitungen ist.
Die Dokumentation erklärt zwar schon ein bisschen die Grundidee und -Bedienung:
Pipes gives you blocks that can fetch and create feeds, and manipulate them in various ways. Think filtering, extracting, merging and sorting. All you need to do is to connect those blocks with each other. Data just flows through such a pipe, it flows from block to block. At the end Pipes gives you a new feed, which you can give to other programs that support open web standards - such a program could be your feed reader.
Und geteilte Pipes dienen als Beispiele. Aber vollständige Schritt-für-Schritt Anleitungen fehlten noch. Sie erklären auch am besten nicht nur, wie man etwas macht, sondern auch was man überhaupt mit Pipes machen könnte. Anwendungsfälle.
Teil 4 der Howto-Serie zeigt zum Beispiel, wie man einen gekürzten RSS-Feed mit Pipes in einen ungekürzten verwandeln kann. Der fünfte Artikel erklärt den Twitter-Block, wie man damit Tweets in RSS-Feeds packt. Bei beiden Artikeln dachte ich, dass das auch ein paar meiner Leser hier interessieren könnte.
Wer den Blog abonnieren will: Wenn mir für diese Artikelserie die Ideen ausgehen werde ich wahrscheinlich ein paar der geteilten Pipes vorstellen (eine Idee aus der Umfrage) oder die Technik hinter Pipes erklären. Artikelwünsche nehme ich natürlich auch entgegen.
Umfrage zu Pipes
Ein paar von euch hatten ja Pipes ausprobiert. Ich bin derzeit sehr am Überlegen, wie sich die Seite im nächsten Jahr entwickeln soll. Ich habe ein paar Ideen, will aber gar nicht zu sehr beeinflussen, denn: Ich habe zum Ideensammeln eine Umfrage angelegt. Wer ein bisschen Interesse an der Seite hat sei hiermit herzlich gebeten, die (sehr kurze!) Umfrage auszufüllen oder mir auf sonstigem Wege seinen Eindruck oder seine Ideen zukommen zu lassen.
Später schreibe ich dazu bestimmt noch etwas mehr.
Pipes entwickelt sich weiter
Gestern ging ein Update für Pipes online, und ich halte das für eine gute Gelegenheit hier von den letzten Änderungen zu berichten. Ich hatte da auch im Newsletter drüber geschrieben, doch mich da sehr kurz gehalten. Hier ist etwas mehr Platz.
Pipes teilen
Ein großes Ziel für mich war das Teilen von Pipes. Yahoo Pipes konnte das, und ich fand die Funktion damals ziemlich cool, auch wenn ich selbst dann gar nicht viel damit anfing. Jetzt kann man auch bei Pipes fertige pipes teilen, und die freigegebenen in den eigenen Account kopieren.
Diese Beispielpipe ist von mir, jeder kann den Link aufrufen und seine eigene Kopie verändern, speichern und ausführen.
Konzept für Formate
Vor dieser neuen Funktion gab es ein völlig anderes Konzeptionsproblem: Wie soll Pipes mit anderen Formaten als XML/RSS/Atom umgehen? Für mich wurde das mit dem Webhooks-Block akut. Webhooks verschicken desöfteren JSON. Aber es wurde auch angefragt, wie man eine simple Textliste mit Pipes bearbeiten könnte.
Das durchzudesignen war nicht so ohne. Aber es gab eine Lösung. Der Downloadblock kann jetzt nur mit dem Extract-Block oder dem Feedbuilder verbunden werden. Der Webhookblock baut aus den eingegangenen POSTs direkt einen Feed. Zusammen mit drei weiteren Änderungen können so die Formate behandelt werden:
- Der Feedbuilder wurde ergänzt um die Fähigkeit, aus Textdateien Feeds zu bauen. Jede Zeile wird ein eigenes Feeditem.
- Der Extract-Block nutzt nun jeweils einen Selektor für seine drei Formate: CSS-Selektoren für HTML, Xpath für XML, und JSONPath für JSON.
- Außerdem kann der Extract-Block nun optional von
item.content
an extrahieren.
Das klingt ein bisschen kompliziert, führt aber zu einem einfachen Datenfluss. Du willst z.B. eine Textdatei bearbeiten, Zeile für Zeile eine Regexpression drüberlaufen lassen. Dann nimmt man einen Downloadblock, der sie runterlädt, gibt sie zum Feedbuilder, der daraus einen Feed bastelt. Der Feed geht dann an den Replacer-Block, der auf item.content
arbeitet und so die Arbeit macht. Um am Ende wieder eine Textdatei zu bekommen und nicht RSS wird der Ausgabefeed als pipes.digital/feed/feedid.txt aufgerufen.
Oder man will etwas aus JSON extrahieren, das an den Webhookfeed-geschickt wurde. Da kannst du jetzt direkt einen Extract-Block an den Webhook-Block anschließen, ihm einen JSONPath mitgeben, und so einen neuen Feed mit den extrahierten Elementen erstellen. Die Kernidee ist, RSS-Feeds als internes Datenformat zu erhalten, aber für andere Formate klar definierte Unterstützung einzubauen.
Editor und sonstige Verbesserungen
Dazu gab es eine Reihe von neuen Blocks, wie den Replace-Block. Reguläre Ausdrücke können jetzt als /regex/[flags] geschrieben werden, was insbesondere für das Flag i
(case-insensitive) wichtig ist. Es gab einige Bugs zu fixen, Komfortfunktionen einzubauen, und der Editor hat ein neues Design. So sieht er jetzt aus:
Es gab Verbesserungen beim Login-Flow, und oben rechts versteckt sich hinter dem Profilavatar ein Dropdown-Menü, in das die Seite "My Pipes" gewandert ist, die Einstellungen (derzeit nur zum ändern der Emailadresse) und auch der Knopf zum Ausloggen hinzugefügt wurden.
Pipes ist weiterhin ein motivierendes Projekt. Die Seite wird - zumindest in meinen Augen - immer besser, und es gab weiterhin ordentlich Feedback. Ich hoffe das geht so weiter.
Webscraping mit und Dokumentation für Pipes
Nach der Vorstellung habe ich natürlich weiter an Pipes gearbeitet. Es gab einige Bugs zu fixen (z.B. konnte man sich nicht mit Chrome einloggen) und Kleinigkeiten zu verbessern (z.B. direkt nach dem Login im Editor zu speichern, ohne auf den zweiten Klick zu warten). Es gibt jetzt aber auch ein paar neue Blocks.
Mit dem Sort-Block können Feeds sortiert werden - z.B. nach dem Datum der Einträge, aber das Sortierfeld lässt sich aussuchen. Der Truncate-Block begrenzt die Länge des Feeds.
Drei andere neue Block ermöglichen Webscraping: Der Download-Block lädt eine Webseite herunter (ohne wie der Feed-Block nach einem RSS-Feed zu suchen), der Extract-Block kann dann mittels CSS-Selektoren oder XPath Elemente aus der Seite herausnehmen, und diese gibt man dann am besten dem Feedbuilder-Block und füllt so einen richtigen RSS-Feed mit Titel, Inhalt und Links. Feeds so zu erstellen und eventuell zu bearbeiten passt in meinen Augen sehr gut in das Modell von Pipes.
Fast noch wichtiger war mir aber, die Dokumentation online zu haben. Es gab dann doch einige Nachfragen und Unklarheiten. Die Docs erklären nun erstmal, was Pipes ist - und zeigen auch in einem sehr kurzen Video, wie der Editor funktioniert. Außerdem wird jeder Block erklärt, und in einem Beispiel gezeigt was man mit ihm machen kann.
Dank Matthias Antwort auf Twitter weiß ich nun auch, dass ich das mit Sphinx hätte bauen können. Das kam diesmal zu spät, aber er hatte vollkommen recht: Genau solche Sphinx-Dokumentation hatte ich als Vorbild.
Ein Nachfolger für Yahoo Pipes
Als 2015 Yahoo Pipes zumachte war ich traurig. Es ist nicht so, dass ich die Webseite jeden Tag benutzt hätte. Aber sie war in meinem Repertoire für gewisse Probleme und ich hielt Yahoo Pipes für nützliche Infrastruktur für das offene Web, die ja auch jahrelang bestand.
Um den Verlust etwas auszugleichen habe ich die Seite pipes.digital gestartet. Kern der Seite ist ein an Yahoo Pipes angelehnter und auf Feeds fokussierter grafischer Editor. Man kann damit wieder Pipes erstellen, die beispielsweise mehrere Feeds kombinieren und nach einem Suchwort durchforsten, und muss dafür nur ein paar Blöcke platzieren und verbinden.
Der Screenshot zeigt eine solche Pipe: Hier wird der Feed der New York Times, von The Guardian und von Hacker News kombiniert und dieser kombinierte Feed dann nach dem Keyword Pipes
gefiltert.
Anfangs sah der Editor noch etwas anders aus, das erste Release von Pipes war eine frühe Version. Das haben die damals über den Launch berichtenden Artikel (insbesondere TNW und ghacks) auch angemerkt, doch ich war sehr zufrieden mit dem gezeigten Interesse. Ich hatte mich dazu gezwungen, die Seite früher zu veröffentlichen als ich es sonst getan hätte, weil Yahoo Pipes so ein weites Feld war. Auf der einen Seite ging es natürlich darum, herauszufinden, ob sich für so ein Projekt überhaupt jemand interessieren würde. Aber vor allem erhoffte ich mir durch die frühe Veröffentlichung Feedback, um die weitere Entwicklung im Sinne der möglichen Nutzer zu steuern.
Letzteres gilt weiterhin. Also immer her damit, wenn ihr Feedback zur neuen Seite oder Erzählungen habt, für was ihr damals Yahoo Pipes nutztet. Wie die neue Seite genutzt wird zeigen die geteilten Pipes.
Update 08.01.2019: Inzwischen ist die Seite knapp zwei Jahre alt und in einem guten Zustand. Mit vielen neuen Blöcken und Verbesserungen bei den bestehenden können mehr Aufgaben umgesetzt werden. Beispielsweise können nun Tweets als Feed geladen und genutzt werden. Und die RSS-Ausgabe wurde standardkonformer, sodass sie nun besser mit Software zusammenspielt, mit der einige Nutzer Feeds im Intranet ihrer Firma anzeigen.