Die Node.js-Laufzeitumgebung wird bei Teams, die dynamische, serverseitige Webanwendungen erstellen müssen, immer beliebter. Node.js wird derzeit von der OpenJS Foundation verwaltet, hat fast 2.500 Mitwirkende und ist das am schnellsten wachsende Open-Source-Projekt mit bisher mehr als 1 Milliarde Downloads.
Seit seiner Veröffentlichung im Jahr 2009 verwenden viele große Organisationen Node.js, um Unternehmensanwendungen zu erstellen und die Anwendungsleistung zu verbessern. Eines von ihnen ist PayPal, das die Antwortzeiten für seine Seite um etwa 35 % reduzierte, als es Node.js einsetzte. Zu den weiteren Nutzern von Node.js gehören IBM, NASA, Uber, Netflix und sogar Microsoft.
Obwohl sich Node.js zur bevorzugten Webserver-Entwicklungssprache entwickelt, sollten sich die Nutzer bewusst sein, dass es bei Node.js Lizenzierungs- und Sicherheitsüberlegungen gibt.
Was ist die Lizenzierung von Node.js?
Node.js verwendet eine permissive MIT-Lizenz für die Hauptbibliothek. Die MIT-Lizenz gilt für alle Teile des Node.js-Moduls, die nicht von außen gepflegt werden.
Zusätzliche Lizenzen, die für die übrigen Bibliotheken von Drittanbietern gelten, sind die Zero Clause BSD-Lizenz und die ISC-Lizenz, wobei die vollständige Lizenzdatei hier verfügbar ist.
Diese Lizenzen erlauben es jedem, die Software jederzeit zu verwenden, zu verändern und weiterzugeben, wobei lediglich eine Namensnennung erforderlich ist und die Mitwirkenden entschädigt werden. Im Vergleich zur GNU GPL verlangt die MIT-Lizenz von den Entwicklern nicht, dass sie ihren eigenen Quellcode zur Verfügung stellen, wenn sie ihre Software weitergeben.
Welche Lizenzierungs- und Sicherheitsrisiken bestehen bei Node.js?
Node.js verwendet einen Paketmanager (npm), der mehr als 1.000.000 Pakete bereithält. Die Entwickler-Community für Node.js ist eine der produktivsten und bis 2019 ist die npm-Plattform um 250 % gewachsen. Eine der Herausforderungen für Entwickler mit Node.js-Sicherheit ist es, sicherzustellen, dass jedes Paket und alle verknüpften Abhängigkeiten, die in der Produktion verwendet werden, regelmäßige Updates und Patches erhalten.
Entwickler müssen alle Paketabhängigkeiten regelmäßig überprüfen, um neu entdeckte Schwachstellen zu finden. Bei der Erstellung neuer Funktionen müssen die Entwickler sicherstellen, dass sie sichere Pakete verwenden und alle bekannten Schwachstellen patchen, bevor sie ihren Code veröffentlichen.
Wie viel von der Node.js-Lizenzierung ist Open Source?
Unternehmen lieben das Node.js-Lizenzmodell, da es ihnen erlaubt, die Codebasis zu forken, ihre eigenen serverseitigen Schnipsel zu erstellen und ihre verknüpften Pakete nur bei Bedarf zu aktualisieren. Permissive Lizenzen geben Teams die Möglichkeit, ihre Codebasis in der Zukunft proprietär zu machen, im Gegensatz zum Copyleft-Prinzip der GNU GPL.
In Bezug auf die Lizenzierung müssen Entwickler wissen, welche Softwarelizenzen ihre Pakete verwenden, da es viele GPL-Pakete auf npm gibt. In einigen Fällen werden Entwickler das gleiche Paket unter einer kommerziellen Lizenz anbieten, was die Auslösung der Reziprozitätsklausel in der GPLv3 verhindern würde.
Welche Vorteile bietet das Node.js-Lizenzmodell?
Die Debatte über Permissiv- oder Copyleft-Lizenzen wird weitergehen, aber Node.js scheint zu beweisen, dass kommerzielle Interessen die Zusammenarbeit nicht behindern müssen. Für Teams, die in streng geheimen Umgebungen arbeiten (wie die NASA), haben sich Node.js und das npm-Ökosystem als wertvolle Ressource erwiesen. Mit einem Modell, das es den einzelnen Teams ermöglicht, zu entscheiden, ob ihr gesamter Quellcode verfügbar sein soll oder nicht, bietet Node.js den Nutzern ein Höchstmaß an Freiheit.
Zu den Entwicklungsvorteilen von Node.js gehören auch:
- Bietet eine serverseitige JavaScript-Programmierlösung
- Bleibt sowohl in horizontaler als auch in vertikaler Richtung hoch skalierbar
- Gibt Entwicklern eine einzige Programmiersprache für Front- und Back-End-Anwendungen
- Erhöht die Anwendungsleistung mit nicht blockierenden E/A-Operationen
- Unterstützung von Branchenführern mit Vertretern in der Node.js Foundation
Kann man Node.js lizenzierte Pakete in kommerzieller Software verwenden?
Wenn ein Team Node.js herunterlädt und modifiziert, hat es die Freiheit, seine Version der Software jederzeit urheberrechtlich zu schützen und eine restriktivere Lizenz auf seine eigene Arbeit anzuwenden.
Die meisten Node.js-Projekte bleiben quelloffen und Unternehmen nutzen es für Frameworks, Bibliotheken und Tools. Für alle Teams, die von npm stammende Pakete verwenden, dürfen keine wechselseitigen Lizenzen in den Modulen enthalten sein (sofern nicht beabsichtigt). Jedes verlinkte Paket und Modul sollte unter der MIT-Lizenz oder einer der BSD-ähnlichen Lizenzen, einschließlich der ISC-Lizenz, stehen.
Wie verwendet man eine Node.js-Lizenz?
Jede Komponente, die auf der Node.js-Bibliothek aufbaut, kann bei der Verteilung eine der verfügbaren Softwarelizenzen verwenden. Mitwirkende bevorzugen permissive Lizenzen, da sie späteren Nutzern die Freiheit geben, ihre eigenen Entscheidungen über ihre Software in der Zukunft zu treffen. Sobald das Team anfängt, sich auf andere Pakete zu verlassen, müssen sie sicherstellen, dass ihre Arbeit mit allen anderen Einschränkungen übereinstimmt, die in diesen Modulen enthalten sind.
In npm gibt es einen speziellen Befehl, um Lizenztext zu allen Projektdateien hinzuzufügen. Entwickler können den Lizenznamen und den Namen des Autors angeben, eine vollständige Liste der kompatiblen Lizenzen finden Sie hier.
Wie geht Node.js mit Sicherheitsrisiken in Paketen um?
Wenn ein Entwickler oder ein Sicherheitsteam eine neue Schwachstelle entdeckt, wird Node.js eine Version mit einem Sicherheitsupdate veröffentlichen. In einigen Fällen wird ein manueller Patch erforderlich sein. Entwickler müssen ihre Pakete regelmäßig auf Sicherheitslücken überprüfen, indem sie den Befehl audit verwenden, der einen empfohlenen Fix für die Sicherheitslücke bereitstellt.
Warten Sie Ihre Codebase-Abhängigkeiten mit Snyk
Jedes Projekt, das in der Produktion läuft, sollte einer regelmäßigen Schwachstellen- und Lizenzprüfung für alle Abhängigkeiten unterzogen werden.
Snyk hilft Teams, alle Abhängigkeiten zu scannen und sicherzustellen, dass sie die Lizenzkonformität im gesamten Projekt verwalten können. Für Node.js-Entwicklungsteams kann eine klare Übersicht über alle Pakete und die Sicherstellung der Einhaltung von Lizenzen in jeder Phase des Projekts dazu beitragen, dass sich größere Probleme in die Codebasis einschleichen.
Um zu sehen, wie Snyk Ihr Team bei der Einhaltung von Lizenzen unterstützen kann, vereinbaren Sie noch heute einen Demo-Termin.