Browserkompatibilitäten und Gerätetests – ein Essay

Das Thema ist fast so alt wie die Webentwicklung selbst: welcher Browser stellt was wie dar. Oder so ähnlich. Browser sind Softwareprogramme, Softwareprogramme sind fehlerhaft, Browser sind fehlerhaft. Alle Browser sind fehlerhaft. Ja, ich höre Aufschreie in der Gemeinschaft, dass dieser oder jener Browser diesen oder jenen Fehler hat oder dieser oder jener Browser den Fehler nicht hat und der Pflaumenbrowser überhaupt der Beste ist. Darum geht es nicht.

Wir Webentwickler schreiben Programmcode (HTML, XHTML, SVG, CSS, Javascript und noch einige andere), die von den Browsern eingelesen, interpretiert und mehr oder weniger korrekt dargestellt werden. Hierfür gibt es Standards, die vom W3C herausgegeben werden. Das Ziel dabei ist, dass auf allen Geräten und darstellenden Programmen das Ergebnis im Idealfalle identisch ist. Dann kommt noch dazu, dass jeder Hersteller von Geräten mit seiner Software noch irgendwelche Extrasüppchen kocht, also Features einbaut, die absolut wegweisend sind und von denen jener Hersteller glaubt, dass bald alle Hersteller dieses Feature einbaut. Diese Features nennen sich dann defacto Standard. Oder so ähnlich.

Die Firma Microsoft ist so ein Kandidat für Extrasüppchen und für Fehler. Die Internetexplorerversionen enthielten zum Teil katastrophale und grundlegende Fehler, die die gesamte Entwicklung von gestalteten Internetseiten geradezu um Jahre zurückgeworfen haben. Durch seinen hohen Marktanteil waren wir Webentwickler stets gezwungen um diese Fehler herum zu programmieren. Es ging so weit, dass manchmal zwei Versionen programmiert werden mussten. Das ist etwas besser geworden. Dafür hat die Gerätevielfalt zugenommen. Wir programmieren heute nicht mehr für “Netscape Navigator oder Internetexplorer”, wir programmieren für hunderte bis tausende verschiedener Geräte, Programme und Programmversionen. Denn die alten Geräte und Programme bleiben lange in Dienst. Es ist zwar glücklicherweise nicht die Regel, aber teilweise werden zehn Jahre alte Programme verwendet, um im Internet aktuelle Dinge abzurufen. Vor zehn Jahren gab es weder Smartphones noch Tabletcomputer.

Wie geht man nun als Entwickler mit dieser Aufgabe um? Niemand hat hunderte Geräte zur Verfügung, mit denen er testen kann, ob eine Webseite sich so verhält wie erwartet. Hierzu gibt es glücklicherweise Dienste, die uns dabei helfen. Browserstack zum Beispiel. Dann kommt die nächste Frage: bis zu welchem Gerät wird optimiert? Wie hoch darf der Aufwand sein, um beispielsweise für Safari 4 (das Programm erschien im Juni 2009) optimieren? Safari 4 unterstützt beispielsweise flexbox nur rudimentär, Inline SVG gar nicht. Oder Internetexplorer 7? Das Programm erschien im Oktober 2006. Schon fünf Jahre später startete der Hersteller eine Kampagne, um die Nutzerquote der Vorversion auf unter 1% zu bringen (Wikipedia).

In der Praxis ist häufig die Frage “welchen Browser benutzt der Kunde?” Dabei sind öffentliche Stellen zumeist im Hintertreffen, da dort viele alte Geräte im Einsatz sind und diese nicht gepflegt werden. Nun gibt es verschiedene Ansichten, die alle ihre Berechtigung haben. Der Kunde sagt: es muss auf meinem Gerät alles top funktionieren. Der Kunde sagt aber auch: die Website muss die neuesten Features unterstützen. Das war beispielsweise in den 80er Jahren das <blink>-Tag. Aber was nun, wenn ein älteres Gerät das <blink>-Tag nicht unterstützt? Dann geht die Sucherei los. Gibt es jemanden, der eine Bibliothek geschrieben hat, die dieses Feature auch auf älteren Geräten simuliert. Nach zwei bis drei Stunden Sucherei und ausprobieren weiß man dann: es gibt nichts brauchbares. Also die Frage: selber schreiben? Wären ungefähr zehn Stunden Arbeit. Wenn der Kunde die Rechnung sieht, fällt er in Ohnmacht.

Meine Devise heißt in diesen Fällen: Offenheit gegenüber dem Kunden. Ich mache möglich, was mit vertretbarem Aufwand geht. Wo der Aufwand nicht mehr vertretbar ist, schlage ich dem Kunden eine Lösung vor, die zumindest eine Bedienbarkeit der Website sicher stellt – auch auf alten Geräten.