Ich trete ja normalerweise nicht nach – das gehört sich einfach nicht und ich habe lange überlegt, ob ich das hier überhaupt schreiben soll. Aber hier muss ich jetzt doch einmal, weil es sich gut als Beispiel eignet, dass es nichts hilft wenn jeder gegen jeden arbeitet. Und ich dachte, gerade in der Softwareentwicklung hätten wir das seit CP/M und den Plattformkriegen Atari/Amiga schon erfolgreich hinter uns gelassen. Was folgt ist etwas länger und erfüllt sicher keine journalistischen Standards.
Der Hintergrund
Aber der Reihe nach. Vor ein paar Tagen stellte ein Entwickler eine App in den Mac App Store, die dazu gedacht war, Farbprofile zu erstellen mit harmonischen Farben, zur Ermittlung von dominanten Farben in einem vorgegebenen Bild etc. – also etwas, das man im Bereich der Webprogrammierung und des Designs durchaus gebrauchen kann. Es gibt ein paar solcher Anwendungen für den Mac, aber die sind entweder seit Jahren nicht mehr weiterentwickelt oder versuchen so etwas wie die „eierlegende Wollmilchsau“ zu sein.
Der Preis war mit knappen 10 € mehr als attraktiv, also habe ich sie gekauft. Der Entwickler war mir von anderen Programmen schon bekannt und hat dort gezeigt, dass er offenbar weiss was er tut. Ich schreibe hier nicht hin, um welchen Entwickler es sich handelt – das ist in diesem Zusammenhang auch nicht weiter relevant.
Beim ersten Start dann direkt ein Problem: die App startet nur als Demo-Version. Der Entwickler erklärte dann auf seinem Blog, er habe versehentlich eine Demo bei Apple eingereicht, die dann auch für den Verkauf freigegeben wurde. Er würde aber über ein sogenanntes „expedited review“ (Entwickler können bei Apple darum bitten im Falle von kritischen Fehlern den Review-Prozess abzukürzen. Apple gestattet dies bei entsprechender Darlegung in der Regel, allerdings muss es eine Ausnahme bleiben. Entwickler, die davon häufiger Gebrauch machen, erhalten irgendwann Ablehnungen) versuchen die korrekte Version schnellstmöglich bereit zu stellen.
Ich mache es kurz: die App war nur wirklich sinnvoll nutzbar, wenn man Photoshop verwendet.
Und
Verbesserungsvorschläge?
Also habe ich den Entwickler angeschrieben und vorgeschlagen auch die sehr populären Apps Pixelmator und Sketch zu unterstützen um so für eine breitere Anwendungsbasis nutzbar zu sein. Die Antwort war, dass beide keine Möglichkeit dafür bieten würden. Ich habe nicht bei den Herstellern der Programme angefragt, weiss also nicht ob es wirklich stimmt. Sketch bietet auf jeden Fall eine Schnittstelle für Plugins.
Man könne die Farben ja über den Color-Picker von Mac OS in die Anwendungen bringen, schreib er. Dazu ein kleines Bild. So sieht dieses Ding aus, über das ich gerade schreibe:
Unten sieht man eine Leiste, das ist so etwas wie eine Liste mit Farb-Lesezeichen. Man hätte also in der App des Entwicklers erst eine Farbe in diese Liste ziehen müssen, damit diese dann von bspw. dem Pixelmator weiter verwendet werden kann. Das ist mit „unkomfortabel“ noch schwach umschrieben. Der Grund: Eine App kann nicht auf den Color-Picker zugreifen, den eine andere App geöffnet hat und an diesen einfach eine andere Farbe übergeben. Die Instanzen sind voneinander getrennt.
Das habe ich ihm dann auch geschrieben:
Und die Antwort darauf:
Hat er nicht verstanden. Gut. Ich habe dann einen zweiten Anlauf versucht, was aber leider auch nicht half obwohl er das eigentlich hätte wissen müssen – würde ich mich so verhalten wie er, hätte ich ihm hier bereits „totale Ahnungslosigkeit“ vorwerfen müssen. Ihr werden gleich verstehen, warum.
Klagen und meckern
Aber die Idee mit dem eigenen Picker-Plugin schwebte mir ja auch schon vor. Also mein Kommentar darauf:
Und dann seine Reaktion:
Und das ist leider ein Problem, das viele Entwickler haben. Sie schimpfen über den Hersteller der Plattform für die sie entwickeln anstelle sich erst mit den konkreten Lösungen auseinander zu setzen. Meckern ist nämlich immer einfacher. Und einem einfachen Anwender ist auch immer einfach zu erklären, dass man als Entwickler ja nichts für die Probleme kann, denn der eigentlich Schuldige ist Apple. Das ist nicht nur unter Mac OS so, sondern auch unter iOS immer wieder gerne genommen, wenn Entwickler sich mit der Problemlösung schwer tun oder ein Argument brauchen um eine bestimmte Funktion nicht einbauen zu müssen (oder weil ein „kann ich nicht umsetzen“ das Ego nicht erlaubt). Wer sich auf dem Gebiet nicht auskennt, glaubt das dann vermutlich und der Entwickler hat seine Ruhe. Habe ich früher auch so gemacht, aber irgendwann hinterfragen die Kunden das und dann wird es kompliziert, denn niemand will einen Entwickler beschäftigen oder dessen Software kaufen, wenn er ständig über die Materialen schimpft mit denen er arbeitet. Es zwingt ihn ja schließlich niemand für ein bestimmtes System zu entwickeln. Gibt ja noch zig andere. Und für den Kunden gibt es eben noch andere Anbieter, die ein Problem einfach nur lösen, ohne lange Vorträge über die Probleme zu halten.
Aber bleiben wir mal bei diesem Argument, dass es ein Problem mit der Sandbox gäbe. Wer nicht weiss, was das ist: eine Anwendung darf nur innerhalb eines klar abgeschotteten Bereiches arbeiten. Außerhalb dieses „Käfigs“ kann sie auf nichts zugreifen (zumindest sollte es so sein), für das sie sich nicht vorab vom Anwender oder dem Betriebssystem eine Erlaubnis geholt hat. Was man aber auch wissen muss: eine Anwendung, die über den Mac App Store verkauft werden soll, muss innerhalb einer solchen Sandbox laufen. Apps, die außerhalb des Mac App Stores verteilt werden, müssen das nicht (was dazu führt, dass bspw. Panic den wohl bekanntesten Editor für Web-Projekte „Coda“ künftig nicht mehr im App Store anbieten wird). Außerdem können (nicht App Store) Apps beliebig auf die Daten zugreifen, die Sandbox-Apps im Dateisystem abgelegt haben. Niemand hindert sie daran. Und das muss auch so sein, denn viele Anwendungen wären sonst gar nicht realisierbar. So ist es auch wenig verwunderlich, wenn es Apps gibt, die zwar über den App Store vertrieben werden, dann aber außerhalb des Stores weitere Plugins anbieten, die Funktionen bereitstellen, die innerhalb der Sandbox nicht möglich wären und sich auch nicht mit den Vorgaben von Apple vertragen (bspw. der Fritz!Box-Dialer Dial!List für den man zusätzliche Plugins laden kann um ihn in vollem Umfang nutzen zu können – das Programm ist übrigens eine uneingeschränkte Empfehlung, sofern man einen Mac und eine Fritz!Box hat).
Also habe ich mir überlegt, wie man das Problem lösen könnte – der Entwickler hat ja öffentlich gemacht, dass er das offenbar als Hindernis ansieht und eine, meiner Meinung nach wichtige Funktion möglicherweise nicht einbauen kann). Die einfachste Variante wäre: die App verbleibt im Store und es gibt einen zusätzlichen Download mit einer Erweiterung für den Mac OS Color-Picker (Color-Picker-Erweiterungen und der Mac App Store sind auch ein schwieriges Thema), die dann einfach die aktuellen Farben, Schemen etc. aus den Daten ausliest, die von der App erzeugt und im Dateisystem abgelegt werden. Simpel und effektiv und keine Gefahr für die Sandbox.
Du zweifelst an meiner Unfehlbarkeit?
Aber gut. Die App nutzt iCloud für einen Abgleich der angelegten Farbprofile über mehrere Macs hinweg. Man könnte also auch iCloud verwenden um auf diese Daten zuzugreifen. Habe ich vorgeschlagen. Und das war dann die Reaktion:
An dieser Stelle sehen wir: die alte Trennung „ich Entwickler“ und „du Benutzer“ und ein damit direkt impliziertes: „Benutzer haben ja generell keine Vorstellung davon, was ich hier den ganzen Tag machen muss“. Das kann man zwar denken, aber wenn man nicht weiss, wen man als Gegenüber hat vielleicht keine so ganz intelligente Vorgehensweise. Aber dazu später mehr.
Es gibt durchaus Anwendungen, die über den App Store vertrieben werden und aufgrund der Sandbox aus mehreren Teilen bestehen – aber trotzdem komplett über den Store laufen. Ein Beispiel ist Ember von Realmac. Es gibt die Hauptanwendung und eine Hilfsanwendung über die bspw. Bildschirmfotos erzeugt werden können und die dann von der Hilfsanwendung in den iCloud-Speicher der Hauptanwendung abgelegt werden. Das ist auch durchaus möglich und Apple sieht das auch vor, dass ein Entwickler mit mehreren Anwendungen (oder Anwendungsteilen) auf einen gemeinsamen iCloud-Seicher zugreifen kann.
Und das war dann scheinbar zu viel für ihn.
Was ich aber nicht verstehe, wollte er mir dann doch nicht verraten. Klar, die Sache mit dem Picker-Plugin und dem Store kann man vergessen, aber ein Zugriff auf die Daten der iCloud ist trotzdem jederzeit möglich. Der lokale Speicher (local Storage) ist für alle Programme erreichbar (ob Apple das mag oder nicht spielt keine Rolle).
Ist doch gar nicht so schwer!
Ich habe – weil es ja scheinbar total kompliziert sein sollte – die Daten angeschaut, die seine App im Dateisystem ablegt. Zeitaufwand: 10 Minuten. Dann habe ich eine kleine App gebaut, die diese Daten ausliest und einfach nur die zuletzt eingestellte Farbe anzeigt. Zeitbedarf: 15 Minuten. Wir halten also fest: es geht – Screenshots zeige ich nicht, denn dann wäre klar um welche App und in der Folge auch um welchen Entwickler es sich handelt und das soll hier ja kein Pranger sein.
An dieser Stelle ein paar Informationen, die jetzt wichtig werden. Ich habe seit fast 30 Jahren mit Softwareentwicklung zu schaffen. Angefangen auf Commodore-Hardware (Datenbanken, MSR), später dann habe ich für den Atari Portfolio unter anderem das für diese Plattform leistungsfähigste Zeichenprogramm entwickelt. Des weiteren Software zur Messwerteerfassung und vieles mehr. Ich war beteiligt an Entwicklungen für das Newton MessagePad und habe für die Palm-Plattform Software lokalisiert. Später habe ich Software für die Steuerungen industrieller Produktionsanlagen erstellt. Meine Apple Developer-ID ist so alt, dass sie schon Patina angesetzt hat. Heute entsteht primär Software für Windows und Mac OS, allerdings wird aufgrund des angesprochenen Kundenkreises (derzeit?) nichts davon über den Mac App Store vertrieben.
Was mir wichtig ist: das konnte der Entwickler nicht wissen und ich gehe damit auch nicht hausieren. Das mache ich ihm auch überhaupt nicht zum Vorwurf. Man kann aber nie wissen mit wem man es zu tun hat und daher ist es in der Kommunikation und hier gerade über soziale Medien wichtig, den passenden Ton zu wählen. Das nennt man „Sozialkompetenz“. Gut, der Entwickler hätte ein bisschen ahnen können, denn als er Probleme mit dem CSS (Cascading Stylesheets, eine Technik, die auf Webseiten verwendet wird) seiner Webseite hatte, gab es von mir einen entscheidenden Tipp. Aber ich will nicht kleinlich sein.
Statt dessen folgt jetzt die Unterhaltung des nächsten Tages. Und das sagt dann doch alles über das Selbstverständnis einiger Leute aus, die da draussen unterwegs sind. Und man stelle sich einmal vor, was ein „einfacher Anwender“ davon halten mag, wenn er sich mit einer Supportanfrage an einen Entwickler wendet und solche Antworten bekommt (ich habe mir die Bewertungen seiner anderen Apps im App Store angeschaut und weiss nun zumindest was seine Kunden davon halten).
Pöbeln = Kommunikation?
Es begann damit, dass es eine – sagen wir – Erfolgsmeldung gab und einen Blogartikel in dem beschrieben wurde, dass es alles ganz schwierig sei und wieder die alte Leier mit dem App-Review.
Das klingt doch alles ein bisschen so als habe da jemand Angst, dass ich ihm „seine App“ wegnehmen wollte. Wollte ich gar nicht. Diese App bespielt eine Nische und der zu erwartende Umsatz dürfte arg übersichtlich bleiben.
Die Sache mit dem Oldtimer ist vermutlich berühmte „Auto-Vergleich“, der auch im Usenet immer gerne genutzt wurde.
Zu so viel öffentlicher Pöbelei blieb dann nur noch zu sagen:
Und dann kommen wir man zu dem, was danach passierte. Das ist nämlich der Teil von dem ich glaube, dass er die ganze Zeit schreiben wenn „keine Ahnung“ vorgeworfen wurde.
Lag ich wohl doch nicht so falsch?
Einen Tag später gab es wieder einen Blog-Eintrag des Entwicklers. Das Programm sei jetzt fertig und es gäbe die Erweiterung. Allerdings nicht über den Mac App Store (hatte ich das nicht vorgeschlagen?), sondern als neue, direkt über ihn zu erwerbende „Pro“-App. Preis jetzt 15 €. Kein Wort darüber, was Leute machen sollen, die das Programm schon über den App Store gekauft hatten, nichts.
Und wie funktioniert denn nun die Erweiterung? Ja, also das ist jetzt so etwas wie mein persönlicher Höhenflug: Sie liest die Daten aus, die von der Hauptanwendung im Dateisystem abgelegt werden. Man stelle sich das einmal vor… Er verwendet die Lösung für die er mich vorher noch angepöbelt hat 🙂
Ich habe mich dann bei Apple darüber beschwert, dass eine halbfertige (und defekte „Demo“) App über den Store verkauft wird und der Entwickler für die Version mit vollem Funktionsumfang über seine eigene Seite knapp zwei Tage später erneut kassieren möchte. Der Mitarbeiter hat sich entschuldigt, festgestellt, dass die App aus dem Store entfernt wurde und den Kaufpreis erstattet.
Stand heute gibt es aber wieder zwei Apps. Eine beschnittene, die über den App Store verkauft wird und eine mit vollem Umfang, die über den eigenen Shop vertrieben wird.
Da aber die Erweiterung mit ein wenig gutem Willen auch mit der Software aus dem App Store funktionieren könnte, glaub ich zu wissen von was ich „keine Ahnung“ hatte: Kunden über den Tisch ziehen. Damit kenne ich mich nun wirklich nicht aus.
Fazit und Aufruf
Und dann braucht das hier ja auch noch ein Fazit. Also bitte: Liebe Entwickler da draussen – egal für welche Plattform auch immer – wir sitzen alle im selben Boot und es führt nicht zum sofortigen finanziellen Desaster wenn man sich gegenseitig hilft und Tipps gibt. Was niemals vergessen werden darf: keiner von uns ist perfekt und Fehler (in Form von Bugs) machen gehört zu unserem Geschäft. Was aber nicht zu entschuldigen ist, das ist die Art und Weise mit der manche von uns glauben, mit Kunden umspringen zu dürfen. Das ärgert mich aus einem einfachen Grund: es fällt auf uns alle zurück, denn dem Anwender fällt es sehr schwer zu differenzieren.
Wenn man nicht möchte, dass der Kunde Vorschläge macht, dann antwortet man mit einem einfachen „eine Lösung ist bereits in Arbeit und kommt in Kürze“.
Wenn man nicht möchte, dass Leute einem überhaupt irgendwelche Tipps geben, dann erweckt man besser nicht den Eindruck als habe man welche notwendig.
Wenn man keine öffentliche Kritik ertragen kann, dann hält man sich von der Öffentlichkeit besser fern.
Es sind nicht alle Entwickler so, aber leider gibt es zu viele schwarze Schafe. Die meisten sind dankbar für Vorschläge und Hilfen, die sie erhalten. Ich bin immer sehr dankbar für Vorschläge von Kunden, denn einiges sieht man einfach nicht, weil man selbst diesen Anwendungsfall nicht bedacht hat oder gar nicht vorstellen kann. Und auch die Lösungsansätze der Kunden enthalten oftmals sehr wertvolle Informationen weil man daraus lernen kann, wie andere Leute das eigene Produkt verwenden und das wiederum führt dann bisweilen dazu, dass man das Bedienkonzept auf die Realität der Benutzer anpasst – was auch immer man sich selbst vorher auf dem Papier für tolle Sachen ausgedacht hat. Die Anwendungen entwickeln wir nicht für uns, sondern für andere Leute, die uns dafür Geld bezahlen sollen. Also ist es auch an uns, deren Bedürfnisse zu erfüllen. Das nennt man Dienstleistung.