Seaside 2.9 Alpha 3 veröffentlicht – Was heisst das für VA Smalltalk?


Zwar ist es wieder nur eine Alpha-Version, aber dafür eine recht interessante, die am Wochenende freigegeben wurde:

We’ve been pretty busy over the past two
months and you will notice some significant changes since the last
release. The two most notable changes involve returning responses and
using continuations with #call:.

We are especially proud of the high number of issues we could close (almost 100), most of them during the two sprints in Konstanz and Zug.

Neben einer ganzen Menge von Fehlerbereinigungen ist diese Version ein gewisser Meilenstein: Continuations sind nicht mehr Teil des “Core-Frameworks” und können bei Bedarf als Zusatzpaket “Seaside Flow” nachgeladen werden.

Was bedeutet es, wenn Seaside nicht mehr grundsätzlich mit Continuations arbeitet?
Zunächst mal, dass einige der bisher als magisch und mächtig gefeierten Methoden in WAComponent fehlen. Die Abbildung von Abläufen mit call: und answer: gehören da an erster Stelle dazu. Vor einigen Jahren haben wir Seasider call: und answer: für eine der heissesten Erfindung seit dem Einwegfeuerzeug gehalten, und nun sind sie nicht mehr Teil des Frameworks. Wie passt das denn zusammen? Nun, heutzutage sehen Web-Anwendungen einfach anders aus, als noch 2004 oder 2006. Man dragt und dropt wie der Teufel, doppelklickt und alles blinkt und wackelt, wenn man was im Browserfenster anfasst. AJAX ist das Stichwort, oder jQuery oder Scriptaculous., oder was auch immer, hauptsache, eine Web-Anwendung sieht aus, riecht und fühlt sich an, als wenn sie vor Ort liefe. Rich Internet Applications sind schick und manchmal auch deutlich besser nutzbar, weil sie dem Benutzer direktes Feedback zu seinem Tun geben. Aber sie durchbrechen das klassische Modell desseriellen Navigierens in einer Anwendung. Call und Answer waren (und sind) hervorragend dazu geeignet, eine Anwendung so zu schreiben, als wenn sie eine Abfolge modaler Masken wäre. Seaside Behandelt dann nicht nur den “Screen Flow” seriell, sondern verwaltet auch den Zustand der Anwendung transparent genau so, wie man sich das mit einem Back/Undo-Button wünschen würde. Gerade mal drei große Haken hat diese Sache:

  • Kaum eine Web-Anwendung, die nicht in Seaside geschrieben wurde (und das sind noch eine ganze Menge), behandelt den Back-Button in dieser Konseuquenz korrekt, und daher ist der klassische Web-Nutzer vielleicht etwas überfordert, wenns mal eine Anwendung “richtig” macht
  • Wenn man AJAX verwendet, manipuliert man das Modell der Anwendung unmittelbar, ohne dabei den Zustand der Anwendung in Continuations mit zu verwalten, d.h. all das Back-Button-Behandle wird mit AJAX sehr schnell ad absurdum geführt
  • Wenn man in modernen AJAX-Anwendungen den Back-Button drückt, ist sowieso völlig unklar was passiert (vielleicht übertreibe ich hier ein bisschen, aber mit einem Undo hat der Back-Button in einer modernen Web-Anwendung nicht viel zu tun). Also wird er heutzutage kaum noch verwendet.

Einige der Methoden, die auf call:/answer: aufbauen, sind ohnehin nicht sonderlich sinnvoll in hübschen Anwendungen nutzbar, z.B.  inform:
Was ist Seaside ohne Continuations noch wert?
Eine ganze Menge.  Seaside ermöglict die Erstellung von AJAX-Anwendungen mit Drag, Drop, Flip, Blink und Co., ohne dass man sich in die Tiefen der JavaScript-Programmierung begeben muss.Die Anwendung ist durchgängig in Smalltalk implementiert, mit allen Vorteilen, die sich daraus ergeben. Besonders für die Umsetzung bestehender Fat Clients, die im Intra- oder Internet verfügbar gemacht werden sollen, ist ein Großteil der Funktionalität unverändert weiter nutzbar. Aber auch für Neuentwicklungen ist der Einsatz von Smalltalk und Seaside attraktiv. Seaside ist eines der schnellsten und am besten Debug-bare Werkzeug zur Umsetzung von Web-Anwendungen. Mit oder ohne Continuations.

Was bedeutet das nun für VA Smalltalk Version 8?
Instantiations hängt im Zeitplan. Das ist nicht wirklich ein Geheimnis. Gerade die Erfordernisse von Continuations an die Virtuelle Maschine machen die Portierung von Seaside auf VA Smalltalk schwierig. Änderungen an der VM bedeuten natürlich auch, dass eine gigantische Menge an Testfällen abzuarbeiten ist, um sicherzustellen, dass sich die VM noch in allen anderen Situationen, die nichts mit Seaside und Continuations zu tun haben, genauso verhält, wie vorher.
Im Grunde könnte sich Instantiations nun ein Stück weit zurücklehnen, und die Verzögerungen im Zeitplan ein Stück weit aufholen. In einem ersten Wurf von Version 8 könnte eine Unterstützung von “Seaside-Core” auf Basis von Seaside 2.9 Alpha 3 geliefert werden, und der volle Umfang inklusive Seaside Flow könnte auf ein späteres Release verschoben werden. Version 8 bringt ja eine ganze Menge Neuerungen mit, die nichts mit Seaside zu tun haben: die neuen Browser, eine verbesserte Dokumentation, Erweiterungen der Web Services – Unterstützung usw.

Beschleunigt Alpha 3 nun das Erscheinen von VAST 8?
Um ehrlich zu sein: ich habe keine Ahnung. Ich denke aber, es gibt einige Argumente, die dafür sprechen könnten:

  • Das offizielle Erscheinen von Seaside 2.9 wird noch eine ganze Weile auf sich warten lassen.Die Alpha 3 bringt einige sehr grundlegenden API-Änderungen gegenüber Alpha 2 mit sich. Das ist gut, denn der Code wird deutlich konsistenter und vereinfacht damit die Entwicklung. Andererseits sind Teile dieser Änderungen auf einer Ebene, mit der man keinem Anwendungsentwickler intensiveren Kontakt wünschen möchte😉. Würde also V8 erst erscheinen, wenn Seaside 2.9 fertig ist, könnte vielleicht das Jahr 2009 ohne Release ins Land gehen…
  • Instantiations hat ja bereits vor langer Zeit angekündigt, in Version 8 möglicherweise eine Vorabversion von Seaside 2.9 zu liefern und nicht aufdie endgültige Version zu warten. Das ist gut für alle, die nicht unmittelbar mit Seaside arbeiten wollen, aber die anderen Neuerungen von V8 erwarten
  • Alpha 3 könnte nun diese Vorabversion sein, mit allen Haken, die das haben könnte. Auf der Issue-Liste des Seaside-Projekts steht ja noch einiges, was API-Änderungen mit sich bringen könnte. Das kann für den, der bereits frühzeitig eine produktive Software in Seaside umsetzen muss/möchte, Zusatzaufwand bedeuten. Allerdings ermöglicht ein VAST ohne Continuations bald, sehr viel schneller produktiv zu gehen, als wenn man auf den großen Wurf wartet.
  • Vielleicht ist das Vorgehen der Konkurrenz an dieser Stelle ganz sinnvoll, ein Feature zunächst in einem sog. Preview-Status herauszugeben, bevor es in einem Folgerelease in den Supported-Zustand übergeht. Schliesslich bekommt man so auch viel Feedback vom Markt und hat ein paar Gratis-Betatester. Man muss damit allerdings auch umgehen können… Seaside Alpha 3 könnte ein Preview Feature sein, dem eben Continuations fehlen.