this collection of articles are written in German simply due to the fact, that they should become the documentation of my framework and it is much easier for me to describe the stuff in German.
Warum ?
Einer der Stärken von Smalltalk ist der hohe interaktive Grad der Entwicklung. Ein wenig anders sieht es aus, wenn man den gesamten Entwicklungszyklung betrachtet – bis hin zum Packaging.
In älteren Versionen (vor 8.52) von VASmalltalk war das Packaging von Seaside-Anwendungen ein Abenteuer und sehr mühsam. Ein Grund ist sicherlich, dass diese Quelltexte von Squeak/Pharo kommen und Referenzen in den Quelltexten beinhalten, die der Packager von VASmalltalk nur mühsam bearbeiten kann.
Da ich – für mich – zum Schluss gekommen bin, dass ich versuchen will, GUI Entwicklungen nur noch im Browser durchzuführen und auf die Entwicklung von Fat-Client-Anwendungen möglichst verzichten will musste ich irgendwie den Entwicklungsprozess unter VA beschleunigen und vor allem das Packaging vereinfachen.
Im Endziel soll ein System geschaffen werden, dass sich unter Windows wie eine native Anwendung installieren lässt, aber einen Browser zur Ausgabe benötigt – und als Einzelplatzanwendung taugt.
Zusätzlich soll es aber auch bei Bedarf hinter einem Apache geschützt unter Linux laufen können und für als Mehrbenutzersystem gelten können.
Wie schon in der Vergangenheit heisst das fuer mich: Headless-Packaging um “echte” Serveranwendungen zu bekommen.
Es sollten die Plattformen Linux/x86 und Windows unterstützt werden. Die Entwicklung findet i.d.R. unter Windows statt – die Programme laufen aber – produktiv – auf Linux/64Bit Servern im Internet.
Das Packaging wurde auf “IC”-Basis umgestellt und die Anzahl der Komponenten wurde radikal reduziert.
Das Umstellen auf IC’s hat den Vorteil, dass man sich nicht um das “Reducing” kümmern muss – es wird nichts beim Packaging rausgeworfen – alles bleibt drinne. “Tote” Referenzen gibt es dann nicht mehr.
Inhalt des Basis-IC
Es gibt ein “Basis”-IC, dass aus dem Grundsystem von Smalltalk und zusätzlichen Applications besteht:
- Base-Applications
- Datenbanken (ODBC, DB2, Oracle)
- TCP, Sst-Framework
- Compiler, Management
- XML
Zusätzlich zu den Paketen von Instantiations kommen dann noch eigene Pakete und von Squeak portierte Applikationen. Z.B.:
- Seaside, jQuery, Javascript, jQueryMobile
- CouchDB, JSON, ICU, SQLite, PostgreSQL, FreeImage
- Glorp, Announcements, EMan
- PDF und Postscript Support
- TNetString, MessagePak, REST
Wenn man das dann alles zusammenwirft, bekommt man ein Basis-IC, von dem man (vergeblich
) hofft, dass es sich nicht so stark ändert. Es bildet aber eine Grundlage, mit der man so manches IT-Problem lösen kann.
Die Grösse des ICs bleibt im normalen Rahmen und zusätzliche Arbeiten zum Reduzieren der Dateigroesse scheinen mir daher unnötig.
Die Resultate bei beiden Plattformen:
- win_base.ic (13 MByte)
- win_seasidestarter.ic (17 KByte)
oder unter Linux:
- unx_base.ic (11.5 MByte)
- unx_seasidestarter.ic (14 KByte)
.
SeasideStarter IC
Das IC “seasidestarter” habe ich bereits früher vorgestellt. Es soll den Adapter starten, so dass Seaside arbeiten kann und zusätzliche ICs laden – aus denen dann die eigentliche Anwendung heraus gestartet wird.
Auch wenn dieses IC ein Leaf-IC ist, wird es so gepackt, dass ein rauswerfen unterbunden wird.
Config-Maps und Fixes
Die Version 8.52 glänzt nicht gerade, und es sind bereits zahlreiche Bugfixes erschienen, um Features überhaupt zum Laufen zu bekommen bzw. um Fehler zu beheben. Wieder einmal – und das meckere ich seit Jahren an – hat ein aktiver Kunde erheblich Probleme oder Mühen, sich über den aktuellen Stand an Bugfixes zu erkundigen. Etwas was auf open-source Projekten inzwischen üblich ist – kommerzielle Anbieter tun sich schwer damit.
Daher habe ich für das Basis-IC neue ConfigMaps erzeugt und den von mir benötigten Kram hineinkopiert mit den mir bekannten Fixes. Bei einer neuen Version von VA bedeutet das leider wesentlich mehr Arbeit, da das System nun vollständig durch meine ConfigMaps beschrieben werden und nicht unbedingt durch die Maps von Instantiations – aber ENVY ist dafür ja sehr gut zu gebrauchen.
Das alles hat noch nichts mit Portobello zu tun – aber diese Arbeiten bilden die Basis für das Portobello Framework.