Analyse

Webentwicklung: Eingebundene JavaScript-Libraries werden so gut wie nie aktualisiert

(Foto: Shutterstock)

Eine Cloudflare-Untersuchung fördert zutage, was Webentwickler schon immer wussten. Einmal eingesetzte JavaScript-Bibliotheken bleiben dauerhaft ohne Updates.

Der CDN-Anbieter Cloudflare thematisiert ein Phänomen, das Entwicklern nicht neu sein dürfte. Haben Entwickler erforderliche Bibliotheken wie jQuery einmal im Head der jeweiligen Website verlinkt, bleiben sie in der verlinkten Version dauerhaft in Betrieb. Eine Update-Strategie gibt es in der Regel nicht.

Der statische Zustand gängiger JS-Bibliotheken

Cloudflare konnte das anhand der jQuery-Bibliothek und der Animations-Library Tweenmax über den Hosting-Service CDNJS belegen. Bei beiden Bibliotheken zeigte sich, dass alte, auch sehr alte Versionen nach wie vor in nennenswertem Umfang Requests erhalten.

Zwar konnte Cloudflare stets auch steigende Nutzungszahlen für die jeweils aktuellen Versionen feststellen, mit diesen steigenden Zahlen gingen jedoch keine sinkenden Werte bei alten Versionen einher. Das bestätigt den Eindruck, dass einmal implementierte Bibliotheken auf ewig, zumindest bis sie aus anderen Gründen dysfunktional werden, im Projekt verbleiben.

Erklärungen bietet Cloudflare nicht, die folgenden Faktoren könnten aber ausschlaggebend für das Phänomen sein.

jQuery: Omnipräsente JavaScript-Bibliothek. (Screenshot: t3n)

Die 3 Möglichkeiten, eine JS-Bibliothek einzubinden

CDNJS (also Content-Delivery-Network für JavaScript) ist ein Alternativangebot etwa zum Google-CDN. Der Unterschied besteht in der Vielfalt gehosteter Bibliotheken, die bei CDNJS größer ist.

Das CDNJS erlaubt es Entwicklern, beliebte JavaScript-Bibliotheken über einen Link zum CDNJS einzubinden. Dabei werden jedoch alte Versionen nicht gegen neue ersetzt, sondern die Versionshistorie bleibt insgesamt verfügbar.

Die Alternative zu einem CDN besteht darin, die erforderlichen Bibliotheken auf dem Webserver des Projekts abzulegen und von da einzubinden oder per Link auf das offizielle Repository der Bibliothek zuzugreifen, was indes nicht jede Bibliothek erlaubt oder überhaupt vorsieht.

Das Problem: Set it and forget it

Die dargestellten Optionen zeigen bereits das Problem. Einmal eingebundene JavaScript-Bibliotheken sind statisch verknüpft. Wenn die Bibliotheks-Entwickler nun ein Update herausgeben, werden die teils millionenfach eingebundenen Libraries nicht automatisch aktualisiert. Vielmehr müsste sich der Webmaster selbst darum kümmern.

Geringe Update-Motivation aus 2 Gründen verständlich

In klassischen Erstellungsprozessen kommt es dabei im Wesentlichen zu zwei Problemen. Häufig wird der Entwickler für die Bereitstellung einer Website bezahlt. Einmal fertig und übergeben, kümmern sich weder Kunde noch Entwickler darum.

Das zweite Problem besteht darin, dass es im Zuge des Updates von JS-Bibliotheken durchaus zu sogenannten Breaking Changes kommt. Das bedeutet, dass die aktualisierte Bibliothek weitere Änderungen an der Website erforderlich machen würde, damit sie wie zuvor funktioniert.

Gerade dieser zweite Punkt lässt sich Kunden zumeist nicht begreiflich machen. Sie haben für eine Website bezahlt, die funktioniert und sollen nun für Anpassungen dafür bezahlen, dass sie weiterhin funktioniert wie zuvor. Der Entwickler seinerseits ist auch nicht übermotiviert, Änderungen vorzunehmen, die zu seltsamem Verhalten vormals funktionaler Prozesse führen können.

Nachteile von CDN und anderen Dritt-Hostern

Für die Einbindung per CDN (Content Delivery Network) oder über das offizielle Projekt, sofern dieses das überhaupt zulässt, entscheiden sich Entwickler, die im Kundenauftrag arbeiten, ebenso ungern. Denn ein CDN oder sonstiger Hoster ist immer ein Dritter, für dessen reibungslose Funktionalität keine Gewähr besteht. Wieso sollte der Entwickler dieses Risiko eingehen, zumal die gängigen JavaScript-Bibliotheken von ihren Größen her den CDN-Einsatz in keiner Weise nahelegen?

Für den Entwickler sogar der schlimmste Fall wäre dabei eine automatische Einbindung der jeweils aktuellsten Version einer Bibliothek. Damit verliert er jede Kontrolle über die Uptime-Prognose der von ihm betreuten Websites. Wer will schon vom Kunden nachts um drei aus dem Bett geklingelt werden, weil dessen Onlineshop den Geist aufgegeben hat?

Aktuelle Bibliotheken nur bei Groß- und Eigenprojekten auf der Agenda

Anders sieht all das aus, wenn Entwickler ihre eigenen Projekte betreuen oder als Angestellte für den Betrieb einer oder mehrerer Websites zuständig sind. Auch hier wird eine externe Einbindung schon wegen der zusätzlichen Requests, der nicht zu kontrollierenden Latenz und der möglichen Sicherheitsproblematik nicht die erste Wahl sein.

Aber auf der To-do-Liste wird ganz sicher stehen, dass die eingesetzten Bibliotheken zumindest in definierten zeitlichen Abständen auf Aktualität geprüft und im Zweifel angepasst werden.

Wie geht ihr mit dem Thema um?

Passend dazu: Konkurrenz für JavaScript? W3C erklärt Web Assembly zum Web-Standard

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

4 Kommentare
Martin Wunderlich

Exakt die bei „Geringe Update-Motivation aus 2 Gründen verständlich“ genannten Gründe sind dafür verantwortlich. Und wie auch geschrieben, für Entwickler keine überraschende Nachricht.

Abseits davon bin ich mir aber auch unschlüssig, was ich von der immer mehr zunehmenden Updateflut halten soll, sowohl in der Webentwicklung als auch sonst im Leben. Es ist zwar schön, wenn Software regelmäßig weiterentwickelt wird. Aber wenn man dann gefühlt eine lebenslange Verpflichtung zu Zeitaufwand für Updates eingeht, überlegt man es sich irgendwann zweimal, ob man das wirklich will.

Antworten
Desgin-Hacker

Seitdem es beim npm nach jedem install/update den audit gibt, achte ich zumindest darauf, dass hier keine Vulnerabilities verbleiben. Das betrifft dann natürlich auch nur Projekte, an denen ich aktiv etwas mache oder die ich betreue. Für PHP gibt es den https://github.com/sensiolabs/security-checker, den man via Cronjob regelmäßig laufen lassen kann. So kann man sich per E-Mail informieren lassen, wenn ein package verwundbar ist. Das ist insbesondere für Custom-Entwicklungen, bei denen es keine regelmäßigen Updates der Codebasis gibt, wichtig. Vielleicht sollte ich mir soetwas auch für die npm dependencies einrichten

Antworten
tom

Ich habe in den letzten Wochen im Rahmen einer dieser unbeliebteren Wartungsaktionen das (bei mir immer statische) Custom jQuery durch das von WP mitgelieferte ersetzt da dort die Versionen mittlerweile neuer sind. Leider ist aber ein extra Request für jQuery Migrate dabei, das ich im Frontend nicht benötige.

Prinzipiell sehe ich bei manchen rein Funktionalen Libs wie jQuery (je nach verwendeten Funktionen) weniger dringenden Bedarf für Updates als bei API-Libs zu Drittanbieter-Services. Da hier mehr sensible Daten unterwegs sind.

Antworten
Tom Keyfuchs

Ein Punkt der in dem Artikel vergessen wurde, ist das Thema Datenschutz. Bei der Einbindung von externen Librarys muss man das in der Datenschutzerklärung aufnehmen, die Einwilligung des Users einholen (IP als personenbezogene Daten) und dann gehen sie Daten oft in die USA. Also eher nicht empfehlenswert.

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung