But if you did use it, the app would be so unreliable that users would (again, quite reasonably) complain that it was a steaming pile of shit.
Die letzten Wochen, wenn nicht der gesamte März, waren für jeden OS X und iOS Entwickler geprägt durch zahlreiche Beschwerden seitens Kollegen wie schlecht iCloud ist und wie wenig sich seit der Einführung des Dienstes innerhalb der letzten zwei Jahre getan hat. Negative Presse macht Schlagzeilen, was wiederum zu Klicks führt, und wir wissen wo das schlussendlich endet. Ich will weder iCloud noch Apple verteidigen, und den meisten Entwicklern auch nicht Unrecht geben. Es geht lediglich darum eine weitere Perspektive auf die unterschiedlichen Dienste zu haben.
Folgende Punkte sind Fakt. Bei Allem was ich bezüglich iCloud sage, sollte man sie immer im Hinterkopf behalten.
iCloud ist nicht gleich iCloud. Vielmehr ist es die Art von Marketing, welche Apple verwendet, um Dinge für den Benutzer einfacher zu machen. Dies macht es allerdings auch schwerer über konkrete Dinge zu sprechen, da sie unter dem großen iCloud-Banner verschwinden. Die meisten der iCloud-Dienste gab es bereits vor MobileMe, wo sie auch nicht immer zuverlässig funktioniert haben. Um das negative Image loszuwerden, hat man sich ein erneutes Mal einen neuen Namen ausgedacht und einige Dienste hinzugefügt. Die Synchronisation von Kontakten, Kalendern, Notizen oder E-Mails gab es schon zahlreiche Jahre früher. Sie basieren meist auch auf offenen Standards, die von Apple verwendet werden. Zu iCloud, welches von Entwicklern verwendet werden kann, sind prinzipiell folgende drei Dienste hinzugekommen welche allesamt proprietäre Entwicklungen von Apple sind: die Synchronisation von Einstellungen, Dokumenten und Datenbanken. Wenn von iCloud in diesem Kontext gesprochen wird, dann handelt es sich meistens um die drei genannten Dienste. Funktionen wie Backups oder Photo Stream werden auch unter dem Namen iCloud vermarktet, können jedoch lediglich von Apple verwendet werden und bieten keine Schnittstelle für Entwickler.
Im November 2012 haben wir mit meiner Frau unsere Tagebuch-App Memories aktualisiert, welche seitdem auch über iCloud die Core Data Datenbank zwischen mehreren Macs tausender Benutzer synchronisiert.
Seit der Aktualisierung geht es bei über 90% aller Support-Anfragen um iCloud.
Alle Support-Anfragen bezogen auf die Gesamtzahl der aktiven Anwender sind im unteren einstelligen Prozentbereich.
In den meisten Fällen geht es darum, dass einige Einträge auf einem der Macs nicht erscheinen, dass die App auf einmal aufhört zu synchronisieren, oder dass man die App gar nicht mehr starten kann.
Die meisten der iCloud-Probleme lassen sich beheben, indem man iCloud für Memories zurücksetzt und die Datenbank ein erneutes Mal mit dem Dienst synchronisieren lässt.
Es waren eigentlich 2–4 Wochen für die Integration von iCloud in die App geplant. Am Ende hat sie ein knappes Jahr gedauert. Ich bin aus Entwicklersicht über einige Teile der Implementierung immer noch unzufrieden.
Dies mag sich zuerst sehr negativ anhören. Wenn man allerdings bedenkt wie wenig unserer Anwender überhaupt ein Problem mit dem Dienst haben, bekommt man einen ganz anderen Blick auf die Angelegenheit. Es geht vielen vermutlich darum, dass iCloud das meiste Verbesserungspotential und die meisten Schwachstellen verglichen mit anderen Lösungen und Schnittstellen von Apple hat. Es ist nunmal auch so, dass die nörgeligsten und nervigsten Benutzer lautstark sind und negative Bewertungen hinterlassen. Für jede erhaltene 1-Sterne-Bewertung, gibt es mehrere hundert Benutzer, die einfach zufrieden sind und nichts schreiben. Sie haben sich die App heruntergeladen, sie erfüllt ihren Zweck, und sie haben keine Lust ihre Zeit für App Store Bewertungen zu verschwenden.
Die Schwachstellen liegen allerdings darin, dass Apple mehr versprochen hat, als es geliefert hat. Es ist unvertretbar, dass die Entwicklungszeit um mehr als das zehnfache steigt, nur weil man mit merkwürdigen Implementierungen und fehlender Dokumentation seitens Apple kämpfen muss. Es geht auch nicht, dass man Anwender dazu anweisen muss komplexe Schritte in versteckten Ordnern oder auf dem Terminal durchzuführen, um anschließend alle Daten ein erneutes Mal zu synchronisieren. Zugegeben, man kann auch einen Knopf in die App einbauen, welcher dies für den Benutzer erledigen würde. Die Implementierungen sind allerdings so komplex und fehleranfällig, dass es sich in den meisten Fällen gar nicht lohnt und man eher dem pragmatischem, wenn auch komplexerem Ansatz, folgt. So haben wir zum Beispiel ein AppleScript geschrieben, welches auch von den technisch noch so scheuen Anwendern durch einen einfachen Doppelklick ausgeführt werden kann, und die iCloud-Daten zurücksetzt. Dies bedeutet natürlich nicht, dass Probleme mit den iCloud-Daten in erster Linie gar nicht auftreten sollten. Es ist jedoch ein akzeptabler Workaround.
All dies führt allerdings zu einem Vertrauensbruch zwischen Entwicklern und Apple, und das wiederum zu einem Vertrauensbruch zwischen ersteren und den eigentlichen Benutzern. Wenn in diesem Fall auch noch Apple auf deren offiziellen iCloud-Statusseiten schreibt, dass bestimmte Dienste für weniger als zwei Stunden und weniger als 5% aller Anwender ausfallen, diese in der Tat aber mehr als 90% der Anwender betreffen und mehrere Tage lang nicht funktionieren, wirft Apple unnötigerweise Ölfässer ins Feuer. Marketing und das Vermeiden negativer Schlagzeilen sind der Hintergrund solch schwammiger Aussagen. Die Anwender vertrauen einer großen Entität wie Apple in erster Linie natürlich mehr als dem kleinen Programmierer in Boxer-Shorts in seinem Home-Office. So wird schnell die eigene App zu einem „großer Haufen Scheiße“. Die Wahrheit kommt früher oder später allerdings trotzdem ans Licht.
Wenn iCloud funktioniert, läuft es auch wunderbar. Nun mag es sein, dass ich ein überdurchschnittlich guter Programmierer bin und wir deshalb so wenig Support bezüglich iCloud bekommen (was ich allerdings sehr stark anzweifle). Das eigentliche Problem liegt darin, dass Apple’s Implementierung zahlreiche Bugs aufweist. Dies erklärt auch die „fehlende“ Dokumention bezüglich „merkwürdiger“ Fehlermeldungen. Bugs braucht man nicht zu dokumentieren, genau so wenig sollten nichts sagende Fehlermeldungen auftreten, die ein Resultat derer sind. Nach so vielen Jahren fehlgeschlagener Client-Server-Implementierungen aus dem Hause Apple, bin ich mir nicht mehr sicher, ob sie es jemals hinbekommen werden. Was helfen würde ist mehr Transparenz, so dass Entwickler Bugs besser in den Griff bekommen könnten. Mit aller Sicherheit kann ich allerdings sagen, dass dies mit dem Apple welches ich nun seit über zehn Jahren als Entwickler kenne, nicht geschehen wird. Es bleibt also zu hoffen, dass Apple alle Fehler in ihrem stillen Kämmerlein beheben wird, so dass der Dienst auch bei Entwicklern wieder das volle Vertrauen genießt.
Man sollte Apple allerdings nicht beschuldigen, wenn man:
Die eigene Unfähigkeit iCloud zu implementieren nicht erkennt, weil man nur ein durchschnittlicher oder schlechter Programmierer ist,
Wirtschaftliche oder ideologische Motive über technische Aspekte stellt, oder
Klicks und Aufmerksamkeit auf sich ziehen will.
Den meisten Kollegen gebe ich Recht. Wie immer gibt es allerdings auch einige schwarze Schafe, die lautstark schreien und ihre wahren Motive hinter iCloud verbergen. Juicy Cocktail wird jedenfalls weiterhin iCloud mit Core Data verwenden. Ich bin mir sicher, dass durch Fehlerbehebungen von Apple und weitere Implementierungen unserseits der Dienst in den nächsten Monaten und Jahren für noch weniger Anwender als den bereits geringen einstelligen Prozentbereich ein Problem darstellen wird. Schließlich ist iCloud eine wunderbare Technologie, welche zum ersten Mal den Ort und die eigentlichen Geräte in den Hintergrund rückt, und stattdessen den Fokus auf das Wichtigste überhaupt setzt: die von uns erstellten persönlichen Inhalte, überall und allzeit bereit.