Eine Abhängigkeit ist fremder Code, ohne den dein Projekt nicht läuft. Jede Bibliothek, die du einbindest, wird zu einer, und sie bringt meist eigene mit.
- Abhängigkeit
Fremder Code, auf den ein Projekt angewiesen ist, damit es läuft.
Beispiel: „Das Projekt hat vierzig Abhängigkeiten, von denen wir sieben selbst ausgesucht haben.“Auch: Dependency.
Abgrenzung zur direkten und zur mittelbaren Abhängigkeit: Direkt ist, was du selbst eingebunden hast. Mittelbar ist, was deine Bibliotheken ihrerseits mitbringen. Die zweite Gruppe ist fast immer die größere.
Warum aus einer vierzig werden
Jede Bibliothek, die du einbindest, bringt ihre eigenen mit, und die wiederum ihre. Aus sieben Einträgen, die jemand bewusst ausgewählt hat, wird so ein Baum mit mehreren hundert Paketen, von denen niemand im Projekt je gehört hat.
So ist das System gebaut. Es heißt aber, dass die Frage „welchen fremden Code führen wir aus“ sich nur noch aus der Werkzeugkiste beantworten lässt und längst nicht mehr aus dem Gedächtnis.
Was die Versionsnummer verspricht
Die meisten Pakete folgen der Semantischen Versionierung mit drei Stellen. Die letzte steigt bei Fehlerbehebungen, die mittlere bei neuen Funktionen, die verträglich bleiben. Die erste steigt laut Regelwerk immer dann, „wenn API-inkompatible Änderungen in die öffentliche API eingeführt werden“.
Eine Versionsnummer ist damit ein Versprechen über Verträglichkeit und kein Datum. Eine Ausnahme nennt das Regelwerk selbst: Bei einer führenden Null „können Änderungen in jeder denkbaren Form und zu jeder Zeit auftreten“. Wer ein Paket in Version 0.x einbindet, bindet etwas Unfertiges ein.
Was daraus für ein Projekt folgt
Abhängigkeiten veralten, auch wenn niemand etwas anfasst. Eine Website, die drei Jahre unberührt läuft, hat drei Jahre Sicherheitsaktualisierungen nicht bekommen. Deshalb gehört die Pflege in den laufenden Betrieb und nicht in den nächsten Relaunch.
Der zweite Punkt betrifft die Auswahl. Jedes Paket, das du dir sparst, musst du später nicht aktualisieren. In unseren über 2.500 Website-Projekten sind die langlebigsten die mit den wenigsten Einträgen in der Paketliste.