Beruf, Software

Mein WordPress Plugin ist acht Jahre alt

セミ

Am Dienstag, den 19. Juni 2012 habe ich um 16 Uhr 9 den ersten “Commit”1 meines ersten öffentlichen Plugins gewagt. Als Namen habe ich mich für eine kurze, sachliche Beschreibung entschieden: Tag Groups. Wie so vieles habe ich auch diese Entscheidung eher aus dem Bauch heraus getroffen, ohne vorangegangene Forschungen.

Damals hatte es ein ähnliches Plugin gegeben, das jedoch nicht das zu leisten vermochte, was ich gebraucht hatte. Meine Neuschöpfung war eine Sonderanfertigung für das jetzt stillgelegte Projekt EcoBurma gewesen.

Vor acht Jahren hatte also der erste von 276 Commits stattgefunden.

Es ist kein rundes Datum, und inzwischen habe ich auch den eigentlichen Tag verpasst. Trotzdem habe ich beschlossen, ein paar verstreute Gedanken dazu aufzuschreiben.

1. Geringe Verbreitung

Die Anzahl der aktiven Installationen steigt nur extrem langsam. Manchmal oszilliert die Kurve, die das Wachstum bezeichnet, um den Nullpunkt. Das ist umso erstaunlicher, als die Bewertungen eigentlich sehr gut sind und WordPress insgesamt expandiert.

Entweder handelt es sich um ein extremes Nischenprodukt, oder die Leute, die es gebrauchen könnten, wissen nichts davon. Wenn es einfach schlecht wäre, dann müsste es sich auch in den Bewertungen niederschlagen.

Es ist ein bisschen frustrierend zu sehen, dass schlecht dokumentierte Plugins, die seit Jahren nicht mehr instand gehalten werden und wo sämtliche Supportanfragen unbeantwortet bleiben, die nicht einmal etwas Besonderes bieten, oft ein Vielfaches an Nutzern haben. Insgesamt trägt es zu dem Eindruck bei, dass Arbeitsaufwand und der Grad der Verbreitung nicht unbedingt zusammenhängen.

Natürlich könnte ich jetzt in Werbung investieren (einige Hundert oder Tausend Dollar, mit völlig ungewissem Ergebnis), aber dafür fehlen mir Geld und vielleicht auch das nötige “Business-Bewusstsein”. Ich habe sehr oft Veränderungen eingebracht, die das Produkt nutzerfreundlicher machen, so etwa den “Setup Wizard”, wo man nur mehrmals auf “Weiter” klicken muss, um dann loslegen zu können. Es bringt was für den Prozentsatz der Leute, die dann zur bezahlten Premium-Version wechseln, aber die Statistik für das kostenlose Plugin bleibt etwa gleich.

2. Nervosität vor jeder neuen Version

Jede neue Version lässt bei mir das Adrenalin in die Höhe schießen: Anspannung, Zittern, und danach doch zumeist Feierlaune. Kaum ist eine Version draußen, da entdeckt man schon etwas, was noch verbessert werden könnte oder repariert werden müsste. Also kommt es auf die Liste für die nächste Version.

In den ganz üblen Fällen ist etwas kaputt gegangen. Bei irgendwem ist Gutenberg deaktiviert und der Debug-Modus ein, und dann meldet die Software, dass eine Funktion nicht existiert. Da hätte ich natürlich testen müssen, hatte aber bei den vielen möglichen Konstellationen nicht daran gedacht. Solche Fälle sind aber extrem selten (an den einen erinnere ich mich, vielleicht waren es auch zwei). Eigentlich sind sie erstaunlich selten, wenn man bedenkt, wie viele Versionen die kostenlose Version schon gesehen hat, und auch bei der Premiumversion ist es jetzt schon eine ganze Reihe von Versionen.

セミ
Ein “Bug” in Japan

In solchen Fällen denke ich mir oft, dass es toll wäre, Tester zu haben. Natürlich teste ich selbst nach einer immer besser werdenden Checkliste und habe (derzeit noch unvollständige) Unit-Tests, aber vier Augen sehen immer mehr als zwei und es kommt auch die berühmte Betriebsblindheit hinzu.

Tester kann ich nicht bezahlen. Bei meiner Verkaufsplattform Freemius kann man neue Versionen zunächst als Beta markieren, so dass diejenigen Kunden, die sich dafür interessieren, eine Vorabversion bekommen. Allerdings ist mir nicht bekannt, dass jemand ein neues Feature unbedingt um ein paar Tage früher haben wollte. Also bleibt der Anreiz dafür, warum jemand ein Tester werden sollte, eher schwach.

3. Zu kompliziert, historisch bedingt

Weder das kostenlose Plugin noch die bezahlten Versionen sind Resultate einer vorangegangenen Planung. Sie sind einfach über die Wochen, Monate und Jahre gewachsen. In manchen Zeiten ist alle zwei Wochen eine neue Funktion hinzugekommen, etwas wurde benutzerfreundlicher, indem ein paar Einstellungen einfacher wurden, oder flexibler und damit schon wieder komplexer.

Aus wirtschaftlicher Sicht wäre es sehr viel sinnvoller gewesen, ein extrem simples Programm anzubieten, bei dem man drei Sachen einstellen kann und das dann irgendwelche Bilder oder Effekte zeigt. Die Kunden wären begeistert gewesen. Bei Tag Groups läuft unglaublich viel unsichtbar in der Verarbeitung von Daten ab. Das muss zu überhaupt keinem sichtbaren Ergebnis führen, denn man kann die so organisierten Daten auch einfach nur im Backend verwenden.

Beispielsweise kann die Autorin eines Beitrags Schlagwörter in verschiedenen Feldern hinzufügen, von denen ein jedes einer Schlagwortgruppe entspricht. Beim Speichern des Beitrags muss sich nun das Plugin an der richtigen Stelle einklinken und dann feststellen, ob sich ein gespeichertes Schlagwort an der vorherigen Stelle befindet, oder verschoben wurde, oder in einer Gruppe belassen und zusätzlich in einer neuen Gruppe hinzugefügt wurde, oder in einer Gruppe verwendet wurde, in der es vorher noch nicht war, oder überhaupt völlig neu generiert.

Die Logik dafür ist so einigermaßen komplex. Inzwischen funktioniert sie so, wie sie soll, aber auch das nur, wenn man sie lässt. Das große Problem der Plugins (also Erweiterungen) ist nämlich, dass sie sich zuweilen gegenseitig in die Wege kommen, vor allem wenn irgendwo eines einen Fehler verursacht.

Ich habe erlebt, dass ein sehr verbreitetes Plugin, das die besten Bewertungen hatte, einen JavaScript-Fehler verursachte, der dazu führte, dass bestimmte Funktionen meines Plugins nicht mehr funktionierten. Die Folge war, dass die Anfragen und Beschwerden dann bei mir eingingen. Ich hatte zeitweise sogar eine schlechte Bewertung deswegen.

Ich hatte daraufhin versucht anzuregen, dass Bewertungen erst dann abgegeben werden sollten, nachdem die Benutzer überhaupt versucht hatten, das Problem zu melden und zu lösen, aber das wurde von einem Forum-Moderator schnell und in etwas überheblichem Ton abgeschmettert. Dieser Moderator war übrigens (soweit ich es aus den Namen erkennen konnte) einer der Autoren desjenigen Plugins, das den Fehler überhaupt erst verursacht hatte. Ja, in der Position hat man gut Lachen!

Die viel beschworene WordPress-Community hat mich da nicht immer überzeugt. Es herrschen einfach zu verschiedene Bedingungen. Wenn man nur ein relativ unbekanntes Plugin zur Verfügung stellt, dann ist man ziemlich auf sich selbst gestellt. Sobald man versucht, etwas Geld damit zu verdienen, so ist es bei manchen Leuten fast wie ein Tabubruch, als hätte man etwas Unehrenhaftes gemacht. Aber auch meine Rechnungen müssen irgendwie bezahlt werden, daran führt kein Weg vorbei.

4. Diverse Kundenkontakte

Der mit Abstand schwierigste Aspekt sind unfreundliche Kundenkontakte. Stellen wir uns vor, 20 oder vielleicht sogar 50 Prozent aller Kunden einer Bäckerei kommen wieder zurück in den Laden. Ein paar wollen nur, dass man ihnen das Brot schneidet, was kein Problem ist. Ein paar aber werfen die gekauften Backwaren auf den Boden, trampeln darauf herum und sagen, dass sie eigentlich eine Pizza gewollt hätten.

Natürlich ist man als Verkäufer durch die AGBs geschützt, aber diese Kunden können einen jeden Tag 20 Minuten und sehr viele Nerven kosten. Das geht dann soweit, dass man sich nach der Arbeit erschöpft auf den Balkon setzt oder sich was zu Essen macht, und da ist das Problem wieder im Kopf und man überlegt, wie es am nächsten Tag oder nach dem Wochenende weiter gehen könnte. Irgendwo ist dann der Punkt, wo man sich entscheidet, auf die ohnehin schon sehr knappen Einkünfte zu verzichten, einfach nur, um die Sache loszuwerden und die finanziellen und gesundheitlichen Verluste einzugrenzen.

Der Rat liegt nahe, dass man diese Konflikte nicht emotional an sich herankommen lassen sollte, aber in solchen Sachen sind die Menschen eben sehr verschieden. Wenn ich einem Kunden bei dessen Projekt helfe, dann entwickle ich in dem Moment ein sehr persönliches Interesse daran, dass es erfolgreich wird, und ich freue mich ehrlich, wenn ich sehe, wie zufrieden die Leute sind, die meine Software verwenden. Umgekehrt verletzt es mich, wenn meine Arbeit mit Füßen getreten wird. Wer sie nicht will, braucht sie ja nicht zu kaufen. Es gibt ein 7-tägiges kostenloses Trial, während dessen also alle Funktionen ausprobiert werden können. Wer nicht zufrieden ist, der storniert es, bevor er etwas zahlen muss. Und fertig!

Ich hatte vorhin mit Absicht das Beispiel eines Bäckers gewählt. Natürlich sind dort die Produkte sehr viel billiger, aber bei Software lockt man mit niedrigen Preisen nur minderwertige Kunden an. Ja, auch Kunden haben Qualitätsmerkmale. Ich habe keine Ahnung wie viele Kunden im Lebensmittelgeschäft oder im Restaurant etwas zurück geben, weil sie sich nach dem Verzehr anders entschieden haben. Das kommt vor, aber ich vermute, dass es sich im einstelligen Prozentbereich bewegt. Als Verkäufer wird man vielleicht abschätzen wollen, ob es sich um einen “vorsätzlichen Serientäter” handelt, aber dann lässt man die Sache gut sein, da die Beschäftigung damit teurer ist als die Erstattung. Das gilt vor allem für große Firmen, die einfach einen bestimmten Prozentsatz Remittenden einkalkuliert haben. Indem sie das Rückgaberecht anbieten, steigt ja auch die Zahl der Käufer, was unter dem Strich einen Vorteil bringt.

Im Internet ist alles irgendwie “unwirklich”. Wer im Restaurant die Zahlung verweigert, muss dem Kellner, der gerade für einen gearbeitet hat, ins Gesicht sehen. Vielleicht kommt auch noch der Koch aus der Küche. Software dagegen ist für viele Leute ein Teil eines großen digitalen Universums, in dem sehr viel kostenlos erhältlich ist. Man kauft eigentlich nur die Berechtigung, es in einer bestimmten Weise zu verwenden, und es läuft auf einen abstrakten Lizenzschlüssel hinaus.

Die Dokumentation braucht man nicht zu lesen, denn man kann ja eine Mail schreiben, das geht schneller. Man schickt einfach mit jeder Mail fünf verschiedene Fragen, wie dieses und jenes konfiguriert werden soll, um am Ende dann zu konstatieren, dass die Software doch nicht genau das kann, was man will. Und außerdem sei sie viel zu teuer. Dabei hat der Kunde mit seinen drei Mails bereits mehr an Kosten verursacht, als er überhaupt bezahlt hat. Das ist für ihn okay. Wenn es ein All-You-Can-Eat-Buffet gibt, dann isst man eben auch über den Hunger hinaus.

Als Verkäufer, der mit seinen Einnahmen gerade so seine Rechnungen bezahlen kann, entwickelt man dann ein Frühwarnsystem. Wenn eine Vorab-Anfrage eintrifft, wo ein Kunde sein kompliziertes Projekt schildert und in Aussicht stellt, dass er dann, bei Erfüllung aller 20 Punkte, gnädig gewillt wäre, 30 Euro auf den Tisch zu legen, dann kann ich nur lachen. Die Antwortet lautet natürlich: Nein. Sorry. Dieses Produkt kann Ihnen auf keinen Fall helfen helfen. Und das ist oft gelogen. Denn dieser Kunde würde sonst nach dem Kauf seine 20 Punkte durchgehen, würde eine persönliche Betreuung einfordern und mich dafür verantwortlich machen, wenn etwas nicht funktioniert.

Die Lösung wäre dabei ganz einfach: Er müsste sich einen Experten leisten, den er nach Arbeitszeit bezahlt. Aber das ist nicht im Produkt enthalten.2

Da hilft nur sortieren und dann die umgänglichen Kunden entsprechend engagiert versorgen und die destruktiven loswerden. Kunden sind keine Könige, sondern Gäste.

Fazit?

Die Arbeit ist, um es mal neutral zu sagen, unglaublich vielseitig. Es ist ein tolles Gefühl, etwas gebaut zu haben, was unter Alltagsbedingungen funktioniert, zuverlässig und zum Teil als “Hauptattraktion” einiger Websites. Ich habe WordCamps besucht und einige Hürden überwunden, so etwa “Gutenberg”, einen neuen WordPress Editor, für den ich einige neue Software-Kenntnisse erwerben musste.

Das Projekt ist somit auch darin besonders, dass es kaum in meinem Leben eines gibt, in das ich so beständig investiert habe, das also einen solchen persönlichen Wert erworben hat.

Andererseits gibt es immer noch eklatante Probleme, wie etwa die Verbreitung oder besagte destruktive Kunden, die vielleicht nie zu lösen sein werden. Ein paar Dinge ließen sich durch eine “betriebsinterne” (klingt komisch, wenn man nur eine Person ist) Reorganisation verbessern, durch Schulungen, einen besseren Workflow und dergleichen. Ein paar Anregungen bekommt man von Kollegen oder auch aus anderen Branchen.

Ich bin da bei keinem endgültigen Urteil angelangt.

Software ist allgemein nicht sehr langlebig. Acht Jahre sind da nicht so schlecht. Es ist als ein kurzlebiger Versuch entstanden und dann einfach, wie eine Pflanze auf dem Balkon, jedes Jahr weiter gewachsen, ohne dass ich irgendeinen Plan dafür hatte. Inzwischen ist es zunehmend zur Nutzpflanze geworden, um bei der Metapher zu bleiben. Ich werde sehen, ob und wie es sich weiter entwickelt.

Show 2 footnotes
  1. Wenn man ein Bündel an Änderungen zu einem Softwarepaket hinzufügt, in dem Fall auf dem Server von WordPress.org, von wo aus es dann öffentlich verfügbar ist.
  2. Und ich kann es auch nicht als Zusatzleistung anbieten, da ich sonst anders abrechnen müsste, mit einem hohen Verwaltungsaufwand, ich müsste dann wissen, dass diese Zusatzleistungen einen bestimmten Anteil einnehmen, damit sich dieser Mehraufwand lohnt, und ich wäre vom Wohlwollen des Finanzamtes abhängig, das es gewohnt ist, Umsatzsteuer mit großen Firmen abzurechnen usw.

2 Comments

  1. Mark Dowling says

    Dear Christoph,

    I write to you from Australia, and I hope to lift your mood from that implied in your post. I am a happy user of your “redirect URL to post” plugin and it does so much more than I initially thought. Some background.

    I wanted to replicate Seth Godin’s “random” button on his website and so found your plugin in the WP repository. Your plugin does this perfectly. But it doesn’t;t stop there.

    I have recently started work on a very minimalist website that has no menus, categories, tags etc. Initially, I thought of just using the random function (plus a listing page) to let readers find their way around. But the filters and functions of the plugin will let me set up a cornerstone page, with links to first/ next/ previous/ last posts in the series. This is huge.

    You have clearly put a lot of work into this plugin, and it seems to be faultless in execution, Thank you.

    You mention the tag group plugin. I am not yet sure how/ if this suits my situation specifically, but will investigate further. Maybe it will? I don’t know.

    Anyway. I just wanted to let you know your work is appreciated.

    Regards, Mark

    • Christoph Amthor says

      Thank you so much for this comment, Mark! This really means a lot to me.

      “Redirect URL to Post” is one of my favourite pieces of software to work on. Its development was almost exclusively guided by user feedback who needed a particular feature. I would have never guessed in which direction it would move. Sometimes I was thinking about adding a settings page, but then again it’s like a weird signature feature that this plugin exists only in URLs.

      Your project sounds amazing, almost like minimalist art.

Comments are closed.