Ich blicke einfach nicht mehr durch!
Ich erinnere mich an den Tage, an denen man in C und einer schönen GUI seine Forms designen konnte, und eine schöne Programmsprache hatte, die alles konnte was man brauchte.
Stattdessen sehe ich jetzt bei der Web-Entwicklung nur noch haufenweise JavaScript, CSS, PHP, SQL, XML, JSON – vor allem aber ein XHTML-Gewurschtle, dass mir das Herz bricht: z.B. Tables als Buttons in der YahooUI um Rendering-Bugs in Browsern zu umehen.
Bei Interface-Widgets in Web-Applikationen kommt man zwangsweise immer wieder auf das CSS/XHTML/JavaScript Grundgerüst des Widgets zurück. Immer wieder stößt man endlose Bibliotheken, die nur immer wieder ein und das selbe Ziel haben: eine Interface Bilbiothek!
Wo bleiben da die Konzepte hinter dem semantische Web? Trennung von Layout und Inhalt, oder Programmierung und Inhalt? Was für eine spielt der Inhalt der Seite noch, wenn eh alles dynamisch verändert wird? Warum fühle ich mich gerade irgendwie so an den Anfang zurückversetzt?
Web-Applikationen werden immer aufwändiger
AJAX RSS-Reader, AJAX-Sonstwas – der Sinn geht einfach verloren!
Welchen Sinn macht es eine Web-Applikation wie einen Feed Reader zu programmieren, wenn ich damit die Grundprinzipien von XHTML und CSS sowieso wieder verletze? Plötzlich hab ich nur noch ein paar DIVs ohne Inhalt in meine XHTML Grundgrüst. Darüber freut sich Google! Oder ich schlage mich mit CSS rum und setze wieder Tabellen in Frameworks wie qooxdoo oder der Yahoo UI (bzw. YUI Ext) ein, nur damit es Cross-Browser lauffähig ist!
Zudem habe ich derzeit enorme Voraussetzungen an den Nutzer. Einwandfrei funktionieren die benutzen Bibliotheken nur in Mozilla Firefox. Dazu kommen dann noch so Sachen wie CSS und irgendwelche Methoden für DOM-Objekte, die z.B. im Internet-Explorer fehlen. Insgesamt habe ich also einen Haufen Dinge, bei denen ich nicht weiß, wie stark sie beim Nutzer unterstützt werden. Da könnte ich doch gleich einen spezielle Browser-Version voraussetzen – und wir wären wieder in den Jahren der höllischen Dominanz des MSIE!
Auf was setzen AJAX-Applikationen?
- XHTML dass die Altlasten von HTML mit sich herum trägt und immer noch keine anständige Trennung von Inhalt und Layout hinbekommen hat. Trotzdem kann man erstmal gut damit leben, solange keiner den Document Type vergisst.
- CSS mit dem wir Webseiten ein einfaches und schnelles Layout geben können. Das Block-Modell der Browser-Darstellung ist dabei eigentlich sehr elegant und erinnert an Absatz, Bild und Fließtext wie in einem Publishing-Tool. Trotzdem fehlen hier noch Dinge wie flexible Layout-Grids und verlässliche Unterstützung der Browser.
- DOM/JavaScript was wohl einzig alleine im Firefox gut implementiert ist, und sich kaum woanders schöner debuggen lässt. Trotz vieler Web 2.0-Frameworks ist in JavaScript zu programmieren schöner geworden, nicht aber mit einer echten statischen Programmiersprache zu vergleichen.
- XSL/T und XPath mit dem sich XML zu XHTML, SDL-FO oder sonst etwas transformieren lässt. Insgesamt eine sehr umständliche Sprache. Ehrlich gesagt finde ich es aber schneller mit einer Template-Engine, z.B. meine XSL-FO zu generieren. Hier tritt die Template-Engine klar anstelle der XSL-Transformation. Im Bereich JavaScript blieben die Sprachen jedoch erstmal weiter außen vor.
Warum plage ich mich also um Unterstützung der ganzen Anforderungen einer dynamischen Plattform ab, um „scheinheilig“ mit Konzepten von Standards zu arbeiten, gegen die ich wegen der Konzeption des Projektes sowieso schnell verstoßen werde?!
Es handelt sich schließlich um eine Applikation, die sicherlich nicht von einer Suchmaschine abgegrasst werden soll, und ein Ding was „nicht im Netz steht“ sondern auf meinem lokalen Rechner ausgeführt werden soll!
Unterscheidung der Typen von Web-Seiten
- Web-Seiten: Hier geht es klar um den Inhalt. Eine Web-Seite ist die digitale Form einer Zeitung oder eines Magazines. Natürlich kann dies durch optionale Inhalte aufgelockert werden. Die optionalen Inhalte (Flash, Videos), dürfen aber nicht Basis der Webseite sein, und dürfen auch ruhig kleinere AJAX-Widgets umfassen.
Trotzdem wichtig: maschinell lesbar, semantisch korrekt, Inhalt und Layout getrennt, abwärts kompatibel zu Handies usw.)
- Web-Präsentationen: hiermit bezeichne ich meist Flash-Seiten, die erstellt wurden, um das Image einer Firma zu vermarkten. Web-Seiten, die komplett in Flash gemacht wurden, bezeichne ich auch als Präsentation – immerhin gibt es Standards um den Inhalt der Seite accessible zu machen. (aber hauptsache die Seiten machen was her!)
- Web-Applikationen: Feature Rich Applications, bei denen es hauptsächlich um Funktion und Nützlichkeit geht, die aber trotzdem einfach über eine Web-Oberfläche geladen und gestartet werden sollen, und mit Servern kommunizieren sollen. Zudem verfügen über Features, wie man sie von Webseiten kennt.
Hier gehen also Web-Applikation – und damit meine ich so etwas wie Feed-Reader, Online-Tabellenkalkulation – klar weg vom klassischen Erlebnis einer Webseite. Es sind keine Webseiten mehr, sondern Applikationen, die auf Webseiten laufen.
Und leider bestehen diese Applikationen im AJAX-Zeitalter oft aus mehreren 100KB großen JavaScripts und vielen CSS-Dateien, die die Browser in die Knie zwingen!
Alternativen wären klar Java, (z.B. bei ThinkFree-Office eingesetzt), was aber schwer und bestimmt nicht schnell zu programmieren ist, und wohl aus Gründen der Geschwindigkeiten leider immer noch – oft aber ungerechterweise – ausscheidet. Zudem ist die Verbreitung bei Java leider doch sehr gering.
Und dann hätten wir auch noch Flash, bei dem ich vieles voraussetzen kann. Trotzdem hat Flash immer noch Probleme, wenn es um SVG, XSLT, JavaScript und HTML geht weil es wie Java auch einfach ein Browser-Plugin ist. Sozusagen also eine virtuelle Maschine, in der allesausgeführt wird. Und eigentlich sollte es ja im Browser laufen, und nicht in einer VM die im dem Browser läuft.
Der Sinn der XML-Technologie war es immer, die Standards miteinander zu vernetzen, und flexibel nebeneinander oder miteinander benutzen zu können. Eigentlich wäre die Anforderung so, dass es sich um Applikation handelt, die von den Standards des Webs profitieren sollte!
Ein Standard für Web Applikationen muss her!
Ich brauche also eine Sprache, die mir ermöglicht innerhalb eines Browser den Funktionsumfang einer Desktop-Anwendung zu haben – nur ins Netz verlagertund aus dem Browser heraus ausführbar. Und am besten auf XML-Basis!
Sicherlich fällt einem da erst einmal .NET ins Auge, dass aber hautpsächlich erst einmal nur als properitärer Windows-Standard eben nur unter Windows arbeitet (abgesehen von Mono), und dann eben nicht im Browser ausgeführt wird, und somit aus sicherheitstechnisch schon wieder höchst suspekt ist. Zudem laufen die dazugehörigen XML-Standards der Windows Windows Presentation Foundation (WPF) wohl jetzt nur noch unter Windows Vista einwandfrei.
Dann haben wir Adobe Apollo was mit seiner Konzeption genau die Lücke füllt, und von mir deswegen mit sehr viel Potential gesehen wird. Trotzdem ist es in erster Line eine Laufzeitumgebung, die erstmal installiert und an die Leute verteilt werden muss. Schließlich will Adobe die konventionellen Hürden des Browsers brechen.
Und wir haben XUL/XBL was Mozilla in allen seinen Projekten einsetzt, und zu mindestens innerhalb von Gecko-Browsern genau unseren Anforderungen entspricht. Hiermit ist es kein Problem HTML oder SVG Grafiken anzuzeigen oder sonst etwas einzubinden.
Der beste Beweis, dass die Sprachen funktionieren ist aber der Browser Mozilla Firefox selbst, der hauptsächlich auf der Technologie aufbaut. Sogar Microsoft reagierte darauf seiner abgekupferten Variante XAML
Leider aber reagiert das W3C auf die Anforderungen modernen vernetzter Web-Applikationen nicht rechtzeitig oder zu langsam (siehe hier), und Mozilla tut auch nicht gerade viel um XUL zu standardisieren.
Dennoch ist die OS-Gemeine mit Projekten wie WAML oder Backbase vertreten. Beides sind zwar schöne Ansätze, basieren letztendlich wieder bei auf der selben alten Soße.
Und dann gibt es neben dem eigentlichen XUL noch WhatWG, in dem Hoffnung zu sehen ist.
Fazit
Ich liebe das Web 2.0. Für kleine Webseiten ist eine Auflockerung mit AJAX sehr wünschenswert, dennoch ist Standard-Konformität und Barrierefreiheit ein absolutes Muss, wenn man Webseiten gestaltet.
Dennoch sprechen wir von Web-Applications und da würde ich derzeit trotz aller Liebe zum W3C und Standards auf Flash setzen.
Zum einen, da es mir Frust erspart, und zum anderen da ich unter Adobe voraussetzen kann, dass es auch noch in ein Paar Jahren aktuell sein wird, wenn Mozilla Firefox von Safari auf Windows und Opera X stark unter Druck gesetzt wird – auch ja, der MS Internet Explorer müsste dann wohl auch immer noch unterstützt werden.
Ich hoffe jedenfalls das Microsoft nicht sein XAML standardisieren will…