CSS3 — Das ewig wuchernde Krebsgeschwür

Eigentlich ist es ein ganz normaler Vorgang. Er hat sich seit langem bewährt, er ist in unterschiedlichsten Projektplanungsmustern und -dogmen spezifiziert und er wird tausendfach gelebt.

Die Rede ist davon, eine Spezifikation …

Bei dieser Vorgehensweise handelt es sich um einen Standard, der letztendlich erfolgreich zum Ziel führt.

Das WWW-Konsortium hingegen schlägt bei CSS3 einen anderen Weg ein:

Sie benannten diese Spezifikation vollmundig, vergaben sogar eine Versionsnummer ("3") – aber sie werden niemals müde, sie ständig um- und neu zu schreiben.

Nach den vielen Jahren des Wartens auf die CSS3-Spezifikation hat es den Anschein, dass sie niemals final abgeschlossen werden wird. Und deshalb wird auch niemand jemals in der Lage sein, sie zu implementieren.

Hand auf's Herz: Kennen Sie auch nur einen einzigen Browser, der sämtliche CSS3-Spezifikationen vollständig implementiert hat?

Nein?

Kein Wunder, denn die CSS3-Spezifikation wird seit inzwischen genau sechs Jahren beständig fortgeschrieben und erweitert. Sie rennt den Implementatoren quasi stets davon.

Die CSS3-Spezifikation, so wie wir sie kennen, besteht inzwischen aus einer Medusenkopf-gleichen Anzahl an Unterspezifikationen, die alle separat weiterentwickelt und fortgeschrieben werden. Und es kommen ständig neue hinzu.

Es ist unmöglich, zu behaupten, man habe die CSS3-Spezifikation vollständig in seiner Anwendung (meistens Internetbrowser) implementiert, denn es existiert de facto keine Spezifikation, sondern es existieren bislang nur Entwürfe, Vorlagen und Ideen.

Was hat das für Konsequenzen?

Die Konsequenzen liegen so deutlich wie schmerzhaft auf der Hand:

Egal, welche CSS3-Eigenschaft Autoren in ihren Dokumenten auch verwenden – niemals können sie sicher sein, dass diese Eigenschaft auch nur auf zweien(!) der meistverwendeten Browser funktionieren wird, selbst wenn die aktuellste Version des Browsers vorausgesetzt wird.

Statt die vorgeschlagenen CSS3-Eigenschaften einzusetzen, nehmen Autoren deshalb die unglaublichsten Umwege in Kauf: Sie entdecken kauzige Workarounds, sie verwenden JavaScript-Code – oder sie resignieren und streichen CSS3-Eigenschaften und deren Möglichkeiten aus ihren Dateien.

Browser-Implementatoren zeigen sich ebenfalls deutlich irritiert von der Vorgehensweise des W3C

Da keine definitive CSS3-Spezifikation vorliegt, können Browser-Implementatoren nicht sicher sein, ob ihre Implementation einer CSS3-Idee Bestand haben wird. Deshalb verwenden Sie vorsichtshalber gar nicht erst den vorgeschlagenen Eigenschaftsnamen einer neuen CSS3-Idee, um später nicht in Kompatibilitätsprobleme zu geraten, falls sich diese Idee einmal wandeln sollte.

Um der Gefahr zu entgehen, durch die Implementation einer vorgeschlagenen CSS3-Idee zukünftig inkompatibel zu werden, verwenden Browser-Implementatoren, statt die vorgeschlagenen CSS3-Eigenschaftsnamen einzusetzen, ähnlich klingende CSS-Eigenschaftsnamen, denen sie ein herstellerabhängiges Präfix hinzufügen. Auf diese Weise machen sie darauf aufmerksam, dass sie den Ideen des W3C lediglich ihre Ideen einer Implementation temporär entgegensetzen und zur Verfügung stellen wollen.

Für Autoren wird dieses unfassbare Hin und Her zwischen den immer neuen Ideen des W3C und der Browser-Implementatoren zum Spießrutenlauf. Autoren müssen nun nicht mehr nur prüfen, ob eine CSS3-Eigenschaft überhaupt implementiert ist – sie müssen jetzt zusätzlich prüfen, ob außerdem des Weiteren eine temporäre Test-Implementation eben dieser CSS3-Eigenschaft existiert. Und wenn ja, dann müssen Sie zusätzliche Vorkehrungen treffen, den Besonderheiten dieser Test-Implementation schlussendlich auch gerecht zu werden.

Das Ergebnis ist CSS-Code, der überwiegend aus temporären CSS3-Eigenschaftsimplementationen der verschiedenen Hersteller sowie skurrilen Workarounds und Alternativimplementationen besteht (sogenannten "Polyfills").

Das ist Murks und in einem professionellen Umfeld nicht tragbar !

Es wird Zeit, dass jetzt die Arbeiten an Spezifikationen zu CSS3 endlich abgeschlossen werden und die Browser-Implementatoren Gelegenheit erhalten, die spezifizierten Eigenschaften schlussendlich und vollständig zu implementieren.

Es ist an der Zeit, dass aktuelle Browser endlich CSS3-konform werden können. Hierzu müssen sämtliche CSS3-Vorschläge abgeschlossen und finalisiert werden.

Niemand erwartet, dass CSS3 perfekt sein wird. Aber es muss endlich Schluss damit sein, dass das Ziel immer weiter in die Zukunft verschoben wird. Es wird sicher niemand ernsthaft etwas dagegen einzuwenden haben, dass spätere Änderungen in nachfolgende Versionen, wie CSS3.1 oder CSS4, einfließen werden.

Deshalb gilt der Appell an die verschiedenen W3C-Arbeitsgruppen, die verantwortlich sind für die vielen CSS3-Unterspezifikationen:

Macht endlich Schluss mit dem fortwährenden Brainstorming an CSS3 und finalisiert die CSS3-Spezifikation!

Gebt den Browser-Implementatoren endlich die Gelegenheit, CSS3 vollständig in ihre Browser zu übernehmen.


Axel Dahmen Soft- and Hardware-Engineering
03.08.2015 21:54