Das Arbeiten in einer Welt voller APIs
Eigentlich wollte ich mir einen Beitrag zum Flash Player 10 sparen, aber die sehr geschätzten Kollegen André Michelle und Joa Ebert haben mich dann doch dazu bewegt zumindest indirekt darüber zu schreiben.
Initial hätte ich nicht gedacht, dass dieser Beitrag so lang wird. Ich hoffe ihr habt ein wenig Zeit mitgebracht und findet das Thema ebenfalls so diskussionswürdig wie ich. Ich freu mich auf Eure Meinungen.
Seit dieser Woche steht nun der finale Player zum Download bereit. Im Vorfeld hatte die Hobnox-Crew reichlich Lärm gemacht, um mit dem neusten Player Sound dynamisch manipulieren zu können. Wenn man so viel Herz und Leidenschaft in ein Projekt steckt und es an dieser einen Stelle klemmt, kann man so einen Wunsch natürlich nachvollziehen. Aber ich war mehr als erstaunt als Adobe ihren Wunsch erhört hat.
Neutral betrachtet ist dieses Feature natürlich nichts für die breite Masse, sondern eher für 0,0001 % der Entwickler, also André, Joa und einer Handvoll anderer Entwickler. Aber egal, man freut sich über den Erfolg der Jungs.
Wieso Adobe aber so nett war, bleibt mir schleierhaft. Aus meiner Sicht verfolgt Adobe die Marschroute in jeder Release viele schöne neue WoW-Effekte zu implementieren, die sich gut verkaufen lassen - sowohl bei ihren Kunden als auch bei den Kunden der Kunden. Klar, ein, zwei Features gehören eher zu der nüchteren Feature-Kategorie, aber es ist einfach unverständlich, dass jahrelang bekannte Bugs nicht behoben werden.
In der neuesten Version gibt es für die Effekt-Etage ein bisschen 3D, Inverse Kinetics, Bones und natürlich das neue Tool Pixel Blender. Auch wenn PV3D bei mir die Freude an 3D getrübt hat, bin ich froh über den 3D-Support der Flash API. In Zukunft wird bei 90% der Aufgaben die API von Flash ausreichen und somit muss man sich nicht mehr mit der Jenga-Turmähnlichen-API von PV3D rumschlagen, was wirklich schmerzhaft sein kann. Fraglich bleibt natürlich, ob und wo man 3D wirklich braucht bzw. wie ein sinnvoller Einsatz aussieht, aber das Thema hatte ich bereits auf der Flashforum Konferenz angesprochen.
Bei Inverse Kinetics und Bones bin ich einmal gespannt, was die Animationsspezis schönes zaubern und wie qualvoll dann die Einbindung der IDE-Erzeugnisse im wirklichen Projekt ist. Beim Thema Pixel Bender habe ich noch keine wirkliche Meinung, weil ich es noch nicht getestet habe. Derzeit wirkt es auf mich noch wie ein Tool von Nerds für Nerds. Beispiel gefällig?
Audio-Mixing mit Pixel Bender - mir fehlt noch gänzlich ein realer Einsatzzweck.
Aber wo wir wieder beim Thema Audio sind, will ich auf meinen initialen Grund für diesen Beitrag zurück kommen.
Die Hobnox-Gang kündigte groß an, dass sie sobald der Flash Player 10 verfügbar ist, eine neue Version ihres Audio-Tool veröffentlichen werden. Ich habe diese Nachricht mit erstaunen wahr genommen. Man musste annehmen, dass sie schon längere Zeit produktiv für den Flash Player 10 entwickeln haben. Aus meiner Sicht mutig, war doch der Player bis dato nur als Beta-Version verfügbar, aber ich führte es auf gute und sichere Kontakt bei Adobe zurück.
Tja, da lag ich wohl falsch. Nach der Relase des Flash Players 10 ist die Stimmung im Audio-Lager schlecht. Auf der Zielgeraden hat Adobe einfach die API geändert und den Jungs beinahe das Genick gebrochen.
Traurige Sache, wo ich auf der einen Seite den Frust der Jungs verstehen kann, aber auf der anderen Seite auch ein allgemeines Problem sehe, welches mehr und mehr Einfluss auf die Projekte nimmt und der Grund für diesen Beitrag ist.
Das Problem sind frühzeitig frei zugängliche APIs und ihr sofortiger Einsatz in kommerziellen Projekten. Auch wenn es komisch klingt, heute gehört es zum guten Ton seine Software bereits im Alpha- oder Beta-Stadium auf den Markt zu werfen. Verpackt mit effektvollen Demos kann man schnell für viel Aufsehen in der Flash-Community sorgen. Und es dauert nicht lange bis diese technischen Demos im kreativen Zaubertopf landen und in ein Konzept gepresst werden.
APIs sind aber doch eine super Sache? Auf den ersten Blick sicherlich, aber beim Einsatz in kommerziellen Projekt können sie schnell zum unkalkulierbaren Risiko werden.
Bestes Beispiel dafür ist PV3D. Das Entwickler-Team präsentiert regelmäßig neue Demos, um das Rennen der 3D-Engines weiter anzuführen. Ich frage mich schon seit langem, wie wichtig es dem Core-Team eigentlich ist, dass andere deren eigene API nutzen?
Mein Verständnis war immer, wenn ich etwas anderen zur Verfügung stelle, dann so, dass sie damit vernünftig arbeiten können. Ohne saubere Dokumentation und mit ständigen Änderungen an den Kernschnittstellen würde ich mir vom heutigen Standpunkt aus manchmal wünschen, dass sie die API nicht öffentlich zugänglich gemacht hätten. Dann hätten wir uns viele ideenfreie Projekte sparen können und ich mir einige Überstunden und graue Haare. In meinen letzten Projekt, wo der Einsatz von 3D sogar gut zum Thema passte, hofften wir bei jedem SVN-Update, dass die vielen vorhanden Fehler behoben werden. Die Praxis sah in der Regel leider anders aus. Updates gab es zwar genug, aber wenn sie eine Verbesserung mit sich brachten, dann folgte auf den Schritt auch meist ein neues Problem.
Diese Problematik trifft nicht nur auf Community-Projekte wie PV3D zu, sondern auch auf die großen der Branche. Aktuell habe ich die Ehre mit der Flash API von Google Maps zu arbeiten. Vom API-Design ist das natürlich ein Unterschied wie Tag und Nacht zu PV3D, aber auch hier komme ich mir langsam vor wie der persönliche Bugreporter vom Hofe Google.
Ich will nicht sagen, dass ich auf Kriegsfuß mit APIs stehe. Sie bieten mir ohne Frage viele tolle Möglichkeiten, aber beim Einsatz in kommerziellen Projekten, die in einer definierten Zeit zu realisieren sind, bin ich mit der Zeit vorsichtiger geworden. Auch wenn Demos zeigen, dass man diese oder jene Sache machen kann, steht für mich die Überprüfung dieser Features im Kontext der gesamten Anwendung an oberster Stelle. Und manchmal muss man somit auch auf ein neues Feature verzichten, aber oft ist weniger auch mehr, z.B. Performance.
Ich will niemandem den Spaß am Spielen mit den APIs nehmen, aber schreitet als Entwickler ein, wenn Dritte API-Demos zu einem Konzept zaubern. Verwendet ihr APIs von Dritten, dann solltet ihr immer ausreichend Buffer einkalkulieren.
Nicht selten kommt man in Grenzbereiche der API, wo man sich entweder tief in die API einarbeiten muss, um sein Ziel zu erreichen oder einfach in der Abhängigkeit gefangen ist und warten muss bis die API-Entwickler einen erhören und dann auch noch das Richtige veröffentlichen.
Eine Gradwanderung, die viel Feingefühl und einen kühlen Kopf benötigt.
Das war mein persönliches Wort zum Sonntag bereits am Freitag. Habt ein schönes Wochenende, geht raus und genießt die Farben des Herbstes.
Wer es nicht in die Natur schafft, der kann sich auch schöne Farben über die API von Kuler besorgen.
17. October 2008
16 Comments Add your own
1. Micha | October 17th, 2008 at 8:40 am
Ich hätte es nicht besser ausdrücken können!
Ganz Deiner Meinung.
2. Sven Busse | October 17th, 2008 at 8:55 am
yep, seh’ ich auch so.
3. pfuy | October 17th, 2008 at 9:27 am
Yup. Das ist wie mit Autos. Innovationen, die geil sind, die aber kein Kunde versteht noch braucht (bzw. noch nicht weiß, dass er sie braucht.
4. Hannes | October 17th, 2008 at 9:33 am
Kann mich nur anschließen.
5. andosch | October 17th, 2008 at 10:34 am
moin,
und bin deiner meinung.
ich habs mir tatsächlich komplett durchgelesen. sogar fast alles verstanden
dieser drang immer mehr “wow” effekte zu bieten, statt mal das vorhandene richtig zu machen bzw. eben die scheiß bugs zu beheben. das nervt!
is bei office nicht anders
6. jens | October 18th, 2008 at 5:39 pm
ohha … sehr guter Artikel! … sollte ich auch mal meinem Chef vorlegen. Ganz deiner Meinung!!!
7. kris | October 20th, 2008 at 10:05 am
weiss auch nicht wirklich, warum adobe den player ausgerechnet _jetzt_ rausgehauen hat, es existieren noch genuegend fehler. immerhin die FileReference haben sie bugfixed..
klar sollte man sich nicht allzu sehr auf fremden code im entwicklungs-stadium verlassen, aber spaetestens wenn der release candidate angekuendigt wird, sollte man ja meinen, dass es langsam konkreter wird - und nun noch die dicke verzoegerung im audio.. ein toller rueckschritt.
was allerdings das arbeiten mit pv3d angeht, muss ich sagen, dass es fuer leute, die bisher nur in 2d gearbeitet haben, wahrscheinlich eh umdenken erfordert, da es die programmierung unweit komplexer macht:. da stellt sogar wieder eine einfache navi ein riesen hindernis dar.
das papervision-team hat ne grosse community und versucht wahrscheinlich gerade, diese auch zu halten (siehe neustes, lang vermisstes feature quadtrees) - die konkurrenz haut ja auch alle nase lang ein weiteres feature raus, wahrscheinlich sogar besser dokumentiert. fleissige russen
(ps: pixel bender ohne l
8. Martin Heidegger | October 20th, 2008 at 10:18 am
Neben meiner langjährigen Flasherfahrung habe ich auch viel mit Java zu tun. Bei Java ist es einfach so das man ohne Bibliotheken nicht überlebt. Quasi alles ist eine Bibliothek: Der Application Server, die GUI Engine, Templating mechianismen, etc. Und dort hat sich über die Jahre auch ein Release-wesen entwickelt das von der Praxis her funktioniert. In minor updates funktioniert dann alles ein bischen besser und für gewöhnlich( wenn nicht ein totaler depp auf der anderen seite sitzt ) ändert sich auch keine API
Das ist eine Kultur die bei Flash Projekten aber kaum einziehen kann: Warum? Weil es keine Communities gibt! Ja es gibt Flashforen. Ja es gibt Entwickler blogs, man redet und betrinkt sich. Aber wenn ein Projekt wie PV3D eine Community hätte bei der auf Entwickler Kanälen response kommen würde. Wenn kommerzielle Projekte( mit Geld ) aufschreien bei API Änderungen und Bugs. Wenn es Verträge mit PV3D Projekten gäbe die diesen Geld bringen würde, sie aber auch verpflichten würde sauberen Code zu liefern. Wenn es eine Entwicklerkultur wäre sich die Experten auf Vorträge in die Firma zu holen: Dann würde Opensource für Flash auch funktionieren.
Ich habe die Erfahrung gemacht, nicht allein!, das Opensourceprojekte in der Flashwelt ein brotloses unterfangen sind: Viele nehmen den Code, wenige liefern Bugfixes oder auch nur Bugreports. Kritik darf man sich zusammenkratzen und ist dann auch meist vage formuliert. Angeschrieben für Projekte wird man nur wenn man etwas macht das super aussieht oder gut funktioniert. Aber dann für die klassischen Flash Jobs: Projekte von max. 2 Monaten Laufzeit mit starkem Termindruck und für gewöhnlich sitzt man dort als one-man-show und es geht am Ende nur um klickdibunti. Keine Donations werden getätigt, keine grösseren Firmen sprechen darauf an.
Warum sollten Opensource Projekte eine stabile API liefern? Am Ende zählt es eben wie schnell sie mit ihrer Software tolle Sachen liefern können um möglichst sich den Unterhalt mit dem Anwenden der eigenen Bibliothek zu verdienen (und nicht mit dem verbessern).
9. Jens Franke | October 20th, 2008 at 10:30 am
@Kris:
Danke für den Hinweis mit Pixel Bender - führe ich auf die derzeitige Unwichtigkeit bei mir zurück.
Zum Thema PV3D und Community bei Laune halten: Ich glaube das geht eher mit Qualität anstatt mit Quantität.
@Martin:
Interessanter Kommentar, den ich in Teilen unterschreibe. Opensource & Flash steckt ohne Frage noch in den Kinderschuhen.
Zu deiner Frage: “Warum sollten Opensource Projekte eine stabile API liefern?”
Anspruch an die eigene Arbeit? Und wenn man dieses Ziel nicht verfolgt, dann braucht man sie auch nicht allen zur Verfügung stellen.
Klar kann mal als Entwickler dann sagen, die API nehme ich nicht, aber manchmal ist man auch in einem Konstrukt, wo man diese Entscheidung nicht selbst treffen kann.
10. Martin Heidegger | October 20th, 2008 at 11:59 am
“Und wenn man dieses Ziel nicht verfolgt, dann braucht man sie auch nicht allen zur Verfügung stellen.”
Es gibt verschiedene Gründe warum man Opensource Software anbieten möchte:
*) um Ideen auszutauschen
*) aus Leidenschaft/Überzeugung
*) aus geschäftsstrategischen Gedanken ( mehr anlauf/ besserer Response - bessere zukünftige Integraton, etc. )
*) fürs Marketing
*) zur Bestätigung des eigenen Ego
sind imho die häufigsten. Bei einer API anbindung verhält sich das genauso.
Das man die API behält oder sich um Bugfixes kümmert ist nur in wenigen Fällen ein Kriterium( wenn man sich so die Gründe dafür das zu machen überlegt). Fürs Marketing brauch ich keine Qualtität, da brauche ich Effekte( damit Leute über mich/meine Arbeit reden). Wenn ich mein eigenes Ego bestätigen möchte dann kann es mir egal sein was alle anderen denken. Ich veröffentliche meinen Code - und aus. Beim Ideenaustausch ist es so das es ja nur Ideen sind die man offen legt. Bei den geschäftlichen Gründen gehts ums Geld und dann gehts drum wieviel man Ende des Tages eingenommen hat und nicht wen es ärgert das seine Wünsche befriedigt wurden. Klar es wift eventuell einen schlechten Ruf auf die Firma wenn sie Fehler nicht behebt die gefordert werden aber wenn das keine wirtschaftlichen Auswirkungen hat - who cares?
Adobe macht es schlecht vor: Erst machen sie eine AS1 - API an der sie immer ein bischen schrauben. Als kein Javascript2 kam bauten sie auf eigene Faust AS2 - das sie nach 2 Jahren wieder verwerfen ( und damit auch alle Bibliotheken, Opensource Projekte etc. ) . Das Problem mit AS3 ist das alle wissen das AS4 kommt und ein langjähriges Projekt irgendwie zum scheitern verurteilt ist.
Keiner kann sich auf die Basistechnologie verlassen deswegen ist auch ein Verlass auf die Bibliotheken. Aus wirtschaftlicher Sicht macht dass das Arbeiten kaum möglich. Deswegen behilft man sich mit den anderen Gründen, vorzugsweise Marketing weil da weiss man wies geht( Flash wurde ja durch Werbung gross )….
11. Jens Franke | October 20th, 2008 at 3:35 pm
“Das man die API behält oder sich um Bugfixes kümmert ist nur in wenigen Fällen ein Kriterium( wenn man sich so die Gründe dafür das zu machen überlegt).”
Ich verstehe Dich schon, aber mir ist es ein bisschen zu S/W und zu negativ formuliert. Ich möchte von den allgemeinen Formulierungen zurück zu PV3D kommen.
Ich finde es problematisch, wenn man auf Konferenz und in Blogs propagiert wie toll und einfach alles mit PV3D ist und man dann im produktiven Einsatz auf viele Probleme trifft, die es in Demo-Szenarien nicht gibt. Am Anfang fand ich das Projekt echt toll, aber inzwischen läuft es aus meiner Sicht in die falsche Richtung.
Da greift natürlich der Punkt der unsauberen API genauso wie auch der Punkt der schlechten Dokumentation. Aus meiner Sicht will das PV3D-Team das Ansehen der Community und das man ihre API nutzt, aber sie gehen den falschen Weg - zu viel Quantität und zu wenig Qualität. Wo wir wieder bei deinem Marketing-Punkt wären, den ich wiederum verstehe, aber ich bin immer jemand, der an das gute im Menschen glaubt.
12. Audiotool Hobnox - Franke&hellip | October 23rd, 2008 at 10:32 am
[…] das neue Audiotool von Hobnox hatte ich letzte Woche bei Jens Franke gelesen. Wow sieht gut […]
13. sascha/hdrs | October 24th, 2008 at 6:50 pm
Mensch Mensch Mensch seid Ihr alle mies gelaunt! Geht doch wieder zu Flash 5 zurueck, da hat sich niemand beschwert: alle wollten nur neue Features haben. Jetzt bekommen wir sie und die haelfte der Leute zereissen sie in der Luft! Ich bin sehr froh ueber die neuen Player-Features, insbesondere 3D! Sicherlich sind Bug-Fixes sehr wichtig aber mit denen allein kann man keine neue Player Version vorstellen. Zu der Sache mit den APIs gebe ich teilweise Recht. Aber wie erwahnt, da steckt Flash noch in den Kinderschuhen, das kommt schon noch. War es bei Java sofort so das alle eine reissfeste API anboten? Also Fuesse stillhalten und nicht gleich alles nieder machen! ActionScript ist eine wunderbare Platform!
14. Jens Franke | October 24th, 2008 at 8:52 pm
Hej Sascha,
ich danke Dir für deinen Kommentar.
Aus meiner Sicht hat sich der früher starke Wunsch nach Featuren ein wenig gelegt. Ich wünsche mir viel mehr, dass die vielen kleinen Probleme, die man seit Jahren mit zeitinsiven Workarounds umkurven muss, endlich einmal behoben werden.
Ich gebe Dir absolut Recht, dass das Marketing damit keine neuen Produkte verkaufen kann, aber das ist für mich keine Ausrede. Ich hätte kein Problem gehabt, noch 6 Monate auf die nächste Version zu warten, und sie hätten in der Zeit ein paar Bugs behoben. Stattdessen kündigt man groß an, dass die Auslieferung von CS4 doch noch früher als gedacht erfolgen kann. Das kann ich aus wirtschaftlichen Gesichtspunkten natürlich verstehen.
Auch finde ich es auffällig, dass nicht gerade viele sich auf die neuste Version stürzen - aber vielleicht ist das auch nur meine Wahrnehmung.
Du sagst ja, dass man nur mit neuen Featuren eine neue Player-Version vorstellen kann. Ich frage mich, welches Feature so stark ist, dass man einen Kunden überzeugen kann, den neusten Player einzusetzen. Allgemein zieht natürlich immer der Punkt Performance. Auch kann man den 3D-Aspekt anführen, wobei da natürlich die Frage im Raum steht, wo und wann macht der 3D-Einsatz Sinn und verbessert die Interaktion zwischen Mensch und Maschine.
Aus technischer Sicht freut mich der 3D-Support natürlich auch, PV3D braucht man somit für die einfachen Dinge nicht mehr anzuwerfen.
Dass das ganze API-Thema noch in den Kinderschuhen steckt und auch Java klein angefangen hat ist klar und wurde schon besprochen. Aber ich denke, dass man ruhig frühzeitig auf Probleme aus seiner persönlichen Sicht hinweisen kann und nicht die Füsse stillhalten muss.
Und ich gebe Dir recht, ActionScript ist eine absolut wunderbare Plattform, aber andere Plattformen entwickeln sich auch vorzüglich und somit macht man sich auch Gedanken um das geliebte Flash.
Euch allen ein schönes Wochenende
Jens
15. Martin | October 27th, 2008 at 12:47 pm
Was Open Source ActionScript betrifft würde ich Martin auch zustimmen. Das läßt sich wohl damit erklären, dass der “professionelle” Markt für AS-Entwicklung auf Kundenseite idR. von Art Directoren im Werbe-Umfeld bestimmt wird, von denen für technisch aufwendige Eigenentwicklungen wenig Begeisterung zu erwarten ist. Während bei Java wohl eher Informatiker oder Entschiedungsträger in den Chefetagen von Unternehmen den Rahmen vorgeben. Für
Aber was die Flashplayer 10 API angeht, so ist das ja doch eine andere Geschichte. Adobe hat - oder genauer: Tinic Uro hat - explizit auf den Wunsch der erwähnten “0,001% Entwickler” reagiert und hat das auch öffentlich so publiziert. Da ist es mir schon unverständlich, wieso solche gemachten Zusagen kommentarlos wieder geändert werden.
Auch wenn zuletzt einiges unter OS Lizenzen gestellt wurde, ist Adobe ja gerade kein Anbieter aus der Open Source Ecke. Insofern kann ich mir auch nicht vorstellen, dass die besagten Mängel am Player 10 nicht doch noch korrigiert werden. Immerhin wurde das Hobnox Audiotool ja von Adobe selber als beeindruckendes Beispiel für die Fähigkeiten des Players vorgestellt. Wenn eben dieses Beispiel am Ende doch nicht funktioniert, weil der Player nicht leistet, was er verspricht, wäre das eine klassische lose-lose statt einer win-win Situation.
16. Andreas | November 7th, 2008 at 12:31 am
Also für die Soundgeschichte fällt mir spontan folgendes Einsatzgebiet ein: bei Lernsystemen könnte man damit die Geschwindigkeit des Sprechers steuern, je nachdem wie es der Lernende gerne haben will!
salü
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackback this post | Subscribe to the comments via RSS Feed