© istockphoto.com/traffic_analyzer
So steht es aktuell um Node.js

State of Node


Die Node.js-Plattform gibt es bereits seit Januar 2009. Sieben Jahre sind in der Webentwicklung jedoch eine lange Zeit; es lohnt sich also, einen Blick in die Vergangenheit zu werfen und die teilweise recht turbulente Entwicklung der populären JavaScript-Plattform genauer unter die Lupe zu nehmen. Von den zahlreichen Veränderungen in der Vergangenheit profitieren wir natürlich heute. Sie erfahren in diesem Artikel deshalb auch, welche Möglichkeiten der Entwicklung und Architektur Sie mittlerweile durch Node.js haben.

Node.js war schon immer als Plattform für die Webent­wicklung gedacht. Dass sich daraus eine Umgebung für Kommandozeilenwerkzeuge entwickelte, war eher Zufall. Ryan Dahl, der Erfinder von Node.js, benötigte eine Lösung für die Anzeige des Downloadfortschritts in einer Webapplikation. Da es zu diesem Zeitpunkt noch keine zufriedenstellende Lösung gab, verband er die JavaScript Engine des Chrome-Browsers, besser bekannt unter dem Namen V8, mit einigen Zusatzbibliotheken wie dem Event Loop libev, der libeio, die asynchrone Ein- und Ausgabeoperationen ermöglicht, sowie einigen weiteren Bibliotheken. Ein dünner Layer in C++ ermöglicht es den selbst in JavaScript geschriebenen Node. js-Modulen, ihre Arbeit zu verrichten. Durch diese Architektur erhalten Sie als Entwickler Zugriff auf die Ressourcen Ihres Systems und können über JavaScript das Netzwerk oder das Dateisystem ansprechen. An diesen Grundsätzen hat sich bis heute wenig geändert.

Neben Node.js selbst war das Jahr 2009 außerdem das Entstehungsjahr einiger weiterer bedeutender Werkzeuge und Bibliotheken im Umfeld von Node.js. So begann Isaac Schlueter im September 2009 mit der Arbeit am Node Package Manager, kurz: npm, und TJ Holowaychuk machte den ersten Commit an Express.js, dem am häufigsten eingesetzten Web-Application-Framework für Node.js. Bis zu diesem Zeitpunkt war Node.js ein Open-Source-Projekt ohne jede Unterstützung von außen. Um die Entwicklung jedoch weiter fortführen zu können, musste sich Ryan Dahl auf die Suche nach Sponsoren machen und tat dies schließlich im November 2009 auf der jsconf.eu im schönen Berlin. Die Aufzeichnung der Session, in der Ryan Dahl die Plattform vorstellt, finden Sie auf YouTube. Die Präsentation war so überzeugend, dass sich mit Joyent ein Unterstützer für Node.js fand. Das Unternehmen ist spezialisiert auf Virtualisierung und Cloud Computing und bot Ryan Dahl eine Vollzeitbeschäftigung an, um sich der Weiterentwicklung von Node.js zu widmen.

Node.js wird gesellschaftsfähig

Die Node.js-Versionen bis v0.6 waren von häufigen Änderungen geprägt. Und zwar nicht kleinen, unbedeutenden Änderungen und Verbesserungen, sondern Brüchen im API, die einem Entwickler das Leben wirklich schwer machten. Auch die Performance der Plattform war nicht die beste, und so mehrten sich die kritischen Stimmen, die der Plattform ein kurzes Leben voraussagten. Die Entwickler um Ryan Dahl nahmen sich jedoch dieser Probleme an und lösten auch eine der größten Herausforderungen: Zu diesem Zeitpunkt war es nämlich nicht ohne Weiteres möglich, Node.js auf einem Windows-System zu installieren und zu betreiben, was die Nutzerbasis und somit die Verbreitung der Plattform erheblich einschränkte. Mit der im Jahr 2011 veröffentlichten Version 0.6 hielten einige bedeutende Änderungen Einzug in die Plattform. So wurde der npm ein fester Bestandteil von Node.js und die libuv, eine Abstraktionsbibliothek um den Event Loop und die Ein- und Ausgabebibliothek, wurde integriert. Mit diesem Schritt konnte Node. js nun auch problemlos unter Windows installiert werden. Die wachsende Community um Node.js hielt 2012 gespannt den Atem an, als Ryan Dahl seinen Abschied vom Projekt verkündete. Viele konnten sich nicht vorstellen, wie es ohne den Erfinder der Plattform weitergehen sollte. Die Projektleitung übernahm Isaac Schlueter, ebenfalls ein Mitarbeiter von Joyent. Er führte die Entwicklung von Node.js wieder in ruhigere Gewässer. Zu dieser Zeit galt auch der Grundsatz, dass die stabilen Versionen der Plattform eine gerade Zahl trugen und die Entwicklerversionen eine ungerade; 0.6 war also der stabile Zweig und 0.5 die Entwicklungsversion. In den nachfolgenden Versionen 0.8, 0.10 und 0.12 beschäftigten sich die Entwickler vor allem mit der Verbesserung der Performance und der Stabilität, um den Kritikern den Wind aus den Segeln zu nehmen. Währenddessen wurden auch vermehrt Forderungen nach einer Version 1.0 laut: Noch galt Node.js als Werkzeug für Entwickler, das sich nicht unbedingt für den Produktivbetrieb eignete – noch viel weniger, wenn es um geschäftskritische Anwendungen ging.

Der Bruch in der Community

Die Version 0.12 hielt sich sehr lange, und die Entwicklung der Plattform kam zunehmend ins Stocken. Dieser Negativtrend gipfelte im Dezember 2014 in einem Fork von Node.js unter dem Namen io.js. Ziel dieses Projekts war eine stetige und aktive Weiterentwicklung mit festem Releasezyklus und einer Versionierung jenseits der 1.0. Beobachter deuteten diesen Schritt als eine Schwächung der Entwicklercommunity, da die Anstrengungen in zwei Projekte statt wie bisher in ein Projekt laufen würden. Node.js und io.js entwickelten sich allerdings nie so weit auseinander, als dass eine Zusammenführung beider Projekte unmöglich wäre. Und so kam es im Februar 2015 dazu, dass die Maintainer beider Projekte einsahen, dass sich an der Entwicklung grundsätzlich etwas ändern musste, wollte das Projekt – unter welchem Namen auch immer – weiter erfolgreich sein. Zur Zusammenführung wurde die Node.js Foundation gegründet. Damit fand eine Abkehr von der bisherigen Strategie statt, in der es einen benannten Maintainer für das Projekt gab, hin zu einem Komitee, das das Projekt in Zukunft steuern sollte. In diesen Turbulenzen ging die Tatsache, dass Node. js plötzlich den Sprung über die Version 1 geschafft hatte, völlig unter. Mit Version 4 wurden beide Projekte im Juni 2015 wieder zusammengeführt. Seit dieser Zeit ist wieder Ruhe in die Entwicklung von Node.js eingekehrt, was aber nicht bedeutet, dass sich nichts mehr bewegt – im Gegenteil. Die Weiterentwicklung der Plattform erfolgt aktuell stetiger als je zuvor, was nicht zuletzt der Initiative von io.js zu verdanken ist.

Das Technical Steering Committee

Ein wichtiger Meilenstein in der Entwicklung von Node. js war die Abkehr von einer Einzelperson als Gesicht des Projekts hin zu einer Gruppe von Personen. Dieses Technical Steering Committee, TSC, trifft alle für die Weiterentwicklung bedeutenden Entscheidu...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang